feat(emoji-picker): emoji picker component

Emoji Picker port from vue-3

adding myself so i can port message input once this is done.

Two new screenshots added by percy

Left some comments on percy snapshots

You can add vue2-only label to bypass the Vue 3 Branch Exists check

Sweeeeeeet, will review shortly. This will allow us to completely get rid of the old emoji system in ubervoice which is taking up incredible amounts of resources (the user has to download a 25mb joypixels file on first opening of the app)

take you time to review it Im still finding some minor things but overall looks ok

@juliodialpad
Regarding your comment on percy
Ye... it happens sometimes.. it is not usual, but it happens on dt-input`
I cannot paste a image here, will paste it in PR
And does not affect functionality`

Percy comments done, please mention here to follow it if it is necessary.

@juliodialpad
Regarding your comment on percy
Ye... it happens sometimes.. it is not usual, but it happens on `dt-input

I cannot paste a image here, will paste it in PR

And does not affect functionality

Weird, I'll create a ticket to fix this on dtInput then.

Found a bunch of nit picks and stuff that I'd like to improve, please reach out in case that anything is not clear enough.
This are some errors that I'm seeing but might not be exclusive of the port to vue 2, if so, feel free to create a ticket and handle those errors on another PR.

The emojis are getting hidden behind the category header

Will be done in: DLT-1388

The actions are not being logged on storybook
Added Events:

onSkinTone
onSelectedEmoji
onClose

The tabbing is not consistent:

When you get to the change skin tone icon, if you shift+tab to get to the previous tabindex, it goes to the top.
After moving from the change skin tone icon to the top, if you shift+tab you should go to the last tabindex (change skin tone icon) and it cycles through the categories again. So in order to get to the change skin tone icon, you need to go through all the categories again.

Will be done in: DLT-1388

Some categories are not being highlighted on the header.

Hmm, cannot reproduce, it has an observer, so it can be a little bit flaky if you trigger some strange stuff or force break it.
But overall it is working fine.. do you have some steps to reproduce it?, or its just not work? if that was the case refresh the browser and would be ok.

Shouldn't this be emitting the

Not finished sentence?

I noticed that when I searched for something, the arrows to navigate the emojis don't work. Tab and enter do work, just not the arrows:

I checked the vue3 version and this works. I am thinking maybe the text input is capturing those events?

I noticed that when I searched for something, the arrows to navigate the emojis don't work. Tab and enter do work, just not the arrows:
I checked the vue3 version and this works. I am thinking maybe the text input is capturing those events?

Hmm... seems like I forgot to add the keyboard navigation on filtered emojis, lemme check

ok, should be fixed now, thanks @ninamarina


[Question] How to include react-native-sqlite-storage to my project?

I have installed a clean app by create-react-native-app and I want to attach SQLite database for Android. I want to use this plugin react-native-sqlite-storage
By instruction, I must add some code into file './android/settings.gradle'. But this file doesn't exist.
What can I do it?

same problem for me (I am new in react-native)
I think you can´t use create-react-native-app out of the box with this plugin.
So use "react-native init" to create your programm
or run "npm run eject" in your "Create-react-native-app"
But you will need Xcode and/or Android Studio afterwards
For more information see the link below or at the getting startet page of react-native
https://facebook.github.io/react-native/blog/2017/03/13/introducing-create-react-native-app.html

@6pm you can use the Expo SQLite API without ejecting, and if you want react-native-sqlite-storage you'll have to eject or use react-native init, as @shu-90 said. Thanks!


ElastiCache service controller

New ACK Service Controller
Support for Amazon ElastiCache
List of API resources
List the API resources in order of importance to you:

CacheSubnetGroup
ReplicationGroup
Snapshot
CacheParameterGroup

Hey! Thank you very much for releasing the Elasticache controller.
I am already using it. But it still lacks option to use subnetRefs in CacheSubnetGroup object, so I am forced to populate it manually with subnet names. It is not very convenient and also is not aligned with the behaviour of other controllers... So I am kindly asking to add subnetRefs to CacheSubnetGroup

Apologies I've only briefly scanned the code and don't see it being clearly possible today.  Wondering if serverless is on the radar?


Bad json output

@FastGeert I tried the same payload and it works fine with me without internal server error part. Any extra info to help me reproduce this?

while the import is going, delete the service in ays

I can't reproduce it, I don't get a bad json, I get a normal 500 with one json.


Make the docs more readable/usable

High Level Overview of Change

Context of Change

Type of Change

[ ] Bug fix (non-breaking change which fixes an issue)
[ ] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
[ ] Refactor (non-breaking change that only restructures code)
[ ] Tests (You added tests for code that already exists, or your new feature included in this PR)
[x] Documentation Updates
[ ] Release

Before / After

Test Plan

Ah, I missed the fact that you need to do poetry install to get the sphinx-rtd-theme dependency. Building the API docs failed until I did that.

The RTD theme is certainly an improvement, but on the other hand I think it makes it more evident how the actual structure of the repo is still more a jumble of parts than a coherent whole yet.
The build step reported that some pages aren't used. We should probably fix that:
checking consistency... xrpl-py/docs/source/modules.rst: WARNING: document isn't included in any toctree
xrpl-py/docs/source/xrpl.binarycodec.binary_wrappers.rst: WARNING: document isn't included in any toctree
xrpl-py/docs/source/xrpl.binarycodec.definitions.rst: WARNING: document isn't included in any toctree
xrpl-py/docs/source/xrpl.binarycodec.types.rst: WARNING: document isn't included in any toctree


From private repo

@Taojunshen : Thanks for your contribution to the Azure documentation! The author, @NathBarn, has been notified to review your proposed change.


[RTC-93] Add some RTP metrics

This PR adds a few of the metrics described in RTC-93:

Inbound frames (estimated based on the marker)
Outbound frames (estimated based on the marker)
Inbound RTP NACK counter
Inbound RTCP Packets
Inbound RTCP Bytes Received
Outbound RTCP Packets
Outbound RTCP Bytes Sent

After some discussions, I ended up completely reworking all RTCP metrics. They are now grouped per track and they include: NACK sent/received, PLI received (I don't think we're sending any), FIR sent/received, Receiver Reports sent/received and Sender Reports sent/received.
I also had to make a choice of where to count the specific feedback messages and I decided to count them wherever they are being handled. Eg, FIR is counted in OutboundTrackingSerializer which also sends a Keyframe Request upstream as a result of receiving FIR.  The other option was to count them in one central location, which is where the overall counter is incremented, but it occurred to me that if they are counted wherever they are handled, the metric would indicate that we're loosing the packet somewhere, eg, if we have 100 NACK sent by the browser and 0 received.
Example report generated from this version:
Reporter.scrape(VideoRoomReporter) #=> %{
  :"inbound-rtp.frames" => 2856,
  :"inbound-rtp.keyframes" => 14,
  {:room_id, "test"} => %{
    {:peer_id, "44896930-ea5c-43d2-87fd-7401aabd810d"} => %{
      :"ice.binding_requests_received" => 19,
      :"ice.binding_responses_sent" => 19,
      :"ice.bytes_received" => 8120624,
      :"ice.bytes_sent" => 5478743,
      :"ice.packets_received" => 9919,
      :"ice.packets_sent" => 6243,
      :"peer.bandwidth" => 2084164.3378765725,
      :"peer.metadata" => nil,
      {:track_id,
       "44896930-ea5c-43d2-87fd-7401aabd810d:54d55d81-f6c5-4a12-8ea4-b44e649b7396:"} => %{
        "inbound-rtp.bytes_received": 160546,
        "inbound-rtp.encoding": :OPUS,
        "inbound-rtp.markers_received": 1,
        "inbound-rtp.packets": 1477,
        "inbound-rtp.ssrc":<PHONE_NUMBER>,
        "rtcp.receiver_reports_sent": 5,
        "rtcp.sender_reports_received": 7,
        "rtcp.total_packets_received": 7,
        "rtcp.total_packets_sent": 122,
        "track.metadata": %{"active" => true, "type" => "audio"}
      },
      {:track_id,
       "44896930-ea5c-43d2-87fd-7401aabd810d:acb17d95-5f2a-46ea-87c8-6b0d1aec8111:h"} => %{
        "inbound-rtp.bytes_received": 5710780,
        "inbound-rtp.encoding": :H264,
        "inbound-rtp.markers_received": 700,
        "inbound-rtp.packets": 5166,
        "inbound-rtp.ssrc":<PHONE_NUMBER>,
        "rtcp.fir_sent": 1,
        "rtcp.receiver_reports_sent": 5,
        "rtcp.sender_reports_received": 120,
        "rtcp.total_packets_received": 120,
        "rtcp.total_packets_sent": 6,
        "track.metadata": %{"active" => true, "type" => "camera"}
      },
      {:track_id,
       "44896930-ea5c-43d2-87fd-7401aabd810d:acb17d95-5f2a-46ea-87c8-6b0d1aec8111:l"} => %{
        "inbound-rtp.bytes_received": 362315,
        "inbound-rtp.encoding": :H264,
        "inbound-rtp.markers_received": 691,
        "inbound-rtp.packets": 744,
        "inbound-rtp.ssrc":<PHONE_NUMBER>,
        "rtcp.receiver_reports_sent": 5,
        "rtcp.sender_reports_received": 27,
        "rtcp.total_packets_received": 27,
        "rtcp.total_packets_sent": 5,
        "track.metadata": %{"active" => true, "type" => "camera"}
      },
      {:track_id,
       "44896930-ea5c-43d2-87fd-7401aabd810d:acb17d95-5f2a-46ea-87c8-6b0d1aec8111:m"} => %{
        "inbound-rtp.bytes_received": 1852102,
        "inbound-rtp.encoding": :H264,
        "inbound-rtp.markers_received": 698,
        "inbound-rtp.packets": 1866,
        "inbound-rtp.ssrc":<PHONE_NUMBER>,
        "rtcp.receiver_reports_sent": 5,
        "rtcp.sender_reports_received": 38,
        "rtcp.total_packets_received": 38,
        "rtcp.total_packets_sent": 5,
        "track.metadata": %{"active" => true, "type" => "camera"}
      },
      {:track_id,
       "92bf850f-ff9b-4b43-825f-d160c91656ca:72794a35-c51f-46c2-9f3c-66c668bceb22"} => %{
        "inbound-rtp.ssrc":<PHONE_NUMBER>,
        "outbound-rtp.markers_sent": 650,
        "outbound-rtp.variant": :high,
        "outbound-rtp.variant-reason": :other,
        "rtcp.sender_reports_sent": 5,
        "rtcp.total_packets_received": 26,
        "rtcp.total_packets_sent": 5
      },
      {:track_id,
       "92bf850f-ff9b-4b43-825f-d160c91656ca:ba9d1b41-2f4e-4d6e-bb1c-7ce28126c1ae"} => %{
        "inbound-rtp.ssrc": 251360988,
        "outbound-rtp.variant": :high,
        "outbound-rtp.variant-reason": :other,
        "rtcp.sender_reports_sent": 5,
        "rtcp.total_packets_received": 6,
        "rtcp.total_packets_sent": 5
      }
    },
    {:peer_id, "92bf850f-ff9b-4b43-825f-d160c91656ca"} => %{
      :"ice.binding_requests_received" => 17,
      :"ice.binding_responses_sent" => 17,
      :"ice.bytes_received" => 7630666,
      :"ice.bytes_sent" => 5567842,
      :"ice.packets_received" => 9288,
      :"ice.packets_sent" => 6406,
      :"peer.bandwidth" => 2084966.4894894434,
      :"peer.metadata" => nil,
      {:track_id,
       "44896930-ea5c-43d2-87fd-7401aabd810d:54d55d81-f6c5-4a12-8ea4-b44e649b7396"} => %{
        "inbound-rtp.ssrc":<PHONE_NUMBER>,
        "outbound-rtp.variant": :high,
        "outbound-rtp.variant-reason": :other,
        "rtcp.sender_reports_sent": 5,
        "rtcp.total_packets_received": 5,
        "rtcp.total_packets_sent": 5
      },
      {:track_id,
       "44896930-ea5c-43d2-87fd-7401aabd810d:acb17d95-5f2a-46ea-87c8-6b0d1aec8111"} => %{
        "inbound-rtp.ssrc":<PHONE_NUMBER>,
        "outbound-rtp.markers_sent": 660,
        "outbound-rtp.variant": :high,
        "outbound-rtp.variant-reason": :other,
        "rtcp.sender_reports_sent": 5,
        "rtcp.total_packets_received": 25,
        "rtcp.total_packets_sent": 5
      },
      {:track_id,
       "92bf850f-ff9b-4b43-825f-d160c91656ca:72794a35-c51f-46c2-9f3c-66c668bceb22:h"} => %{
        "inbound-rtp.bytes_received": 5360183,
        "inbound-rtp.encoding": :H264,
        "inbound-rtp.markers_received": 653,
        "inbound-rtp.packets": 4759,
        "inbound-rtp.ssrc": 746097665,
        "rtcp.fir_sent": 1,
        "rtcp.receiver_reports_sent": 5,
        "rtcp.sender_reports_received": 116,
        "rtcp.total_packets_received": 116,
        "rtcp.total_packets_sent": 6,
        "track.metadata": %{"active" => true, "type" => "camera"}
      },
      {:track_id,
       "92bf850f-ff9b-4b43-825f-d160c91656ca:72794a35-c51f-46c2-9f3c-66c668bceb22:l"} => %{
        "inbound-rtp.bytes_received": 352955,
        "inbound-rtp.encoding": :H264,
        "inbound-rtp.markers_received": 651,
        "inbound-rtp.packets": 712,
        "inbound-rtp.ssrc":<PHONE_NUMBER>,
        "rtcp.receiver_reports_sent": 5,
        "rtcp.sender_reports_received": 26,
        "rtcp.total_packets_received": 26,
        "rtcp.total_packets_sent": 5,
        "track.metadata": %{"active" => true, "type" => "camera"}
      },
      {:track_id,
       "92bf850f-ff9b-4b43-825f-d160c91656ca:72794a35-c51f-46c2-9f3c-66c668bceb22:m"} => %{
        "inbound-rtp.bytes_received": 1749322,
        "inbound-rtp.encoding": :H264,
        "inbound-rtp.markers_received": 651,
        "inbound-rtp.packets": 1778,
        "inbound-rtp.ssrc":<PHONE_NUMBER>,
        "rtcp.receiver_reports_sent": 5,
        "rtcp.sender_reports_received": 38,
        "rtcp.total_packets_received": 38,
        "rtcp.total_packets_sent": 5,
        "track.metadata": %{"active" => true, "type" => "camera"}
      },
      {:track_id,
       "92bf850f-ff9b-4b43-825f-d160c91656ca:ba9d1b41-2f4e-4d6e-bb1c-7ce28126c1ae:"} => %{
        "inbound-rtp.bytes_received": 133465,
        "inbound-rtp.encoding": :OPUS,
        "inbound-rtp.markers_received": 1,
        "inbound-rtp.packets": 1379,
        "inbound-rtp.ssrc": 54295950,
        "rtcp.receiver_reports_sent": 5,
        "rtcp.sender_reports_received": 6,
        "rtcp.total_packets_received": 6,
        "rtcp.total_packets_sent": 115,
        "track.metadata": %{"active" => true, "type" => "audio"}
      }
    }
  }
}

Also, making note of some bugs:

outbound tracks have inbound-rtp.ssrc metric and it seems a little weird
there are 2 metrics that ended up on the top-level and I think they originate from RTC Engine

incoming RTCP bytes

This metric may fall victim to the architecture of the RTP Plugin. This value is known in RTCP Parser, but it has no way of knowing to which track this particular RTCP belongs. SSRC Router can know that information, but it receives the RTCP in a parsed form, so it doesn't know the size :shrug: For symmetry, I didn't include outgoing RTCP bytes

Both processes register as owners of the same event and I am not sure if that's correct.

It's fine, we do that in a lot of places. We can only have one owner process of the {metric, label} pair, but I don't think this causes any problems

Ok, then let's do those two things (metric default value and some renamings) in different PRs. Could you please continue this topic?


Replace @ imports with ~ imports

Description

In the interest of consistency this PR replaces the few instances of @ imports with ~. Vue CLI apps generally tend to use @ as the alias for the src dir, but Nuxt seems to support both equally so there's really no reason to favour one over the other. Since ~ is more commonly used in the code, using that as the standard causes minimum disruption.
Testing Instructions

Check out the PR and run the dev server.
It should start.

Checklist

[x] My pull request has a descriptive title (not a vague title like Update index.md).
[x] My pull request targets the default branch of the repository (main) or a parent feature branch.
[x] My commit messages follow best practices.
[x] My code follows the established code style of the repository.
[ ] I added or updated tests for the changes I made (if applicable).
[ ] I added or updated documentation (if applicable).
[x] I tried running the project locally and verified that there are no visible errors.

Developer Certificate of Origin

Developer Certificate of Origin
Developer Certificate of Origin
Version 1.1

Copyright (C) 2004, 2006 The Linux Foundation and its contributors.
1 Letterman Drive
Suite D4700
San Francisco, CA, 94129

Everyone is permitted to copy and distribute verbatim copies of this
license document, but changing it is not allowed.

Developer's Certificate of Origin 1.1

By making a contribution to this project, I certify that:

(a) The contribution was created in whole or in part by me and I
    have the right to submit it under the open source license
    indicated in the file; or

(b) The contribution is based upon previous work that, to the best
    of my knowledge, is covered under an appropriate open source
    license and I have the right under that license to submit that
    work with modifications, whether created in whole or in part
    by me, under the same open source license (unless I am
    permitted to submit under a different license), as indicated
    in the file; or

(c) The contribution was provided directly to me by some other
    person who certified (a), (b) or (c) and I have not modified
    it.

(d) I understand and agree that this project and the contribution
    are public and that a record of the contribution (including all
    personal information I submit with it, including my sign-off) is
    maintained indefinitely and may be redistributed consistent with
    this project or the open source license(s) involved.

Vue CLI apps generally tend to use @ as the alias for the src dir

Would it actually be better for us to go with the upstream preference? It'd generally be nice if our app's configuration and behavior and expectations aligned with the wider Vue, and especially Vue 3, ecosystem.

As long as we're internally consistent, I see no significant reason to pick one over the other. So I preferred the option with the least disruption.

I'm surprised there were so few uses of @. Nice cleanup


Bug fix and Floating Point 8 Value and Logic

[x] Bug fix in FloatingPointValue.fromDouble
[x] Introduce FloatingPoint8Value value class
[x] Introduce FloatingPoint8 logic class

@desmonddak , could you please review this PR? I want to start fixed-point in a new branch/PR.


dummy change

So apparently having multiple pull request templates isn't quite working, so please go to the .github/PULL_REQUEST_TEMPLATE folder on master and replace this text with the appropriate template.

This pull request fixes 1 alert when merging 1915ddb3cd0bb08e584ba18d2645bf5c755f2f9c into 8f2cb5b9d613764ac69de4cb4ec6f53218626b45 - view on LGTM.com
fixed alerts:

1 for Comparison between inconvertible types

Comment posted by LGTM.com


Raspberry Pi architecture is not detected correctly

Hi there,
I wanted to install a Buildkite agent on my Raspberry Pi. I thought I could just use the install script that you guys provide for Linux, but when I started the agent after that, it exited directly with the message Illegal instruction.
Since uname -m told me my architecture is armv6l, I tried manually downloading buildkite-agent-linux-armhf-2.6.3.tar.gz from the releases page on GitHub. Same thing happened: Illegal instruction.
Then I tried installing the buildkite-agent-linux-arm-2.6.3.tar.gz which, to my surprise, finally worked. My Buildkite agent is now happily "Waiting for work...".
TL;DR: Architecture armv6l should install the arm version instead of the armhf version.

@mpsijm 👋 I just had a sneaky look at fixing this. We have this list here:
https://github.com/buildkite/agent/blob/master/install.sh#L37
Would it be fair to change:
*armv6*)  ARCH="armhf" ;;

to...
*armv6*)  ARCH="arm" ;;

For my case, that will most likely fix the installation, but I'm not sure if you can guarantee that it will work for all ARM architectures.
After a small Google search, I found using dpkg --print-architecture is another alternative in order to which architecture someone is running. Maybe you can use that?
The output of this command is armhf on my Raspberry Pi and amd64 on my Ubuntu laptop, so my guess is that you can directly set ARCH=$(dpkg --print-architecture) without a switch case (at least in the case of Linux).

Somewhat duplicated, the apt source on debian appears to install the wrong version as well. I got it working by adding an explicit architecture (as below), not sure what the correct fix is.
Broken:
$ cat /etc/apt/sources.list.d/buildkite-agent.list
deb https://apt.buildkite.com/buildkite-agent stable main

$ apt search buildkite-agent
buildkite-agent/unknown,now 3.4.0-2484 armhf [installed]
...

$ buildkite-agent
Illegal instruction

Fix:
# Add arch to source
$ cat /etc/apt/sources.list.d/buildkite-agent.list
deb [arch=arm] https://apt.buildkite.com/buildkite-agent stable main

# Add arm to multiarch
$ sudo dpkg --add-architecture arm

# Update repos
$ sudo apt update

# Install with explicit arch
$ sudo apt install buildkite-agent:arm

$ buildkite-agent
Usage:

  buildkite-agent <command> [arguments...]
...

just got around to installing another agent, and confirmed this is now working on raspbian with agent version v3.10.1 ^_^


Added possibility to propagate subscription error properly

After a subscription has started and sent some results to the user, from the resolver perspective, it's not right now possible to propagate error correctly to the user using the top-level object.
Since a chan <type> type is required for the top-level subscription resolver, it cannot convey any error information. By adding a SubscriptionError interface that top-level resolver's object can implement, the library upon reception of the result from the channel can check if it implements the SubscriptionError interface, if it's the case and the interface's method returned a non-nil error, the subscription is terminated, the channel is closed and the error is propagated to the user.
Extracted from #317
Design
Right now, our use case as always been "terminal" error, i.e. that once we set SubscriptionError to be non-nil, we always terminate the stream.
While extracting the code to submit the PR, I realized that in some situations, it could be desired that this error is treated as a transient error in which case, it should behaves like if a sub-field resolver would have a second return value of type error. Moreover, someone could also want to print the "top-level" error as well as the rest of the resolvable fields of this top-level object.
So I think it would be beneficial  to handle terminal & non-terminal errors here. One suggestion I could make would be to change the interface SubscriptionError to become:
type SubscriptionError interface {
  SubscriptionError() (err error, terminal bool) // Or inverted with `transient bool` instead
}

And in the subscribe implementation where we check for the SubscriptionError interface, if the terminal return value is true, the code uses the path implemented in this PR.
Otherwise if it's false, then we keep the error, resolve the fields and add the errors to the other ones if any.
Thoughts?

I'll wait for #417 to be merge before resolving conflicts

I am not convinced that this should be part of the library. You can have your errors treated as data and have them in your schema resolver as fields. For example you might return an option error field. Which in turn might have a subfield isTerminal or something like this. I'm not 100% convinced that I want this to be part of the library. What exactly in the current implementation is limiting you? Why can't you terminate the subscription with the current implementation?

Then my goal will be to convince you :)
Don't stick about terminal error and extra fields, I should not have talked about this, it
The main goal here is to report "streaming" errors for each subscription's message through the standard GraphQL format so via the errors field.
You suggestion has major drawbacks in my opinion:

It brings another error model that GraphQL might not be directly aware of expecting error(s) to be in the errors field. They need to be discovered and queried otherwise they are not "received"
It requires to clutter the schema definition with various "error" field at a multitude of locations
It cannot work properly with union value returned at top-level, requiring useless schema "workaround" on certain circumstances (see my StarWars subscription that I present below)

With the proposed PR, errors can be appended correctly to the errors field for subscription message with little effort and be in the format expected by developers used to GraphQL.
StarWars Subscription Example
I re-used the StarWars example but added a subscription on the search so each search result are streamed.
schema {
  ...
  subscription: Subscription
}

type Subscription {
  search(text: String!): SearchResult!
}

With this PR
With this PR, no schema change is required, only the searchResultResolver needs to be modified to implement the SubscribeError method.
type searchResultResolver struct {
	result interface{}
	err error
}

...

func (t *searchResultResolver) SubscriptionError() error {
	return t.err
}

And here the message received when there is an error while subscribing:
{"data":{"search":{"kind":"Human","id":"1000","name":"Luke Skywalker"}}}
{"errors":[{"message":"backend had an error"}]}

Within Schema
There is a big problem here with SearchResult which is an union. It's not possible to add an error field here because what kind should I returned when the search itself encountered an error? I started adding errors to each union's elements, but it does not make sense since it the "search result" itself that has the error.
So I needed in fact to wrap all this in another message that has the union and an error field. Here what messages looked like in this experiment:
{"data":{"search":{"errors":null,"node":{"kind":"Human","id":"1000","name":"Luke Skywalker"}}}}
{"data":{"search":{"errors":[{"message":"backend had an error"}],"node":{"kind":""}}}}

Personally, I find this output really bad, it has the feeling that it worked mostly but it's no the case. I could have tweaked the node field to be optional, but that wouldn't improve it much.
Wrap-up
This is a rather large reply, I wanted to play with your proposed approach to better understand other possibilities. I hope it convinced you that this is a good change for the library. I'm happy to revisit the PR and find alternative, my goal is really to have the output of subscription message like I pasted above
{"data":{"search":{"kind":"Human","id":"1000","name":"Luke Skywalker"}}}
{"errors":[{"message":"backend had an error"}]}

How it looks like in the library, I'm happy to explore other way to achieve the same thing.
Diff (between code with this PR and code within schema)
Here the diff I need to implement the error in schema.
diff --git a/resolver.go b/resolver.go
index 8303217..e2c11f0 100644
--- a/resolver.go
+++ b/resolver.go
@@ -38,17 +38,17 @@ func (r *Resolver) QuerySearch(args struct{ Text string }) []*searchResultResolv
	var l []*searchResultResolver
	for _, h := range humans {
		if strings.Contains(h.Name, args.Text) {
-			l = append(l, &searchResultResolver{&humanResolver{h}, nil})
+			l = append(l, &searchResultResolver{&humanResolver{h}})
		}
	}
	for _, d := range droids {
		if strings.Contains(d.Name, args.Text) {
-			l = append(l, &searchResultResolver{&droidResolver{d}, nil})
+			l = append(l, &searchResultResolver{&droidResolver{d}})
		}
	}
	for _, s := range starships {
		if strings.Contains(s.Name, args.Text) {
-			l = append(l, &searchResultResolver{&starshipResolver{s}, nil})
+			l = append(l, &searchResultResolver{&starshipResolver{s}})
		}
	}
	return l
@@ -85,8 +85,8 @@ func (r *Resolver) QueryStarship(args struct{ ID graphql.ID }) *starshipResolver
	return nil
}

-func (r *Resolver) SubscriptionSearch(ctx context.Context, args struct{ Text string }) (<-chan *searchResultResolver, error) {
-	c := make(chan *searchResultResolver)
+func (r *Resolver) SubscriptionSearch(ctx context.Context, args struct{ Text string }) (<-chan *searchResultMessageResolver, error) {
+	c := make(chan *searchResultMessageResolver)

	go func() {
		defer func() {
@@ -96,7 +96,7 @@ func (r *Resolver) SubscriptionSearch(ctx context.Context, args struct{ Text str
		shouldQuitDueToError := func() bool {
			if ctx.Err() != nil {
				fmt.Println("Context timeout, closing!")
-				c <- &searchResultResolver{nil, ctx.Err()}
+				c <- &searchResultMessageResolver{&searchResultResolver{nil}, []error{ctx.Err()}}
				return true
			}

@@ -109,13 +109,13 @@ func (r *Resolver) SubscriptionSearch(ctx context.Context, args struct{ Text str
			}

			if strings.Contains(h.Name, args.Text) {
-				c <- &searchResultResolver{&humanResolver{h}, nil}
+				c <- &searchResultMessageResolver{&searchResultResolver{&humanResolver{h}}, nil}
			}
		}

		time.Sleep(750 * time.Millisecond)
		if rand.Float64() > 0.80 {
-			c <- &searchResultResolver{nil, errors.New("backend had an error")}
+			c <- &searchResultMessageResolver{&searchResultResolver{nil}, []error{errors.New("backend had an error")}}
			return
		}

@@ -125,13 +125,13 @@ func (r *Resolver) SubscriptionSearch(ctx context.Context, args struct{ Text str
			}

			if strings.Contains(d.Name, args.Text) {
-				c <- &searchResultResolver{&droidResolver{d}, nil}
+				c <- &searchResultMessageResolver{&searchResultResolver{&droidResolver{d}}, nil}
			}
		}

		time.Sleep(750 * time.Millisecond)
		if rand.Float64() > 0.80 {
-			c <- &searchResultResolver{nil, errors.New("backend had an error")}
+			c <- &searchResultMessageResolver{&searchResultResolver{nil}, []error{errors.New("backend had an error")}}
			return
		}

@@ -141,7 +141,7 @@ func (r *Resolver) SubscriptionSearch(ctx context.Context, args struct{ Text str
			}

			if strings.Contains(s.Name, args.Text) {
-				c <- &searchResultResolver{&starshipResolver{s}, nil}
+				c <- &searchResultMessageResolver{&searchResultResolver{&starshipResolver{s}}, nil}
			}
		}
	}()
@@ -425,9 +425,37 @@ func (r *starshipResolver) Length(args struct{ Unit string }) float64 {
	return convertLength(r.s.Length, args.Unit)
}

+type errorDef struct {
+	message string
+}
+
+func (e *errorDef) Message() string {
+	return e.message
+}
+
+type searchResultMessageResolver struct {
+	node   *searchResultResolver
+	errors []error
+}
+
+func (r *searchResultMessageResolver) Node() *searchResultResolver {
+	return r.node
+}
+
+func (r *searchResultMessageResolver) Errors() *[]*errorDef {
+	if len(r.errors) == 0 {
+		return nil
+	}
+
+	out := make([]*errorDef, len(r.errors))
+	for i, err := range r.errors {
+		out[i] = &errorDef{err.Error()}
+	}
+	return &out
+}
+
type searchResultResolver struct {
	result interface{}
-	err    error
}

func (r *searchResultResolver) ToHuman() (*humanResolver, bool) {
@@ -445,10 +473,6 @@ func (r *searchResultResolver) ToStarship() (*starshipResolver, bool) {
	return res, ok
}

-func (t *searchResultResolver) SubscriptionError() error {
-	return t.err
-}
-
func convertLength(meters float64, unit string) float64 {
	switch unit {
	case "METER":
diff --git a/schema.graphql b/schema.graphql
index b692677..401b5f7 100644
--- a/schema.graphql
+++ b/schema.graphql
@@ -16,7 +16,7 @@ type Query {
}

type Subscription {
-  search(text: String!): SearchResult!
+  search(text: String!): SearchResultMessage!
}

# The mutation type, represents all updates we can make to our data
@@ -56,6 +56,10 @@ enum LengthUnit {
  FOOT
}

+type Error {
+  message: String!
+}
+
# A humanoid creature from the Star Wars universe
type Human implements Character {
  # The ID of the human
@@ -144,4 +148,9 @@ type Starship {
  length(unit: LengthUnit = METER): Float!
}

+type SearchResultMessage {
+  node: SearchResult!
+  errors: [Error]
+}
+
union SearchResult = Human | Droid | Starship
diff --git a/subscribe_ok.graphql b/subscribe_ok.graphql
index f6e3b5e..07bc389 100644
--- a/subscribe_ok.graphql
+++ b/subscribe_ok.graphql
@@ -1,20 +1,22 @@
subscription {
  search(text: "Luke") {
-    kind: __typename
-
-    ... on Human {
-      id
-      name
+    errors {
+      message
    }
-
-    ... on Droid {
-      id
-      name
-    }
-
-    ... on Starship {
-      id
-      name
+    node {
+      kind: __typename
+      ... on Human {
+        id
+        name
+      }
+      ... on Droid {
+        id
+        name
+      }
+      ... on Starship {
+        id
+        name
+      }
    }
  }
}

Then my goal will be to convince you :)
Don't stick about terminal error and extra fields, I should not have talked about this, it
The main goal here is to report "streaming" errors for each subscription's message through the standard GraphQL format so via the errors field.
You suggestion has major drawbacks in my opinion:

It brings another error model that GraphQL might not be directly aware of expecting error(s) to be in the errors field. They need to be discovered and queried otherwise they are not "received"
It requires to clutter the schema definition with various "error" field at a multitude of locations
It cannot work properly with union value returned at top-level, requiring useless schema "workaround" on certain circumstances (see my StarWars subscription that I present below)

With the proposed PR, errors can be appended correctly to the errors field for subscription message with little effort and be in the format expected by developers used to GraphQL.
StarWars Subscription Example
I re-used the StarWars example but added a subscription on the search so each search result are streamed.
schema {
  ...
  subscription: Subscription
}

type Subscription {
  search(text: String!): SearchResult!
}

With this PR
With this PR, no schema change is required, only the searchResultResolver needs to be modified to implement the SubscribeError method.
type searchResultResolver struct {
	result interface{}
	err error
}

...

func (t *searchResultResolver) SubscriptionError() error {
	return t.err
}

And here the message received when there is an error while subscribing:
{"data":{"search":{"kind":"Human","id":"1000","name":"Luke Skywalker"}}}
{"errors":[{"message":"backend had an error"}]}

Within Schema
There is a big problem here with SearchResult which is an union. It's not possible to add an error field here because what kind should I returned when the search itself encountered an error? I started adding errors to each union's elements, but it does not make sense since it the "search result" itself that has the error.
So I needed in fact to wrap all this in another message that has the union and an error field. Here what messages looked like in this experiment:
{"data":{"search":{"errors":null,"node":{"kind":"Human","id":"1000","name":"Luke Skywalker"}}}}
{"data":{"search":{"errors":[{"message":"backend had an error"}],"node":{"kind":""}}}}

Personally, I find this output really bad, it has the feeling that it worked mostly but it's no the case. I could have tweaked the node field to be optional, but that wouldn't improve it much.
Wrap-up
This is a rather large reply, I wanted to play with your proposed approach to better understand other possibilities. I hope it convinced you that this is a good change for the library. I'm happy to revisit the PR and find alternative, my goal is really to have the output of subscription message like I pasted above
{"data":{"search":{"kind":"Human","id":"1000","name":"Luke Skywalker"}}}
{"errors":[{"message":"backend had an error"}]}

How it looks like in the library, I'm happy to explore other way to achieve the same thing.
Diff (between code with this PR and code within schema)
Here the diff I need to implement the error in schema.
diff --git a/resolver.go b/resolver.go
index 8303217..e2c11f0 100644
--- a/resolver.go
+++ b/resolver.go
@@ -38,17 +38,17 @@ func (r *Resolver) QuerySearch(args struct{ Text string }) []*searchResultResolv
	var l []*searchResultResolver
	for _, h := range humans {
		if strings.Contains(h.Name, args.Text) {
-			l = append(l, &searchResultResolver{&humanResolver{h}, nil})
+			l = append(l, &searchResultResolver{&humanResolver{h}})
		}
	}
	for _, d := range droids {
		if strings.Contains(d.Name, args.Text) {
-			l = append(l, &searchResultResolver{&droidResolver{d}, nil})
+			l = append(l, &searchResultResolver{&droidResolver{d}})
		}
	}
	for _, s := range starships {
		if strings.Contains(s.Name, args.Text) {
-			l = append(l, &searchResultResolver{&starshipResolver{s}, nil})
+			l = append(l, &searchResultResolver{&starshipResolver{s}})
		}
	}
	return l
@@ -85,8 +85,8 @@ func (r *Resolver) QueryStarship(args struct{ ID graphql.ID }) *starshipResolver
	return nil
}

-func (r *Resolver) SubscriptionSearch(ctx context.Context, args struct{ Text string }) (<-chan *searchResultResolver, error) {
-	c := make(chan *searchResultResolver)
+func (r *Resolver) SubscriptionSearch(ctx context.Context, args struct{ Text string }) (<-chan *searchResultMessageResolver, error) {
+	c := make(chan *searchResultMessageResolver)

	go func() {
		defer func() {
@@ -96,7 +96,7 @@ func (r *Resolver) SubscriptionSearch(ctx context.Context, args struct{ Text str
		shouldQuitDueToError := func() bool {
			if ctx.Err() != nil {
				fmt.Println("Context timeout, closing!")
-				c <- &searchResultResolver{nil, ctx.Err()}
+				c <- &searchResultMessageResolver{&searchResultResolver{nil}, []error{ctx.Err()}}
				return true
			}

@@ -109,13 +109,13 @@ func (r *Resolver) SubscriptionSearch(ctx context.Context, args struct{ Text str
			}

			if strings.Contains(h.Name, args.Text) {
-				c <- &searchResultResolver{&humanResolver{h}, nil}
+				c <- &searchResultMessageResolver{&searchResultResolver{&humanResolver{h}}, nil}
			}
		}

		time.Sleep(750 * time.Millisecond)
		if rand.Float64() > 0.80 {
-			c <- &searchResultResolver{nil, errors.New("backend had an error")}
+			c <- &searchResultMessageResolver{&searchResultResolver{nil}, []error{errors.New("backend had an error")}}
			return
		}

@@ -125,13 +125,13 @@ func (r *Resolver) SubscriptionSearch(ctx context.Context, args struct{ Text str
			}

			if strings.Contains(d.Name, args.Text) {
-				c <- &searchResultResolver{&droidResolver{d}, nil}
+				c <- &searchResultMessageResolver{&searchResultResolver{&droidResolver{d}}, nil}
			}
		}

		time.Sleep(750 * time.Millisecond)
		if rand.Float64() > 0.80 {
-			c <- &searchResultResolver{nil, errors.New("backend had an error")}
+			c <- &searchResultMessageResolver{&searchResultResolver{nil}, []error{errors.New("backend had an error")}}
			return
		}

@@ -141,7 +141,7 @@ func (r *Resolver) SubscriptionSearch(ctx context.Context, args struct{ Text str
			}

			if strings.Contains(s.Name, args.Text) {
-				c <- &searchResultResolver{&starshipResolver{s}, nil}
+				c <- &searchResultMessageResolver{&searchResultResolver{&starshipResolver{s}}, nil}
			}
		}
	}()
@@ -425,9 +425,37 @@ func (r *starshipResolver) Length(args struct{ Unit string }) float64 {
	return convertLength(r.s.Length, args.Unit)
}

+type errorDef struct {
+	message string
+}
+
+func (e *errorDef) Message() string {
+	return e.message
+}
+
+type searchResultMessageResolver struct {
+	node   *searchResultResolver
+	errors []error
+}
+
+func (r *searchResultMessageResolver) Node() *searchResultResolver {
+	return r.node
+}
+
+func (r *searchResultMessageResolver) Errors() *[]*errorDef {
+	if len(r.errors) == 0 {
+		return nil
+	}
+
+	out := make([]*errorDef, len(r.errors))
+	for i, err := range r.errors {
+		out[i] = &errorDef{err.Error()}
+	}
+	return &out
+}
+
type searchResultResolver struct {
	result interface{}
-	err    error
}

func (r *searchResultResolver) ToHuman() (*humanResolver, bool) {
@@ -445,10 +473,6 @@ func (r *searchResultResolver) ToStarship() (*starshipResolver, bool) {
	return res, ok
}

-func (t *searchResultResolver) SubscriptionError() error {
-	return t.err
-}
-
func convertLength(meters float64, unit string) float64 {
	switch unit {
	case "METER":
diff --git a/schema.graphql b/schema.graphql
index b692677..401b5f7 100644
--- a/schema.graphql
+++ b/schema.graphql
@@ -16,7 +16,7 @@ type Query {
}

type Subscription {
-  search(text: String!): SearchResult!
+  search(text: String!): SearchResultMessage!
}

# The mutation type, represents all updates we can make to our data
@@ -56,6 +56,10 @@ enum LengthUnit {
  FOOT
}

+type Error {
+  message: String!
+}
+
# A humanoid creature from the Star Wars universe
type Human implements Character {
  # The ID of the human
@@ -144,4 +148,9 @@ type Starship {
  length(unit: LengthUnit = METER): Float!
}

+type SearchResultMessage {
+  node: SearchResult!
+  errors: [Error]
+}
+
union SearchResult = Human | Droid | Starship
diff --git a/subscribe_ok.graphql b/subscribe_ok.graphql
index f6e3b5e..07bc389 100644
--- a/subscribe_ok.graphql
+++ b/subscribe_ok.graphql
@@ -1,20 +1,22 @@
subscription {
  search(text: "Luke") {
-    kind: __typename
-
-    ... on Human {
-      id
-      name
+    errors {
+      message
    }
-
-    ... on Droid {
-      id
-      name
-    }
-
-    ... on Starship {
-      id
-      name
+    node {
+      kind: __typename
+      ... on Human {
+        id
+        name
+      }
+      ... on Droid {
+        id
+        name
+      }
+      ... on Starship {
+        id
+        name
+      }
    }
  }
}

Thank you for the detailed explanation and for your patience on this but I still don't understand how this PR improves the library. Currently the library satisfies the GraphQL spec and allows some messages to contain both data and errors. Could you give me a unit test or executable example that that I can run which demonstrates the issue.
Currently I believe that this unit test demonstrates the ability to propagate subscription errors to the user.


Font of "PageSelector" is to large on phone sized devices

Font size is okay on tablets. Should probably be adjusted based on device size/resolution.

The type PageSelector has been removed in Tabris.js 2.0.


Future#WaitForCompletion: context has been cancelled: StatusCode=200 -- Original Error: context deadline exceeded

Bug Report

import path of package in question, e.g. .../services/compute/mgmt/2018-06-01/compute
"github.com/Azure/azure-sdk-for-go/profiles/2020-09-01/compute/mgmt/compute"

SDK version e.g. master, latest, 18.1.0
Not sure what SDK version refers to. I use:
"github.com/Azure/azure-sdk-for-go/profiles/2020-09-01/compute/mgmt/compute"
So I assume "v58.0.0"?

Specify the exact commit if possible; one way to get this is the REVISION
column output by dep status "github.com/Azure/azure-sdk-for-go.
Don't have the dep status command. The link above already shows what the profile I am using.

output of go version
go1.15.8 windows/amd64

What happened?
VM creation is a very long operation. Seems to be some wait time limit that fails the VM creation, which I do not see an option to set for Future#WaitForCompletion.

Error
2021/11/30 07:23:34 Cannot create VM, reason: Future#WaitForCompletion: context has been cancelled: StatusCode=200 -- Original Error: context deadline exceeded
exit status 1
Running vm app.go clean...
Deleting resource group 'azure-sample-golang-vm'...
2021/11/30 07:38:37 Future#WaitForCompletion: context has been cancelled: StatusCode=202 -- Original Error: context deadline exceeded

What did you expect or want to happen?
Should not be an error when creating VM.

How can we reproduce it?
Seems to be happening frequently in our CI for AAD Azure Stack environment. The below code is what is being run:
The call:

	future, err := vmClient.CreateOrUpdate(
		cntx,
		rgName,
		vmName,
		virtualMachine,
	)
	if err != nil {
		return vm, fmt.Errorf(fmt.Sprintf(errorPrefix, err))
	}
	err = future.WaitForCompletionRef(cntx, vmClient.Client)
	if err != nil {
		return vm, fmt.Errorf(fmt.Sprintf(errorPrefix, err))
	}
	return future.Result(vmClient)

code that sometimes reproduces the error:
https://github.com/Azure-Samples/Hybrid-Golang-Samples/blob/2fb5de374d18410aac31ab9c3d0d11db2e6b9835/vm/hybridcompute/hybridcompute.go#L131

Anything we should know about your environment.
It is an Azure Stack Hub environment.

Seems to be caused by vmClient.Client.PollingDuration configuration. This was confusing since cntx := context.Background() creates a default context with no deadline, but the Client object still cancels the context using its own timeout functionality.
I added the following code:
vmClient.Client.PollingDuration = 60 * time.Minute

And now I have a new error:
2021/12/01 19:55:14 Cannot create VM, reason: Code="FabricVmCreationError" Message="Failed to create VM 'az-samples-go-vmname' "
exit status 1

Turned out to be an issue with our environment. It has since been mitigated. Not sure if the error message could be improved as "context deadline" has been cancelled doesn't tell what cancelled it.


Update gopkg.in/yaml.v3 to v3.0.0

Signed-off-by: Sascha Schwarze<EMAIL_ADDRESS>Fix for CVE-2022-28948, not sure how realistic it is to exploit it. Though, scanning tools don't care that much about that anyway.
Changes
/kind cleanup
Submitter Checklist
As the author of this PR, please check off the items in this checklist:

[x] Docs included if any changes are user facing
[x] Tests included if any functionality added or changed
[x] Follows the commit message standard
[x] Meets the Tekton contributor standards (including
functionality, content, code)
[x] Release notes block below has been filled in
(if there are no user facing changes, use release note "NONE")

Release Notes
NONE

/lgtm
Thanks!
@vdemeester @afrittoli Are we still planning/hoping to enable dependabot across Tekton repos?

@vdemeester @afrittoli Are we still planning/hoping to enable dependabot across Tekton repos?

yup we should 👍 how can we proceed with enabling it? Chains has it enabled already: https://github.com/tektoncd/chains/pulls/app%2Fdependabot
How does it work though? dependabot has a PR to upgrade github.com/hashicorp/go-plugin from  v1.4.3 to v1.4.4 but not for pipelines 🤔
github.com/tektoncd/pipeline v0.31.1

/ok-to-test

/test pull-tekton-pipeline-integration-tests

@vdemeester @afrittoli Are we still planning/hoping to enable dependabot across Tekton repos?

yup we should 👍 how can we proceed with enabling it? Chains has it enabled already: https://github.com/tektoncd/chains/pulls/app%2Fdependabot
How does it work though? dependabot has a PR to upgrade github.com/hashicorp/go-plugin from v1.4.3 to v1.4.4 but not for pipelines 🤔
github.com/tektoncd/pipeline v0.31.1

You need a dependabot.yaml. But note that (for whatever reason), Dependabot did not notify us of this one (in Shipwright). But it was also quite new, maybe our downstream notification came just quicker than Dependabot became aware of it.


community[patch]: Correct the calling to collection_name in qdrant

Description
In #16608, the calling collection_name was wrong.
I made a fix for it.
Sorry for the inconvenience!
Issue
https://github.com/langchain-ai/langchain/issues/16962
Dependencies
N/A

FWIW, I logged https://github.com/langchain-ai/langchain/issues/16962 about this.

@Anush008
Thank you for your review!
I added a new commit to fix failing tests.

it looks CI fails at linter from langchain/libs. I'll take a look at it.


Excluding vulnerability CVE-2022-4065 {patch}

Excluding CVE-2022-4065 caused by TestNG vulnerability as there is no released fix yet and it is blocking every other merge in the meantime.


ENH: Dockerfile - chmod to guarantee availability, and test global installation via import pliers

the first call python -m pliers.support.download is done within source code tree, so mileage could vary from calling from outside

Coverage decreased (-5.3%) to 72.031% when pulling 6062544cfbd6ef76b2c4fb793949c4928f732274 on yarikoptic:enh-dockerfile into a8d675b15e232b0d9c4dbe39307ecc32aeab8a34 on tyarkoni:master.

Coverage decreased (-5.3%) to 72.031% when pulling 6062544cfbd6ef76b2c4fb793949c4928f732274 on yarikoptic:enh-dockerfile into a8d675b15e232b0d9c4dbe39307ecc32aeab8a34 on tyarkoni:master.

ready for the merge now ;) thanks!


feat: Added support for --azure-credential via VSCE_AZURE_CREDENTIALS environment variable

vsce added support for --azure-credential a few months ago as Microsoft moves away from long-living PATs.  This flag allows authentication to be pulled from the current azure cli context.
This PR also does the following small tweaks:

Adds a launch.json to run ava tests for debugging via VS Code
Fixes the test publishes an extension in a non-root folder to work on Windows (some hard-coded pathing assumptions were made)
Adds a .gitattributes file to force line endings to be LF instead of CRLF.  On Windows prettier was complaining about all of the line endings, this change makes git clone/treat all of the files as LF.

Addresses #662

Validated this with my fork. Working for me! :)
https://github.com/Mojang/minecraft-debugger/actions/runs/10120996092/job/27991427579

@JakeShirley, thanks a lot. I'm currently on vacation far away from the computer.  I should review your PR next week.

@felipecrs did you ever get a chance to look at this? :)

@felipecrs did you ever get a chance to look at this? :)

Very sorry for taking this long. I had actually forgot.

@felipecrs Finally got around to addressing this feedback :)

Did a fresh rebase, hopefully all of the checks are good now :)


[backport/v1.23] repo: Add automated tagging/publishing (#22578)

Signed-off-by: Ryan Northey<EMAIL_ADDRESS>Commit Message:
Additional Description:
Risk Level:
Testing:
Docs Changes:
Release Notes:
Platform Specific Features:
[Optional Runtime guard:]
[Optional Fixes #Issue]
[Optional Fixes commit #PR or SHA]
[Optional Deprecated:]
[Optional API Considerations:]

/lgtm deps

/retest

blocked by #22701


oauth2 tokens are dropped on restart

Is there an existing issue for this?

[X] I have searched the existing issues

Kong version ($ kong version)
3.2.2
Current Behavior
When I rolling restart kong, all oauth2 tokens are dropped from oauth2_tokens table.
Expected Behavior
Leave oauth2_tokens table as it was before restart.
Steps To Reproduce
Generate oauth2 tokens with API. Check PG table.
kong-public=# select * from oauth2_tokens;
-[ RECORD 1 ]--------+-------------------------------------
id                   | e08949c1-c909-430f-9427-3d4be5bfb9e5
created_at           | 2023-08-03 10:21:20+02
credential_id        | 141dcb8a-1374-4993-91ff-94072eaaaf83
service_id           |
access_token         | hqNYVzNYcRkq7TiFvVCVVjobMhGuaPim
refresh_token        |
token_type           | bearer
expires_in           | 3600
authenticated_userid |
scope                |
ttl                  | 2023-08-03 11:21:20+02
ws_id                | 45512ab8-c11b-4111-8e40-5cd4747ceff1
-[ RECORD 2 ]--------+-------------------------------------
id                   | 7014143f-c022-4080-9380-96134d3437f6
created_at           | 2023-08-03 10:21:51+02
credential_id        | 141dcb8a-1374-4993-91ff-94072eaaaf83
service_id           |
access_token         | 4gJa130dbqq9qnKR6xJY7zDYYXhIDn6V
refresh_token        |
token_type           | bearer
expires_in           | 3600
authenticated_userid |
scope                |
ttl                  | 2023-08-03 11:21:51+02
ws_id                | 45512ab8-c11b-4111-8e40-5cd4747ceff1

Rolling restart kong. Check PG table.
kong-public=# select * from oauth2_tokens;
(0 rows)

Anything else?
No response

@BornTKill, is it possible that tokens have been expired, and thus cleared from DB?

I also see +02 at the end, so could it be related to timezone. Kong I think tries to set all connections to UTC. But there is a slight possibility that something goes wrong when them.

Here for new connections we do this:
https://github.com/Kong/kong/blob/3.2.2/kong/db/strategies/postgres/connector.lua#L233
SET TIME ZONE 'UTC';

When we insert data to db we always insert it in UTC timezone too. And when reading we convert things to UTC if they happen for some reason be in another timezone. So I can hardly believe it is timezone issue.
So I would like to know if it was just that rows were expired? If not, is it possible to make it reproducable?

It seems like this issue is posted on 2023-08-03 10:48:20+02, rows were created on 2023-08-03 10:21:51+02 and they should have expired in 2023-08-03 11:21:51+02. So if that is right, then I don't think rows should have been deleted.
On 3.2 our timer job runs on every minute:
DELETE FROM "oauth2_tokens" WHERE "ttl" < CURRENT_TIMESTAMP AT TIME ZONE 'UTC';

That could perhaps explain it if the connection time zone for some reason is a wrong one. Thus perhaps the proper fix would be:
DELETE FROM "oauth2_tokens" WHERE "ttl" AT TIME ZONE 'UTC' < CURRENT_TIMESTAMP AT TIME ZONE 'UTC';

This has been like this for long. 3.3 makes some changes to it. But I feel strange that we have not heard about it before (and that we do run the SET TIME ZONE). What version of PG are you running? What time zone is your system running? Every server basically should be configured to run at UTC to avoid many potential issues (not only with Kong). But that said, if it turns out to be time zone related, we should fix it. Above is one fix to it.

Hi @bungle
Thanks for your investigation,
I followed your idea by increasing the token ttl to see if they were deleted on restart. I changed it to 18000 (=5h)
kong-public=# select * from oauth2_tokens;
[...]
-[ RECORD 3 ]--------+-------------------------------------
id                   | 76f78dd0-a215-4dbd-b32c-2c84a6cd867e
created_at           | 2023-08-10 14:03:15+02
credential_id        | cce33c4b-4fcc-43be-a4e6-049d0cf36f74
service_id           |
access_token         | IfQ1KdLLHwIYKp0c08yISBBscZqHDb4r
refresh_token        |
token_type           | bearer
expires_in           | 3600
authenticated_userid |
scope                |
ttl                  | 2023-08-10 15:03:15+02
ws_id                | 45512ab8-c11b-4111-8e40-5cd4747ceff1
-[ RECORD 4 ]--------+-------------------------------------
id                   | aa237ccc-485d-4126-b210-4416cf006378
created_at           | 2023-08-10 14:03:38+02
credential_id        | 24d0cc67-a467-48e5-8e4b-2a1c4bc02532
service_id           |
access_token         | ANc5CSEs9ySonwNYKIQnVkLiwwwXkvBj
refresh_token        |
token_type           | bearer
expires_in           | 18000
authenticated_userid |
scope                |
ttl                  | 2023-08-10 19:03:38+02
ws_id                | 45512ab8-c11b-4111-8e40-5cd4747ceff1

My token with longer ttl is present among the other tokens.
And after the rolling restart, all tokens are still dropped:
kong-public=# select * from oauth2_tokens;
(0 rows)

@piermotte Seems I can't reproduce it. Could you please provide your reproduce steps so that we can have a further investigation?

I reproduce each time, deleting the kong pods one by one (we use it as a daemonset in kubernetes).
We have 8 nodes to ensure high availability.
It's quite random (maybe based on a batch?), sometimes token deletion is almost instantaneous, sometimes it takes about 1 minute

Hello,
Back from holidays. How can I help to find a solution ?

Hi everyone we recently experienced the same issue, when we upgrade kong image from 3.0 to 3.3.
To be more specific we upgrade the helm chart of Kong from 2.13.0 to 2.26.2.
After the upgrade the PG table oauth2_tokens wa completely wiped.
As a consequence, some of our consumers got hit with a 401, until their access_token expired, and they renew them.

Hi @liverpool8056, Were you able to reproduce ?

Hi @bungle and @liverpool8056 ,
I reproduce it this morning and look at the logs when the phenomenon appeared and i found api calls that seems to be responsible for deleting tokens. They are from a single pod at startup, it's really weird.
 Does it seem familiar to you?

@piermotte I can't ever reproduce it in normal Gateway env, but it seems it can be reproduced in KIC right?
Why and by whom are those DELETE calls initiated when starting up?

Indeed it seems to be related to KIC.
I haven't been able to check this yet, but I have the feeling that when the leader is restarted by rolling restart, another one is elected and makes the calls.

Ok I can now confirm that it is the newly elected leader who is removing all resources. The question is why ?
I've reproduced it by removing the leader


How can modify game.ini file ?

Hi,
I want to add to game.ini this line :
OverridePlayerLevelEngramPoints=200000
MatingIntervalMultiplier=3.0
EggHatchSpeedMultiplier=3.0
BabyMatureSpeedMultiplier=3.0
I have try to modify directly game.ini, and add ark_Ove... in main.cfg, but this fail.
I'm waiting ur help.
Thanks :)

the Game.ini has to begin with this line: [/script/shootergame.shootergamemode]
than you have to shutdown the server, edit the file and start the server than. Otherwise the server will overwrite your changes with current running settings.

Thanks man :)


feat: add metadata query filter to list Tokens

Description

Update basis-theory-elements-interfaces to v3.2.0 to enable filtering tokens by Metadata KV pairs

Testing required outside of automated testing?

[X] Not Applicable

Screenshots (if appropriate):

[X] Not Applicable

Rollback / Rollforward Procedure

[X] Roll Forward
[ ] Roll Back

Reviewer Checklist

[ ] Description of Change
[ ] Description of outside testing if applicable.
[ ] Description of Roll Forward / Backward Procedure
[ ] Documentation updated for Change

:tada: This PR is included in version 1.19.0 :tada:
The release is available on:

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


Networks API endpoint incorrect behavior

Required information
I'm running LXD via a snap install on Ubuntu :
$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 16.04.4 LTS
Release:        16.04
Codename:       xenial

$ lxd --version
3.2

$ snap info lxd | grep tracking
tracking:     stable

Issue description
The two issues i'm seeing are related to the /1.0/networks/<name> endpoint, here a recap :

The PUT method behave like the PATCH, it updates the config instead of replacing it.
The PATCH method seems to not work, but it stills output success without working.

Steps to reproduce
PUT method issue
Let's take as an example this bridge network lxdbr1 :
$ lxc network show lxdbr1
config:
  bridge.driver: native
  ipv4.address: <IP_ADDRESS>/24
  ipv6.address: fd26:9b5f:cdb1:7756::1/64
description: ""
name: lxdbr1
type: bridge
used_by: []
managed: true
status: Created
locations:
- none

I gonna use this payload for interacting with the networks/ endpoint :
{
    "config": {
        "ipv4.address": "<IP_ADDRESS>/24"
    }
}

This should replace entirely our config letting us with only ipv4.address value :
$ curl --unix-socket /var/snap/lxd/common/lxd/unix.socket \
    -H "Content-Type: application/json" \
    -X PUT \
    -d @lxdbr1-config.json \
    lxd/1.0/networks/lxdbr1
{"type":"sync","status":"Success","status_code":200,"operation":"","error_code":0,"error":"","metadata":{}}

$ lxc network show lxdbr1
config:
  bridge.driver: native
  ipv4.address: <IP_ADDRESS>/24
  ipv6.address: fd26:9b5f:cdb1:7756::1/64
description: ""
name: lxdbr1
type: bridge
used_by: []
managed: true
status: Created
locations:
- none

I would have expected to have this as an output :
$ lxc network show lxdbr1
config:
  ipv4.address: <IP_ADDRESS>/24
description: ""
name: lxdbr1
type: bridge
used_by: []
managed: true
status: Created
locations:
- none

PATCH issue
For this issue I will use the same lxdbr1 bridge (resetting ipv4.address to initial value) and payload :
curl --unix-socket /var/snap/lxd/common/lxd/unix.socket \
    -H "Content-Type: application/json" \
    -X PATCH \
    -d @lxdbr1-config.json \
    lxd/1.0/networks/lxdbr1
{"type":"sync","status":"Success","status_code":200,"operation":"","error_code":0,"error":"","metadata":{}}

$ lxc network show lxdbr1
config:
  bridge.driver: native
  ipv4.address: <IP_ADDRESS>/24
  ipv6.address: fd26:9b5f:cdb1:7756::1/64
description: ""
name: lxdbr1
type: bridge
used_by: []
managed: true
status: Created
locations:
- none

We have a success, but our configuration didn't change, I would have expected the output observed on the PUT method.
An another thing I have noticed that lead me to thinks this is broken, is for example using an incorrect CIDR value.
With PUT :
$ curl --unix-socket /var/snap/lxd/common/lxd/unix.socket \
    -H "Content-Type: application/json" \
    -X PUT \
    -d @lxdbr1-config.json \
    lxd/1.0/networks/lxdbr1
{"error":"invalid CIDR address: 1.1.1/24","error_code":400,"type":"error"}

With PATCH :
$ curl --unix-socket /var/snap/lxd/common/lxd/unix.socket \
    -H "Content-Type: application/json" \
    -X PATCH \
    -d @lxdbr1-config.json \
    lxd/1.0/networks/lxdbr1
{"type":"sync","status":"Success","status_code":200,"operation":"","error_code":0,"error":"","metadata":{}}

This throws a correct error with PUT, but PATCH still says everything is ok.

Ouch, yeah, something is pretty wrong here...

I tried to dig into the lxd/network.go file, but I’m not really familiar with GO.
For the PATCH issue, according to my understanding, the Update method do not take requests from the patch endpoint :
func (n *network) Update(newNetwork api.NetworkPut) error {

The problem is in the database code, I'm looking at it.

Sent a fix

Glad you came with a fix.
I just noticed an another bug, when creating a network with « openvswitch » when the package is not installed, it errors out but still creates the network bridge.
But then it’s impossible to delete it.
Do you want me to describe this here or in another issue ? (I thought your fix had maybe fix this problem too).

@Nani-o looking into that one now

@Nani-o I can't seem to reproduce the problem here:
stgraber@castiana:~$ lxc network create testbr0 bridge.driver=openvswitch
Error: Failed to run: ovs-vsctl add-br testbr0:
stgraber@castiana:~$ lxc network list
+--------+----------+---------+-------------+---------+
|  NAME  |   TYPE   | MANAGED | DESCRIPTION | USED BY |
+--------+----------+---------+-------------+---------+
| lxdbr0 | bridge   | YES     |             | 11      |
+--------+----------+---------+-------------+---------+
| wlan0  | physical | NO      |             | 0       |
+--------+----------+---------+-------------+---------+
stgraber@castiana:~$

What did I miss?

@stgraber Sorry for not giving more details, I first create a network without bridge.driver. The I modify it using the PUT method, specifying bridger.driver: openvswitch. It errors out but still add the value.
From there, the only way to delete it for me was to install openvswitch, create a lxdbr1 nic with openvswitch and then ask LXD to delete it.
I can post a step by step reproduction example later if needed.

Perfect, that should be enough to reproduce it then.

@stgraber I just take the time to do it from my phone.
But it stills add the value :
$ lxc network set testbr0 bridge.driver openvswitch
Error: Failed to run: ovs-vsctl add-br testbr0: ovs-vsctl: unix:/var/run/openvswitch/db.sock: database connection failed (No such file or directory)
$ lxc network show testbr0
config:
  bridge.driver: openvswitch
  ipv4.address: <IP_ADDRESS>/24
  ipv4.nat: "true"
  ipv6.address: fd42:2421:e478:b8aa::1/64
  ipv6.nat: "true"
description: ""
name: testbr0
type: bridge
used_by: []
managed: true
status: Created
locations:
- none
$ lxc network delete testbr0
Network testbr0 deleted

Reseting the bridge.driver property prior to removal should work fine too but anyway, it's certainly meant to revert the configuration on failure.

Sent a fix for it now.

Yesterday when trying I was not able to reset the value.
Using PUT leaded to error letting the openvswitch value.
Using lxc network edit to remove the value put me in a « vim loop ».
Anyway, thanks for your time and reactivity as always.


feat: upgrade hds version to 2.8.0

Description :sparkles:
-Update HDS version
-Fix tests
Issues :bug:
Closes :no_good_woman:
DEV-XXX:
Related :handshake:
Testing :alembic:
Automated tests :gear:
Manual testing :construction_worker_man:
Screenshots :camera_flash:
Additional notes :spiral_notepad:

Codecov Report

Merging #257 (9135217) into master (d66a2eb) will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##           master     #257   +/-   ##
=======================================
  Coverage   82.02%   82.02%
=======================================
  Files         115      115
  Lines        2392     2392
  Branches      817      817
=======================================
  Hits         1962     1962
  Misses        424      424
  Partials        6        6

:mega: We’re building smart automated test selection to slash your CI/CD build times. Learn more


JsGrid - Keep the grid cells open for update - help wanted

hi,
Is there anyway to keep the grid cells always open, instead of having to click on the row to open the cells.
Thanks for your help.

Redefine itemTemplate of fields so that they render inputs, not just values. For instance call editTemplate from itemTemplate.


Ask for password again

While creating an account on Github, it asks only one time for a password. Password must be asked twice so if one accidently made a typo error then he/she has to recover it again.

This is a library that's independent of GitHub. It appears you're having a problem with GitHub, but if I've misunderstood, feel free to reopen this issue.


Ingest Pharmgkb

Ingests PharmGKB drug -> gene associations. PharmGKB uses their own IDs for genes - I went to some trouble to convert them to Uniprot IDs when possible (doesn't seem to work for miRNAs).

@justaddcoffee Looks good!


Fix docstrings with new perplexities with base e

Missed these examples in the perplexity-with-base-e docstrings since CircleCI wasn't triggering tests on the last PR.

The docs for this PR live here. All of your documentation changes will be reflected on that endpoint.

Looks like the result is 646.75 in torch and 646.74 on windows. Maybe just round to one more digit?


Buffer too small

For some tracks, the egress recording stops almost immediately after it starts with the error: {"logger":"egress","caller":"source/appwriter.go:181","msg":"could not read packet","egressID":"EG_JWbiQTnRuBaa","trackID":"TR_VS2deqoQWnD23f","kind":"video","error":"buffer too small","stacktrace":"[github.com/livekit/egress/pkg/pipeline/source.(*appWriter).start](http://github.com/livekit/egress/pkg/pipeline/source.(*appWriter).start)\n\t/workspace/pkg/pipeline/source/appwriter.go:181"}

I use livekit/egress:v1.0.3 docker images,It's worked!


Support for custom checkpointing.

This feature is required for us to try different checkpointing strategies in the future.

@zhenghh04 Can we work on merging PR.


fix gausslaguerre(n,α::Int) (fix #86)

Fix #86

Just add a test and bump the version and I can merge/tag this

Just add a test and bump the version and I can merge/tag this

Finished

add more tests
bump version to v0.4.5

Finished

add more tests
bump version to v0.4.5

Could you merge #90 before bumping version?

Could you merge #90 before bumping version?


NeoForge 1.20.4

Adds NeoForge 1.20.4 support.
Notes:

ArchLoom doesn't seem to support accesswidener conversion for NeoForge for some reason. They are no longer in SRG for NF 1.20.2+. Rather, they are in MojMap now. I converted the accesswidener by hand to an AT in MojMap and placed it in the corresponding spot. Tested in AE2 dev, that this works correctly.
Everything else still closely aligns with Forge

Wonderful, thank you very much for your contribution, I'll try to get this out by the 26th with some other bug fixes.


Macro for_all_cmp_combinations is too heavy.

It's really a heavy macro
It did not take consider unsigned types, such as UInt32 CMP  Int32, the cast type may be Int64.  (seems DataType did not have unsigned types for now, it's a bit more like MySQL)

It's really a heavy macro

Exactly. Considering the build_binary_expression is only called once when a plan is built, I think it's okay to leave such macro here.

It did not take consider unsigned types, such as UInt32 CMP Int32, the cast type may be Int64. (seems DataType did not have unsigned types for now, it's a bit more like MySQL)

The DataType follows Postgres's data type design, so it doesn't take unsigned data into consideration. There's no unsigned type in Postgres.
To support unsigned data types in this framework, I would suggest the following ways:

unsigned / signed is a kind of logical type. They should be stored as i32 no matter it's signed or unsigned in logical type.
signed / unsigned is only useful in integer types, so we should implement a separate set of CmpXx for integer types. The new CmpIntegerLe struct should use const generics to determine whether each input is signed or unsigned type.
after that, we can refine the macro to generate unsigned / signed comparison.

... and if the expression framework is used on TP databases like TiKV's coprocessor, I think it's more suitable to only having I64Array in ArrayImpl. All integers, no matter i16 or i32, should be casted to i64 before proceeding to execution. In this way, the for_all_cmp_combinations could be simplified a lot.

I get it.
For datatypes:
In OLAP database, I think it's better to use more strict datatypes.  It might not be an issue in this exercise, let's keep it as simple as it could.
For combinations:
Since it's   10 primitives * 10 primitives (if we have unsigned as types),  We had to have some codegen tools to generic the type binding of cmp/arithmetics::* .


Blufi for NimBLE? (IDFGH-1992)

Hi!
I'm quite impressed with Nimble's lightness, you can run the whole BLE core with less than 10k of heap and only 300Kb of flash while in bluedroid it easily reaches 70k+ of heap and 650Kb+ of space
Well, I would like to port my whole project to nimble, but only Blufi if only available on bluedroid. Is there any plan to port Blufi for NimBLE too?

@copercini  NimBLE is not ported for Blufi and there is no plan to do so. Instead, we have added its support in the Unified Provisioning framework (similar functionality). You can read the details about the architecture, process and security here: https://docs.espressif.com/projects/esp-idf/en/latest/api-reference/provisioning/provisioning.html#unified-provisioning
You can try it out using the example: https://github.com/espressif/esp-idf/tree/master/examples/provisioning/ble_prov. Please refer README.md in the same directory for more details.
Note: You will have to select NimBLE host in the menuconfig make menuconfig -> Component config -> Bluetooth -> Bluetooth Host -> NimBLE - BLE only and then compile the example as currently we have kept Bluedroid as the default option.

Thanks for the answer, Unified Provisioning framework seems nice, but unfortunately I'll have to port blufi to nimble, because we already have the android/iOS apps ready for blufi

@copercini Just to close on this, we have Android and iOS apps for unified provisioning as well. You can see the apk as well as pointers to playstore:
https://github.com/espressif/esp-idf-provisioning-android/releases/tag/release_v1.2
https://github.com/espressif/esp-idf-provisioning-ios/releases/tag/release_v1.2

@dhrishi yes the apps are cool, but unfortunately in my case we already have our own custom app based on blufi, that already works for our other ESP32 based products. So I don't have many choices, or port blufi to NimBLE or change the main code to bluedroid. Right now I'm looking to only try port blufi simplified (from ESP32  Homekit SDK)

@copercini  No worries :-) I added this so that it would be helpful to users browsing this issue :-D

Hi @copercini were you successful in porting Blufi to Nimble?
Even am on the same track to do so. Any help or suggestions?

Hi @copercini @venkateshgr-ayla  There's already a PR to add support of Blufi using NimBLE host: https://github.com/espressif/esp-idf/pull/6904
It is under review right now. We will update when it gets merged.

Hi Hrishikesh,
That’s indeed a great news. Any rough estimate when it would be available for us? So that we can plan accordingly.
Thanks,
GR.Venkatesh
From: Hrishikesh Dhayagude @.>
Reply to: espressif/esp-idf @.>
Date: Tuesday, 8 June 2021 at 11:58 AM
To: espressif/esp-idf @.>
Cc: Venkatesh GR @.>, Mention @.***>
Subject: Re: [espressif/esp-idf] Blufi for NimBLE? (IDFGH-1992) (#4188)
Hi @copercinihttps://github.com/copercini @venkateshgr-aylahttps://github.com/venkateshgr-ayla There's already a PR to add support of Blufi using NimBLE host: #6904https://github.com/espressif/esp-idf/pull/6904
It is under review right now. We will update when it gets merged.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHubhttps://github.com/espressif/esp-idf/issues/4188#issuecomment-856487742, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AUJHVX6OBGHEIST7GYO3DTDTRW2AFANCNFSM4JAANNFQ.

@venkateshgr-ayla It would be available in ESP-IDF master branch in a few days. For now, you can just try it out from the PR branch (It should work fine)


GA4

GA4 should receive information about

what has been search
what facets have been chosen after/with search
what links / results have been clicked

The analytics solution must enable us to track data from now into the future.
Arno - also option to store the data on our server ourselves. can ALSO use GA or another tool.
We need to track

unique users
landing pages, traffic etc.
number of searches
search terms
country of source of search
result clicked on
user country for result clicked

Related: Matomo is a very popular analytics tracker, that is free if we host ourselves on IODE server.  I think there is no harm in having both GA4 and Matomo running, and, with Matomo we will always have the past data locally (there is no 14-month rule etc).

We have to move away from GA if we want stats from all over the world. As far as I know GA will not work for Chinese and Iranian visits and might be a problem for Russian visits in the future. Matomo looks promising to me and is scalable if we would need more in the future.

We can investigate on it.
Anyway some considerations from our side:

we highly discourage using 2 in-parallel setups: you're going to have massive headaches with mismatching metrics for litte to no added value

on-premise Matomo has some limitations on the custom reports available, that need to be purchased as add-on starting from €199/year https://matomo.org/pricing/
We are going to explore more in depth the granularity of the standard site search report included in the free tier and confirm if it satisfies OIH's needs

the estimated cost (given the historical traffic volumes to the OIH website) for BigQuery should be in the ballpark of less than €1 per month. There is also a $300 free credit for new Google Cloud Platform accounts that can be used
https://cloud.google.com/bigquery
https://cloud.google.com/bigquery/pricing

we want to inspect to what extent it's possible to leverage custom dimension to have the requested report granularity in the GA4 standard report interface, so not subjected to the 14-month data retention limit -> to do so we would like to mirror the current tracking in a test GA4 property and run some testing there

Hi all,
here a first approach to define the events fired by React to send to Matomo information related to user actions

Category*
Action*
Name
Description
Notes

search
simple_search
$searchTerm|$region
"fired when a search page result is displayed, coming from a SIMPLE search; block on refresh (how???); block on pagination (how???)"
convert the "," character -if present- to "[COMMA]"

search
advanced_search
$searchTerm|$region|$params
"fired when a search page result is displayed, coming from an ADVANCED search; block on refresh (how???); block on pagination (how???)"
convert the "," character -if present- to "[COMMA]"

search
sorted_search
$searchTerm|$region|$typeOfSearch|$oldSortingCriterion|$newSortingCriterion|$params
fired when a "sorting" dropdown is used to change to a different sorting criterion
"convert the "","" character -if present- to ""[COMMA]""; $typeOfSearch = simple OR advanced OR refined"

search
refined_search
$searchTerm|$region|$typeOfSearch|$oldParams|$newParams
"fired when a search page result is displayed, coming from a previous search, AFTER changing the applied facets or applying new ones; block on refresh (how???)"
"convert the "","" character -if present- to ""[COMMA]""; $typeOfSearch = simple OR advanced OR refined"

search
change_result_page
$searchTerm|$region|$typeOfSearch|$oldPageNumber|$newPageNumber
"fired when a search page result is displayed, coming from a pagination click event block the standard simple_search or advanced_search event (how???); block on refresh (how???)"
"convert the "","" character -if present- to ""[COMMA]""; $typeOfSearch = simple OR advanced OR refined"

click
click_on_result
$destination_URL|$result_position|$current_page_number|$total_pages|$querystring_with_search_and_facets
fired when the title of a result item in the search result page is clicked
convert the "," character -if present- to "[COMMA]"

click
click_on_jsonld
$destination_URL|$result_position|$current_page_number|$total_pages|$querystring_with_search_and_facets
fired when the jsonld button of a result item in the search result page is clicked
convert the "," character -if present- to "[COMMA]"

misc
page_refresh
$currentUrl
fired on page refresh (how???)
convert the "," character -if present- to "[COMMA]"

@arnounesco we are ready to start the development of the above approach. Please give your feedback if you think adjustments are needed.


doc: fix typo 'BankAccount'

Fix a typo in TypeScript Language Specification word docs. Regenerate the spec.md file.

Hi @zhongsp, I'm your friendly neighborhood Microsoft Pull Request Bot (You can call me MSBOT). Thanks for your contribution!
You've already signed the contribution license agreement. Thanks!
We will now validate the agreement and then real humans will evaluate your PR.
TTYL, MSBOT;

thanks @zhongsp. this file is generated from the word doc. can you update that one and run jake generate-spec

@mhegazy Thanks for your review. I've updated the code as your introduction.

@zhongsp, Thanks for signing the contribution license agreement so quickly! Actual humans will now validate the agreement and then evaluate the PR.
Thanks, MSBOT;

@mhegazy did we confirm that running the markdown converter yields the same document?

yup.


Document that cd / export have a global affect

Fixes https://github.com/Gabriel439/Haskell-Turtle-Library/issues/388

Thanks! Perhaps you could also add a small note somewhere in the README? This would serve to warn people who e.g. want to port code from a different library where these are local per thread. Which is what happened to me, BTW. Fortunately, I could change our code without too much effort so that it no longer uses cd and export, but for other applications this might be more difficult.


[Bootstrap 4.0.0-beta.2] Dropdown's don't work

Hello,
I am using Angular 5 and Bootstrap 4.0.0-beta.2 and think I found a bug with Dropdowns in this bootstrap version. Dropdown buttons are not working on this version. If I use 4.0.0-alpha.6, they work fine.
Not working:
CDN: <link href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta.2/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-PsH8R72JQ3SOdhVi3uxftmaW6Vc51MKb0q5P2rRUpPvrszuE4W1povHYgTpBfshb" crossorigin="anonymous">
Code: https://getbootstrap.com/docs/4.0/components/dropdowns/#single-button-dropdowns
Working:
CDN: <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-alpha.6/css/bootstrap.min.css" integrity="sha384-rwoIResjU2yc3z8GV/NPeZWAv56rSmLldC3R/AZzGRnGxQQKnKkoFVhFQhNUwEyJ" crossorigin="anonymous">
Code: https://v4-alpha.getbootstrap.com/components/dropdowns/#single-button-dropdowns
My custom Angular 5 Directive:
I have added my custom directive to add "show" class and change "aria-expanded" to true.
@Directive({
  selector: '[appDropdown]'
})
export class DropdownDirective {
  @Input() show = "show";
  @HostBinding('class.show') isOpen = false;

  @HostListener('click') toggleOpen() {
    this.isOpen = !this.isOpen;
    this.elementRef.nativeElement.querySelector('.dropdown-toggle').attributes['aria-expanded'].nodeValue = this.isOpen;
  }

  constructor(private elementRef: ElementRef) { }

}

The code for dropdowns and directive is same in both alpha and beta version, but the dropdown doesn't open in Beta version.
Bootstrap 4 Beta - dropdowns don't work in Angular 5.docx

Dropdown depends on Popper.js as it written in our documentation see : https://getbootstrap.com/docs/4.0/components/dropdowns/#overview

Thanks for the reply, Johann-S! Yea it's working if I include script links - https://getbootstrap.com/docs/4.0/getting-started/introduction/#js.
I was trying to get it work purely from Angular 5, which may not be possible because as you pointed out dropdowns depend on 3rd party Popper.js. Or do you know of anyway to get it working from Angular 5?
Thanks again for your help!!

Nope sorry currently it's the only way to make it worked as expected


Custom metric path does not work

What did you do?
I've configured a custom service inside kubernetes, with the following annotations:
apiVersion: v1
kind: Service
metadata:
  annotations:
    prometheus.io/scrape: 'true'
    prometheus.io/path: '/custom'
    prometheus.io/port:  '8080'

What did you expect to see?
I've configured the following relabel operation inside prometheus.yml, as of:
https://github.com/prometheus/prometheus/blob/master/documentation/examples/prometheus-kubernetes.yml
  - source_labels: [__meta_kubernetes_service_annotation_prometheus_io_path]
    action: replace
    target_label: __metrics_path__
    regex: (.+)

I'm expecting __metrics_path__ will be replaced with /custom
What did you see instead? Under which circumstances?
__metrics_path__  is still /metrics (default)
Environment
We are using prometheus 2.2.1 inside kubernetes.

System information:
Linux 4.9.75-rancher x86_64

Prometheus version:
prometheus, version 2.2.1 (branch: HEAD, revision: bc6058c)
build user: root@149e5b3f0829
build date: 20180314-14:15:45
go version: go1.10

Does the service discovery status page show that __meta_kubernetes_service_annotation_prometheus_io_path is set as you expect?

Yes, as of service discovery status page io_path is set with /custom:
__meta_kubernetes_service_annotation_prometheus_io_path="/custom"

Can you share the full relabel configs and the relevant row on the discovery status page?

Yes of course:

I can't reproduce it with v2.2.1, there may be an error with your configuration.
Can you share the targets page too?

Here is the job config (prometheus.yml):
    - job_name: 'kubernetes-endpoints'
      scheme: http
      kubernetes_sd_configs:
      - role: endpoints
      tls_config:
        ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt
        insecure_skip_verify: true
      bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token
      relabel_configs:
      - source_labels: [__meta_kubernetes_service_annotation_prometheus_io_scrape]
        action: keep
        regex: true
      - source_labels: [__meta_kubernetes_service_annotation_prometheus_io_scheme]
        action: replace
        target_label: __scheme__
        regex: (https?)
      - source_labels: [__meta_kubernetes_service_annotation_prometheus_io_path]
        action: replace
        target_label: __metrics_path
        regex: (.+)
      - source_labels: [__address__, __meta_kubernetes_service_annotation_prometheus_io_port]
        action: replace
        target_label: __address__
        regex: (.+)(?::\d+);(\d+)
        replacement: $1:$2
      - action: labelmap
        regex: __meta_kubernetes_service_label_(.+)
      - source_labels: [__meta_kubernetes_namespace]
        action: replace
        target_label: kubernetes_namespace
      - source_labels: [__meta_kubernetes_service_name]
        action: replace
        target_label: kubernetes_service

Here are the targets for this job (kubernetes-endpoints):

Last target is down, because the metrics are under "/prometheus" not under "/metrics".

Omg, thank you!


Cron job in quantum for every 2 hours

Is this a right way of doing it?
config :quantum,
  cron: [
    snapshot_extraction: [
      task: {"Extractor.SnapExtractor", "extract"},
      schedule: "0 */2 * * *",
      overlap: false
    ]
  ]

I believe so, you can use this tool: http://crontab.guru/#0_/2_** to build cron expressions easily.

@ijunaid8088 Yes, with that schedule, it will start the job on 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20 and 22 o'clock. If you want to run it a odd hours, you would need to define it as a comma separated list: 0 1,3,5,7,9,11,13,15,17,19,21,23 * * *.
Question answered?

@c-rack Yes Answered!
Why it seems as you are not telling me but fighting with me?

@ijunaid8088 what do you mean with "fighting"? Please excuse if anything in my response seems to be aggressive in any way, that was not intended.

@c-rack Yes, that. "Question answered?" Doesn't seem to be polite for a beginner. But it's fine. I just took it in an offensive way!

OK, thanks for explaining, I'll do it better next time! I appreciate any question, bug report and contribution to this project.

@c-rack You are welcome!


Use double ` for inline code

This was causing a weird thing here https://nox.thea.codes/en/latest/usage.html#controling-commands-verbosity
(replacing the -- for an en-dash).
I searched the whole docs and docstrings.

Thanks!


Release Apache ORC 1.9.3

[x] GitHub Action CI Check.

https://github.com/apache/orc/actions/workflows/build_and_test.yml?query=branch%3Abranch-1.9

Java

8.0.402+6
11.0.22+7
17.0.10+7

C++

GNU 8.3.0/9.3.1/9.4.0/10.2.1/11.4.0/11.4.1/12.2.0/12.3.1
AppleClang <IP_ADDRESS>00029/<IP_ADDRESS>00029/<IP_ADDRESS>00040
MSVC 19.29.30153.0

Ubuntu 20.04.6 and 22.04.3
MacOS 11.7.10, 12.7.3 and 13.6.4 (Intel)
Microsoft Windows Server 2019 10.0.17763
Docker Tests (Debian 10/11/12, Ubuntu 22, Fedora 37, Oracle Linux 9)

[x] Apache Spark 3.5.2 Integration Test with 1.9.3-SNAPSHOT
[x] Apache Iceberg 1.5.1 Integration Test with 1.9.3-SNAPSHOT
[x] Vote Tag Creation
[x] Upload RC0 Vote Artifacts
[x] Upload to ASF Maven Central
[ ] Send RC0 Vote Email
[x] Apache Spark 3.5.2 Integration Integration Test with RC0
[x] Apache Iceberg 1.5.1 Integration Test with RC0
[ ] Send RC0 Vote Result
[ ] Publish to Apache Download
[ ] Release Tag Creation
[ ] Publish to Maven Central
[ ] Create next milestone
[ ] Register 1.9.3 to https://reporter.apache.org/addrelease.html?orc

Send RC0 Vote Email

The link here is the voting link for 1.9.2, which can be updated to https://lists.apache.org/thread/750kpj6425vgc4kt4s45hhrg6d3z1tx5

Thanks @cxzl25! I forgot to update this.

The post release process would be

Release v1.9.3 in vcpkg
Release v1.9.3 in conan

But they could be done later. I'll close this as the release has been completed.

Great! Sure, those are post process steps which should not block Apache ORC release. Thank you so much again.


Add Database support to Login Server

Login Server now uses a database to save accounts and characters

Client has to be modified so it doesn't skip loging screen
Login has to be 5-20 characters, it can only contain letters, numbers, dash and underscore
Password has to be 8-20 characters, it can contain letters numbers and special characters
If you get "Login error" message, it probably means you're failing points 2 and 3
When you enter a Login for the first time, new account will be created. This will be used as a registration system for now
Your character is only saved during character creation, and after finishing tutorial (for now)

Did you base your work off of a fork? We shouldn't have any VS solution files here.
I based it off Joseph's fork

I'm going to rewrite db connection using some ORM library later, so there is no worry about injections and it's a lot cleaner to work upon. It should also do migrations.

closed duplicate


K8SSAND-880 ⁃ Implement merge semantics for Cassandra configs

This is a follow up to https://github.com/k8ssandra/k8ssandra-operator/pull/94#discussion_r703695051.  When #94 is merged that will give you the ability to declare Cassandra configs at the cluster and/or DC levels. For example, we could have something like this:
apiVersion: k8ssandra.io/v1alpha1
kind: K8ssandraCluster
metadata:
  name: test
spec:
  cassandra:
    cluster: test
    serverVersion: "3.11.10"
    serverImage: emerkle826/cass-mgmtapi:3.11.11-v0.1.28
    storageConfig:
      cassandraDataVolumeClaimSpec:
        storageClassName: standard
        accessModes:
          - ReadWriteOnce
        resources:
          requests:
            storage: 5Gi
    config:
      cassandraYaml:
        auto_snapshot: false
        memtable_flush_writers: 1
        commitlog_segment_size_in_mb: 2
        concurrent_compactors: 1
        compaction_throughput_mb_per_sec: 0
        sstable_preemptive_open_interval_in_mb: 0
        key_cache_size_in_mb: 0
        thrift_prepared_statements_cache_size_mb: 1
        prepared_statements_cache_size_mb: 1
        start_rpc: false
        slow_query_log_timeout_in_ms: 0
        counter_cache_size_in_mb: 0
        concurrent_reads: 2
        concurrent_writes: 2
        concurrent_counter_writes: 2
      jvmOptions:
        heapSize: "512M"
    datacenters:
      - metadata:
          name: dc1
        k8sContext: kind-k8ssandra-0
        size: 3
      - metadata:
          name: dc2
        k8sContext: kind-k8ssandra-1
        size: 3

No configs are defined at the DC level for dc1 or dc2, so they will both get the settings declared at the cluster level. Now let's say we have this:
apiVersion: k8ssandra.io/v1alpha1
kind: K8ssandraCluster
metadata:
  name: test
spec:
  cassandra:
    cluster: test
    serverVersion: "3.11.10"
    serverImage: emerkle826/cass-mgmtapi:3.11.11-v0.1.28
    storageConfig:
      cassandraDataVolumeClaimSpec:
        storageClassName: standard
        accessModes:
          - ReadWriteOnce
        resources:
          requests:
            storage: 5Gi
    config:
      cassandraYaml:
        auto_snapshot: false
        memtable_flush_writers: 1
        commitlog_segment_size_in_mb: 2
        concurrent_compactors: 1
        compaction_throughput_mb_per_sec: 0
        sstable_preemptive_open_interval_in_mb: 0
        key_cache_size_in_mb: 0
        thrift_prepared_statements_cache_size_mb: 1
        prepared_statements_cache_size_mb: 1
        start_rpc: false
        slow_query_log_timeout_in_ms: 0
        counter_cache_size_in_mb: 0
        concurrent_reads: 2
        concurrent_writes: 2
        concurrent_counter_writes: 2
      jvmOptions:
        heapSize: "512M"
    datacenters:
      - metadata:
          name: dc1
        k8sContext: kind-k8ssandra-0
        config:
          cassandraYaml:
            concurrent_reads: 4
            concurrent_writes: 10
            concurrent_counter_writes: 2
        size: 3
      - metadata:
          name: dc2
        k8sContext: kind-k8ssandra-1
        size: 3

dc1 overrides the cluster-level settings while dc2 still inherits them. We should provide merge semantics instead of it being mutually exclusive as it is here. With merge semantics dc1 would inherit all of the C* configs declared at the cluster level except for the ones that it overrides.
We need to decide whether we want to do this for all CassandraDatacenter properties that are exposed. Note that with Stargate CRD, we are using override semantics currently. We may want to be consistent across the board.
┆Issue is synchronized with this Jira Task by Unito
┆epic: Passthrough Cassandra Configuration
┆fixVersions: k8ssandra-operator-v1.1.0
┆friendlyId: K8SSAND-880
┆priority: Medium

This was done when we started using Goalesce for merging cluster and dc level configs.


Docs: Add --gap modifier for seed-flexy

https://github.com/helpscout/seed-flexy

Added with latest commit


Wrapped missing WebSecurity, Roles and Membership methods to make code more testable (2).

Only some of the WebSecurity methods were wrapped. I wrapped the rest and all calls to Roles, Membership and controller.User to make future testing more easy.
I also did some cleanup/refactoring of the existing controller tests and added extra unit tests for the AccountController.Register action.

@BillWagner I know this PR touches a lot of files, sorry for that... Is there a reason why you didn't merge it (I saw you did merge other PR today)? I do have another PR ready to close #187 but it builds on code in this PR.

@tditiecher I'm working on reviewing it now. I'll have it merged in about an hour.


nixos/manual: Fix invalid link reference in release notes

Motivation for this change
Fix NixOS manual build failure introduced by #83104.

vp2rmnc0cagd9g8yz9hw30m78g3q35fb-nixos-manual-combined.drv
manual-combined.xml:82287: element link: validity error : IDREF attribute linkend references an unknown ID "opt-nix.buildMachine"
 82283       </para>
 82284     </listitem>
 82285     <listitem>
 82286      <para>
 82287       The <link linkend="opt-nix.buildMachine">nix.buildMachine</link> option is now type-checked.
 82288       There are no functional changes, however this may require updating some configurations to use correct types for all attributes.
 82289      </para>

manual-combined.xml fails to validate

Things done

[x] Tested with nix build -f ./nixos --arg configuration '{ config = { fileSystems."/".fsType = "tmpfs"; boot.loader.systemd-boot.enable = true; };}' system`
[ ] Tested using sandboxing (nix.useSandbox on NixOS, or option sandbox in nix.conf on non-NixOS linux)
Built on platform(s)

[ ] NixOS
[ ] macOS
[ ] other Linux distributions

[ ] Tested via one or more NixOS test(s) if existing and applicable for the change (look inside nixos/tests)
[ ] Tested compilation of all pkgs that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review wip"
[ ] Tested execution of all binary files (usually in ./result/bin/)
[ ] Determined the impact on package closure size (by running nix path-info -S before and after)
[ ] Ensured that relevant documentation is up to date
[x] Fits CONTRIBUTING.md.

CC @Valodim @Ericson2314

Oop, that one slipped through. Thanks for the fix!


Allow users to update auth data during function update

Motivation
Currently, after a function is submitted there is no way to update the auth data associated with the function.
Users may want to be able to update the auth data of a function that is running.
This will especially support use cases involving initially running Pulsar without authentication enabled but then enabling authentication.  Functions need to be able to be updated to have auth data for a seamless transition
Modifications
Allow users to update the auth data when updating a function.
Have a flag to control whether to update the auth data of the function or simply keep using the existing auth data
Improve the FunctionAuthProvider interface to support this use case

rerun java8 tests

rerun java8 tests


Please provide a simple and clean example

The etcd example is too dependent and complex. This raft library stands alone and is difficult to adopt widely if it still relies on etcd.

Duplicated to https://github.com/etcd-io/raft/issues/2

Thanks @ahrtr
I am working on #2  this weekend
deep apologies for the delay, i am really back2back


Assist organize file paths

Proposal
We need a feature to reorganize Markdown files within a workspace to appropriate paths.
This feature can be implemented in three steps:

List the unmodified diff of the Markdown file paths in the workspace into an editor buffer:- path/to/markdown.md
+ path/to/markdown.md
- other/markdown2.md
+ other/markdown2.md

Edit the diff for the Markdown file paths either manually or with Copilot:- path/to/markdown.md
+ corrected/path/name.md
- other/markdown2.md
+ nicer/path/name.md

Apply the diff to the file paths.

Other information
The following considerations are necessary:

How to infer file names from file contents using Copilot?
How to organize file paths using Copilot?
How to determine an order to apply the editing diff?

I rethought the editing steps for the paths.
It has three steps: List -> Edit -> Apply.
Since it is very difficult to automate the Edit step, we will only support manual editing for now.
In the future, when automating the Edit step, we can create a command that recommends a path based on the contents of any selected path line.
What do you think?

Since it is very difficult to automate the Edit step, we will only support manual editing for now.
In the future, when automating the Edit step, we can create a command that recommends a path based on the contents of any selected path line.

I agree with the plan putting off Edit part. That's hard to create new consistent paths.

This issue has been resolved in #22


Try finding a convertor of all 3D format to the .gltf file format, as they say:
"One format to rule them all,
one format to find them,
one format to bring them all and in the darkness bind them!"
Rephrase the DOD:

Shape and colors and alpha do not change through the conversion, nor the file size.
Lines do not change
Animation does not change, not by time, camera or file size.
in case of file size change, tell Tomer