Consistent hash load balancer: allow use of hash_key

(I'm happy to do the work proposed below - but as suggested in docs and Slack I'd like to discuss the idea before I dive into code!)
Context
Istio implements its consistent hash load balancer feature with Envoy's Ring Hash load balancer. High-level context on Ring Hash: to pick a "host" (= endpoint) it will hash each candidate host's address, and it will hash something (e.g. a header, a cookie, ...) on the incoming request. Then it picks the host whose hash is closest to the request's hash.
Using Ring Hash through Istio you get to pick what part of the request gets hashed (header, cookie, ...). However, currently, you don't get to pick what gets hashed about the host - it's always the host's address. The Ring Hash load balancer does support specifying a different "hash_key" for each endpoint:

If you want something other than the host’s address to be used as the hash key (e.g. the semantic name of your host in a Kubernetes StatefulSet), then you can specify it in the "envoy.lb" LbEndpoint.Metadata e.g.:
filter_metadata:
  envoy.lb:
    hash_key: "YOUR HASH KEY"

... but currently that isn't configurable through Istio. The feature request is to change that.
Use cases
Here are some use cases that we can address by supporting Ring Hash's hash_key.
Use case 1: affinity for a group of co-deployed endpoints
We're building infrastructure where (for performance-critical reasons) we co-deploy the pods of several services (say "pod A" hosting "service A" and another "pod B" hosting "service B") using pod affinity, so that each service A runs on a node that also has a service B and vice-versa. This is performance-criticial in our setup since services A and B exchange large amounts of data, so when possible we want to avoid a network transfer between them (but if it does happen we only lose performance, not correctness).
In our application, if I make a request for service A that gets served by pod A scheduled on some node 17, I would like to have a subsequent request for service B get routed to pod B scheduled on that same node 17.
Without hash_key the Ring Hash load balancer will see "pod A" and "pod B" as unrelated hosts, and a request hash (based on e.g. a header I set) that previously landed me on "pod A" won't also get me to "pod B".
With support for hash_key we could give "pod A" and "pod B" the same hash. If we do this for all of the pods in their hash rings, any request for "service A" that goes to "pod A" will have an equivalent "service B" request go to the "pod B" on the same host. 🎉
Use case 2: Ability to issue a "return ticket".
The infrastructure we're building would also like to be able to issue a "return ticket". Imagine I've sent a request that reached service A on pod A on node 17 by random chance, possibly indirectly through some other service. We'd like "service A" to be able to return an answer with a value that, when used as the value-to-hash on the next request and when possible, routes that request to node 17 - no matter whether the request is to service A (served by pod A on node 17), or service B (served by pod B on node 17).
Note that this is more complex version of use case 1. It requires service A to be able to predict a value that, when hashed, will land you back on its own group of pods. If we are able to use the hash_key feature, service A could send back its own hash_key as that "return ticket"[*], so that the caller can then use that value in the request's header-to-hash and get sent to the group of pods that uses that hash_key. 🎉
This approach requires that service A on pod A needs to know its own hash_key, which informs the API we would use to assign a hash_key.
[*] There's a subtlety here: the ring hash load balancer won't actually hash hash_key to place a host on its ring - it will hash [hash_key]_0 through [hash_key]_200. So a "return ticket" when hash_key=foo would actually look like foo_0.
Use case 3: affinity for a specific server that can be migrated
This is what seems to have prompted the addition of hash_key to Envoy:

The core of the problem is the need to have a semantic name for Endpoints in a cluster that identify it uniquely without piggy backing things like hostname or resolved address which can still change for the same semantic endpoint. e.g.: A redis which is migrated to different clusters etc. will have a different URL/IP address but contains the same data and is expected to be used in the same way by clients. But because the consistent hashing depends on hostname/address they will be rehashed and the hash rings/table would no longer be consistent.

Use case 4: affinity for a stateful set identity
This is the use case suggested by the Envoy documentation:

If you want something other than the host’s address to be used as the hash key (e.g. the semantic name of your host in a Kubernetes StatefulSet) [...]

This would be the semantic name that StatefulSet places in the statefulset.kubernetes.io/pod-name label.
Possible implementations
Option 0: well-known label (prototype)
I've written a very simple prototype to validate that hash_key solves the use cases above.
In it, we look for a pod label lb.istio.io/consistent-hash-key and use its value to set the endpoint's hash_key for that pod.
This prototype has a few drawbacks:

The user has to manually set the label on each pod, each with a different value. When writing a Service backed by a Deployment this is not easy, since the individual pods are not part of the user's configuration.
... For example, use case 4 (stateful set affinity) would require the user to have some automation that reads the statefulset.kubernetes.io/pod-name label, and places the same value in the lb.istio.io/consistent-hash-key label. This is not the nicest API.
In this implementation Pilot doesn't pick up on changes to pods' labels until the set of endpoints in a cluster changes, which means that users can't run e.g. kubectl set label [...] lb.istio.io/consistent-hash-key=my_cool_hashkey on a running pod and have that change take effect within a well-defined period of time.

Option 1: configured label
Instead of having a well-known label name, we could have the user specify the name of the label:
// In a `DestinationRule`...
loadBalancer:
  consistentHash:
    httpHeaderName: "x-my-routing-hint"
    hashKey:                                      // NEW
      // StatefulSet affinity (use case 4) can be achieved like this:
      label: "statefulset.kubernetes.io/pod-name" // NEW

This example shows that this approach makes it much easier to solve use case 4, and possibly 3 (depending on setup). However, for use cases 1+2 the user will still have to manually assign labels to each pod, which is still complicated.
Option 2: arbitrary pod field
This would use a model similar to Kubernetes's downward API to point to a part of the pod spec that supplies the content of the hash key:
To use the node's hostname (solving use cases 1+2):
// In a `DestinationRule`...
loadBalancer:
  consistentHash:
    httpHeaderName: "x-my-routing-hint"
    hashKey:                       // NEW
      fieldPath: spec.nodeName     // NEW

To use an arbitrary label (solving use cases 3+4):
loadBalancer:
  consistentHash:
    httpHeaderName: "x-my-routing-hint"
    hashKey:                                                         // NEW
      // StatefulSet affinity (though I'm not sure this is 100% legal downward API syntax):
      fieldPath: metadata.labels[statefulset.kubernetes.io/pod-name] // NEW

Option 3: both options 1 and 2
We can also make both the fieldPath and label syntaxes legal for hash_key, treating label as an easier shorthand for metadata.labels[...].
Alternatives considered
One service per what-would-otherwise-be a hash key value.
Imagine you have a Service named foo and a Service named bar. You could have a controller (or similar code) that watches their pods get scheduled, assigns a label to each group of pods (foobar-group=12), registers matching services (foo-group-12, bar-group-12) and installs two VirtualServices (foo-virtual, bar-virtual) that look at a header (x-preferred-group=12) to choose whether to route to the unspecified service (foo, bar, when no header is set) or a group within it (foo-group-12, bar-group-12).
This has two major drawbacks:

Oof that's a lot of custom service logic to write, maintain, explain, ... - this is the sort of stuff we want Istio to make easier!
Once the request has been routed to e.g. bar-group-12, there's no easy way to fall back to bar if it turns out that e.g. the host is unhealthy.

Locality based load balancing.
You can probably do something similar to the above using locality based load balancing, possibly addressing the fallback issue, but introducing even more complexity. We'd like to not write custom controllers if we can also get two lines of Istio config!
Using EnvoyFilter to set hash_key.
With EnvoyFilter you can inject your own Envoy configuration, essentially a way to access Envoy features that can't be configured otherwise. We could use it to ADD or MERGE our own CLUSTER information that includes a hash_key.
Based on my experiments, I can only conclude that an EnvoyFilter containing endpoints information will override all existing endpoint information for that cluster (even when using MERGE). That means we need to build our EnvoyFilter with perfect information of the current endpoints, which essentially comes down to implementing endpoint/service discovery. We already have Istio for that!j 😃
Affected product area (please put an X in all that apply)
[ ] Docs
[ ] Installation
[X] Networking
[ ] Performance and Scalability
[ ] Extensions and Telemetry
[ ] Security
[ ] Test and Release
[ ] User Experience
[ ] Developer Infrastructure
Affected features (please put an X in all that apply)
[ ] Multi Cluster
[ ] Virtual Machine
[ ] Multi Control Plane
Additional context
I'll be happy to do the work required to implement any of the above proposals. I personally favor proposal 3. I'm also delighted if others have proposals that may work even better!
This will be my first Istio contribution and I would love some pointers to the appropriate parts of the code that I should expect to be modifying, as well as pointers to any unit tests that I can take inspiration from when writing tests for this behavior.

Will need to digest the rest, but my concern with option (2) is it puts a huge burden on control plane in terms of info it needs about each pod. Today we just need labels, service account, etc - with this approach we would need the full spec+status. Even the current set of info needed is causing issues for us.

Will need to digest the rest, but my concern with option (2) is it puts a huge burden on control plane in terms of info it needs about each pod. Today we just need labels, service account, etc - with this approach we would need the full spec+status. Even the current set of info needed is causing issues for us.

I see! Seems like it would be a big haul to implement then too! We could go for option (1) for the time being - it changes all of the use cases from "practically impossible" to either "easy" (cases 3+4) or "can work with some custom effort" (cases 1+2), which would be a big step forward. It also doesn't limit us - the API could still expand in the future.

Suggested architecture in the meeting:

We current have Service A and B co-deployed. Add a Gateway to this co-deployment, so for each node with A/B we also have a Gateway.
Create a VirtualService to ensure all traffic to A/B go to the gateway instead (or some other mechanism to get traffic there)
Setup locality LB with failoverPriority (https://istio.io/latest/docs/reference/config/networking/destination-rule/#LocalityLoadBalancerSetting) for the Gateway -> A/B to ensure same-node is preferred. Since we co-deploy them this should ~always be same-node
Setup consistent hashing for client -> Gateway; this works as-is today since its just a single pair of client,server.

Does Istio currently provides way to set hash_key with pod's name or pod labels?
I also need this option for my use case.
I have configured pod to have two different ports for different purposes (eg: 11101 for sdk port, 11103 for admin port). And I want "pod affinity" for incoming requests by two different ports(eg: sdk requests going to 11101 and admin requests going to 11103 should be routed to same pod).
I thought I can solve this issue by setting pod's name or label as hash_key, so that two different requests pointing to two different ports can route to same pod.
If there is any other way to solve this issue, please let me know.


Adds RouteEntry::requestHeaderTransforms.

This new API works exactly the same as ResponseEntry::responseHeaderTransforms (see source/docs/response_header_transforms.md) except it gets transforms for request headers.
Signed-off-by: Ming Zhou<EMAIL_ADDRESS>
Commit Message: Adds RouteEntry::requestHeaderTransforms.
Additional Description: This new API works exactly the same as ResponseEntry::responseHeaderTransforms (see source/docs/response_header_transforms.md) except it gets transforms for request headers.
Risk Level: Low
Testing: New unit tests added in test/common/router/config_impl_test.cc.
Docs Changes: response_header_transforms.md is changed to header_transforms.md
Release Notes: Adds RouteEntry::requestHeaderTransforms to access request header transforms which were applied or will be applied by RouteEntry::finalizeRequestHeaders.
Platform Specific Features: N/A
[Optional Fixes #Issue]: https://github.com/envoyproxy/envoy/issues/19165

/assign @yanavlasov

LGTM, format needs fixing
/wait

LGTM, format needs fixing
/wait

Done. Thanks.

Looks great, now it is efficient and no no loss of readability. Just one minor comment.
/wait

Thanks for this great work. /lgtm cc @yanavlasov


Crash information is sent again after every startup

Scenario:
A user has a crash with my application. it is successfully reported by Sentry. The crash is fixed on the next application release. On the first application run after the upgrade, the same crash is reported again (while it did not occur again). And worse, the reported software version is the new one. And this occurs at every software upgrade (on both Android and iOS)
I am using:

react-native 0.44.3
react-native_sentry 0.14.5

So you are saying reports are sent twice?
Because I'm not sure why an upgrade to your app should retrigger sending the same report again.
Are you using CodePush?

@vincejah I just fixed an issue that could be related to this.
Can you upgrade to 0.14.3 and see if it still occurs, you sounded like you can reproduce it easily.

@HazAT it seems to have fixed the issue, but switching from 0.14.5 to 0.14.13 make native crash reporting not working (captureMessage and captureException are ok though)

@vincejah 0.14.14 should address this.
Sorry for the inconvenience and thx for helping, I am currently looking into adding automated end-to-end tests so this does not happen anymore.

@HazAT triggering a native crash with 0.14.14 prevents the application from exiting and crash report is still not sent

I've reverted the changes, I am working on it want to get tests running first.
I will keep you posted. 0.14.15 reverted the changes.

I've just released 0.15.0 which has tests for this issue. Please upgrade and report if you are still having trouble with this.

@HazAT
I have upgraded to v0.17.1 and I still get the issue. What I noticed is that at each application boot, it resends the same event (with different event_id though). Does it mean sentry-buffered-events is not properly cleaned after Raven sends an event?
You will see the codepush is installed but it is not used.
Here is my stacktrace:
08-18 11:16:58.923 23247 23280 D io.sentry.android.AndroidSentryClientFactory: Construction of Android Sentry.
08-18 11:16:58.924 23247 23279 I ReactNativeJS: 'react-native-sentry (setDataCallback):', [Function]
08-18 11:16:58.925 23247 23280 D io.sentry.android.AndroidSentryClientFactory: Sentry init with ctx='com.vtoupet.smartmixin.MainApplication@83e06d6' and dsn='Dsn{uri=https://sentry.io/}'
08-18 11:16:58.930 23247 23279 I ReactNativeJS: Running application "SmartMixin" with appParams: {"initialProps":{},"rootTag":1}. __DEV__ === false, development-level warning are OFF, performance optimizations are ON
08-18 11:16:58.974 23247 23280 D io.sentry.android.AndroidSentryClientFactory: Using buffer dir: /data/user/0/com.vtoupet.smartmixin/cache/sentry-buffered-events
08-18 11:16:58.986 23247 23280 I react-native-sentry: startWithDsnString<EMAIL_ADDRESS>08-18 11:16:58.987 23247 23280 I react-native-sentry: captureEvent '{ NativeMap: {"level":"log","category":"console","message":"react-native-sentry (setDataCallback): function (e) {console.log(e);var t=s.store.getState();return e.extra.app=t.app,e.extra.auth=t.auth,e.extra.user=t.user,e.extra.services=t.services,e;}","timestamp":1503047818.921} }'
08-18 11:16:58.991 23247 23279 I ReactNativeJS: [CodePush] Sync already in progress.
08-18 11:16:58.994 23247 23280 I react-native-sentry: captureEvent '{ NativeMap: {"level":"log","category":"console","message":"Running application \"SmartMixin\" with appParams: {\"initialProps\":{},\"rootTag\":1}. __DEV__ === false, development-level warning are OFF, performance optimizations are ON","timestamp":1503047818.93} }'
08-18 11:16:59.004 23247 23280 W unknown:ViewManagerPropertyUpdater: Could not find generated setter for class com.facebook.react.views.text.ReactVirtualTextShadowNode
08-18 11:16:59.024 23247 23280 I react-native-sentry: captureEvent '{ NativeMap: {"level":"log","category":"console","message":"[CodePush] Sync already in progress.","timestamp":1503047818.991} }'
08-18 11:16:59.085 23247 23279 D ReactNativeJS: 'Raven about to send:', { project: '164894',
08-18 11:16:59.085 23247 23279 D ReactNativeJS:   logger: 'javascript',
08-18 11:16:59.085 23247 23279 D ReactNativeJS:   platform: 'javascript',
08-18 11:16:59.085 23247 23279 D ReactNativeJS:   request: {},
08-18 11:16:59.085 23247 23279 D ReactNativeJS:   exception:
08-18 11:16:59.085 23247 23279 D ReactNativeJS:    { values:
08-18 11:16:59.085 23247 23279 D ReactNativeJS:       [ { type: 'TypeError',
08-18 11:16:59.085 23247 23279 D ReactNativeJS:           value: 'undefined is not a function (evaluating \'e.props.unknownProp()\')',
08-18 11:16:59.085 23247 23279 D ReactNativeJS:           stacktrace:
08-18 11:16:59.085 23247 23279 D ReactNativeJS:            { frames:
08-18 11:16:59.085 23247 23279 D ReactNativeJS:               [ { filename: '[native code]',
08-18 11:16:59.085 23247 23279 D ReactNativeJS:                   lineno: null,
08-18 11:16:59.085 23247 23279 D ReactNativeJS:                   colno: null,
08-18 11:16:59.085 23247 23279 D ReactNativeJS:                   function: '?',
08-18 11:16:59.085 23247 23279 D ReactNativeJS:                   in_app: true },
08-18 11:16:59.085 23247 23279 D ReactNativeJS:                 { filename: '/data/user/0/com.vtoupet.smartmixin/files/CodePush/fcee790bbc197889231a96be42defc895946cdec2ddb5ca21d9a97df81073a7e/android/index.android.bundle',
08-18 11:16:59.085 23247 23279 D ReactNativeJS:                   lineno: 338,
08-18 11:16:59.085 23247 23279 D ReactNativeJS:                   colno: 925,
08-18 11:16:59.085 23247 23279 D ReactNativeJS:                   function: 'value',
08-18 11:16:59.085 23247 23279 D ReactNativeJS:                   in_app: true },
08-18 11:16:59.085 23247 23279 D ReactNativeJS:                 { filename: '/data/user/0/com.vtoupet.smartmixin/files/CodePush/fcee790bbc197889231a96be42defc895946cdec2ddb5ca21d9a97df81073a7e/android/index.android.bundle',
08-18 11:16:59.085 23247 23279 D ReactNativeJS:                   lineno: 338,
08-18 11:16:59.085 23247 23279 D ReactNativeJS:                   colno: 2413,
08-18 11:16:59.085 23247 23279 D ReactNativeJS:                   function: 'value',
08-18 11:16:59.085 23247 23279 D ReactNativeJS:                   in_app: true },
08-18 11:16:59.085 23247 23279 D ReactNativeJS:                 { filename: '/data/user/0/com.vtoupet.smartmixin/files/CodePush/fcee790bbc197889231a96be42defc895946cdec2ddb5ca21d9a97df81073a7e/android/index.android.bundle',
08-18 11:16:59.085 23247 23279 D ReactNativeJS:                   lineno: 338,
08-18 11:16:59.085 23247 23279 D ReactNativeJS:                   colno: 953,
08-18 11:16:59.085 23247 23279 D ReactNativeJS:                   function: '?',
08-18 11:16:59.085 23247 23279 D ReactNativeJS:                   in_app: true },
08-18 11:16:59.085 23247 23279 D ReactNativeJS:                 { filename: '/data/user/0/com.vtoupet.smartmixin/files/CodePush/fcee790bbc197889231a96be42defc895946cdec2ddb5ca21d9a97df81073a7e/android/index.android.bundle',
08-18 11:16:59.085 23247 23279 D ReactNativeJS:                   lineno: 338,
08-18 11:16:59.085 23247 23279 D ReactNativeJS:                   colno: 3012,
08-18 11:16:59.085 23247 23279 D ReactNativeJS:                   function: 'value',
08-18 11:16:59.085 23247 23279 D ReactNativeJS:                   in_app: true },
08-18 11:16:59.085 23247 23279 D ReactNativeJS:                 { filename: '/data/user/0/com.vtoupet.smartmixin/files/CodePush/fcee790bbc197889231a96be42defc895946cdec2ddb5ca21d9a97df81073a7e/android/index.android.bundle',
08-18 11:16:59.085 23247 23279 D ReactNativeJS:                   lineno: 465,
08-18 11:16:59.085 23247 23279 D ReactNativeJS:                   colno: 921,
08-18 11:16:59.085 23247 23279 D ReactNativeJS:                   function: 'receiveTouches',
08-18 11:16:59.085 23247 23279 D ReactNativeJS:                   in_app: true },
08-18 11:16:59.085 23247 23279 D ReactNativeJS:                 { filename: '/data/user/0/com.vtoupet.smartmixin/files/CodePush/fcee790bbc197889231a96be42defc895946cdec2ddb5ca21d9a97df81073a7e/android/index.android.bundle',
08-18 11:16:59.085 23247 23279 D ReactNativeJS:                   lineno: 465,
08-18 11:16:59.085 23247 23279 D ReactNativeJS:                   colno: 547,
08-18 11:16:59.085 23247 23279 D ReactNativeJS:                   function: '_receiveRootNodeIDEvent',
08-18 11:16:59.085 23247 23279 D ReactNativeJS:                   in_app: true },
08-18 11:16:59.085 23247 23279 D ReactNativeJS:                 { filename: '/data/user/0/com.vtoupet.smartmixin/files/CodePush/fcee790bbc197889231a96be42defc895946cdec2ddb5ca21d9a97df81073a7e/android/index.android.bundle',
08-18 11:16:59.085 23247 23279 D ReactNativeJS:                   lineno: 402,
08-18 11:16:59.085 23247 23279 D ReactNativeJS:                   colno: 150,
08-18 11:16:59.085 23247 23279 D ReactNativeJS:                   function: 'u',
08-18 11:16:59.085 23247 23279 D ReactNativeJS:                   in_app: true },
08-18 11:16:59.085 23247 23279 D ReactNativeJS:                 { filename: '/data/user/0/com.vtoupet.smartmixin/files/CodePush/fcee790bbc197889231a96be42defc895946cdec2ddb5ca21d9a97df81073a7e/android/index.android.bundle',
08-18 11:16:59.085 23247 23279 D ReactNativeJS:                   lineno: 402,
08-18 11:16:59.085 23247 23279 D ReactNativeJS:                   colno: 90,
08-18 11:16:59.085 23247 23279 D ReactNativeJS:                   function: 'i',
08-18 11:16:59.085 23247 23279 D ReactNativeJS:                   in_app: true },
08-18 11:16:59.085 23247 23279 D ReactNativeJS:                 { filename: '/data/user/0/com.vtoupet.smartmixin/files/CodePush/fcee790bbc197889231a96be42defc895946cdec2ddb5ca21d9a97df81073a7e/android/index.android.bundle',
08-18 11:16:59.085 23247 23279 D ReactNativeJS:                   lineno: 506,
08-18 11:16:59.085 23247 23279 D ReactNativeJS:                   colno: 358,
08-18 11:16:59.085 23247 23279 D ReactNativeJS:                   function: 'i',
08-18 11:16:59.085 23247 23279 D ReactNativeJS:                   in_app: true },
08-18 11:16:59.085 23247 23279 D ReactNativeJS:                 { filename: '/data/user/0/com.vtoupet.smartmixin/files/CodePush/fcee790bbc197889231a96be42defc895946cdec2ddb5ca21d9a97df81073a7e/android/index.android.bundle',
08-18 11:16:59.085 23247 23279 D ReactNativeJS:                   lineno: 518,
08-18 11:16:59.085 23247 23279 D ReactNativeJS:                   colno: 465,
08-18 11:16:59.085 23247 23279 D ReactNativeJS:                   function: 'batchedUpdates',
08-18 11:16:59.085 23247 23279 D ReactNativeJS:                   in_app: true },
08-18 11:16:59.085 23247 23279 D ReactNativeJS:                 { filename: '/data/user/0/com.vtoupet.smartmixin/files/CodePush/fcee790bbc197889231a96be42defc895946cdec2ddb5ca21d9a97df81073a7e/android/index.android.bundle',
08-18 11:16:59.085 23247 23279 D ReactNativeJS:                   lineno: 507,
08-18 11:16:59.085 23247 23279 D ReactNativeJS:                   colno: 597,
08-18 11:16:59.085 23247 23279 D ReactNativeJS:                   function: 'perform',
08-18 11:16:59.085 23247 23279 D ReactNativeJS:                   in_app: true },
08-18 11:16:59.085 23247 23279 D ReactNativeJS:                 { filename: '/data/user/0/com.vtoupet.smartmixin/files/CodePush/fcee790bbc197889231a96be42defc895946cdec2ddb5ca21d9a97df81073a7e/android/index.android.
08-18 11:16:59.086 23247 23280 I react-native-sentry: captureEvent '{ NativeMap: {"level":"error","event_id":"6cb4ef5265464a1d920e9b363d229595","message":"TypeError: undefined is not a function (evaluating 'e.props.unknownProp()')","category":"sentry","timestamp":1503047819.085} }'
08-18 11:16:59.139 23247 23280 D io.sentry.android.event.helper.AndroidEventBuilderHelper: Proguard UUIDs file not found.
08-18 11:16:59.240 23247 23280 I react-native-sentry: addExtra '__sentry_version' 'codepush:v7'
08-18 11:16:59.241 23247 23279 I ReactNativeJS: [CodePush] Checking for update.
08-18 11:16:59.243 23247 23280 I react-native-sentry: captureEvent '{ NativeMap: {"level":"log","category":"console","message":"[CodePush] Checking for update.","timestamp":1503047819.24} }'
08-18 11:16:59.285 23247 23280 I react-native-sentry: captureEvent '{ NativeMap: {"category":"fetch","type":"http","data":{"status_code":null,"url":"https://codepush.azurewebsites.net/updateCheck?deploymentKey=RLGAz3loD9CxGf0YaU0qBrFZLHCF8f04da60-90f7-443a-99a6-75aa62d73bad&appVersion=0.10.12&packageHash=fcee790bbc197889231a96be42defc895946cdec2ddb5ca21d9a97df81073a7e&isCompanion=&label=v7&clientUniqueId=87a9a7c0fd465e70","method":"GET"},"timestamp":1503047819.28} }'
08-18 11:16:59.337 23247 23303 I cr_LibraryLoader: Expected native library version number "61.0.3163.51", actual native library version number "61.0.3163.51"
08-18 11:17:00.001  1387  1783 V AlarmManager: Triggering alarm #0: 3 when =1907031705 package=androidoperation =*alarm*:android.intent.action.TIME_TICK
08-18 11:17:00.019  1916  1982 I ClockCtrl:  schedule next: 59981
08-18 11:17:00.019  1916  1982 I KeyguardUpdateMonitor: onTimeChanged
08-18 11:17:00.020  1916  1916 I KeyguardIndication: onTimeChanged
08-18 11:17:00.022  1916  1916 I Clock   : onTimeChanged
08-18 11:17:00.036  1916  1916 I DateView: onTimeChanged
08-18 11:17:00.163 23247 23280 I react-native-sentry: captureEvent '{ NativeMap: {"category":"xhr","type":"http","data":{"status_code":200,"url":"https://codepush.azurewebsites.net/updateCheck?deploymentKey=RLGAz3loD9CxGf0YaU0qBrFZLHCF8f04da60-90f7-443a-99a6-75aa62d73bad&appVersion=0.10.12&packageHash=fcee790bbc197889231a96be42defc895946cdec2ddb5ca21d9a97df81073a7e&isCompanion=&label=v7&clientUniqueId=87a9a7c0fd465e70","method":"GET"},"timestamp":1503047820.16} }'
08-18 11:17:00.186 23247 23279 I ReactNativeJS: [CodePush] App is up to date.
08-18 11:17:00.189 23247 23280 I react-native-sentry: captureEvent '{ NativeMap: {"level":"log","category":"console","message":"[CodePush] App is up to date.","timestamp":1503047820.186} }'code cache capacity to 128KB
08-18 11:17:02.808 23247 23279 I ReactNativeJS: DashboardScreen
08-18 11:17:02.810 23247 23280 I react-native-sentry: captureEvent '{ NativeMap: {"level":"log","category":"console","message":"DashboardScreen","timestamp":1503047822.807} }'
08-18 11:17:02.820 23247 23279 I ReactNativeJS: DashboardOutdoorContainer
08-18 11:17:02.825 23247 23280 I react-native-sentry: captureEvent '{ NativeMap: {"level":"log","category":"console","message":"DashboardOutdoorContainer","timestamp":1503047822.819} }'
08-18 11:17:02.825 23247 23247 V BoostFramework: BoostFramework() : mPerf = com.qualcomm.qti.Performance@e777eed
08-18 11:17:02.826 23247 23247 V BoostFramework: BoostFramework() : mPerf = com.qualcomm.qti.Performance@9db7122
08-18 11:17:02.836 23247 23279 I ReactNativeJS: NaModule1CardContainer
08-18 11:17:02.846 23247 23280 I react-native-sentry: captureEvent '{ NativeMap: {"level":"log","category":"console","message":"NaModule1CardContainer","timestamp":1503047822.835} }'
08-18 11:17:02.885 23247 23279 I ReactNativeJS: DashboardIndoorContainer
08-18 11:17:02.891 23247 23279 I ReactNativeJS: NaMainCardContainer
08-18 11:17:02.907 23247 23280 I react-native-sentry: captureEvent '{ NativeMap: {"level":"log","category":"console","message":"DashboardIndoorContainer","timestamp":1503047822.885} }'
08-18 11:17:02.915 23247 23280 I react-native-sentry: captureEvent '{ NativeMap: {"level":"log","category":"console","message":"NaMainCardContainer","timestamp":1503047822.891} }'
08-18 11:17:02.922 23247 23279 I ReactNativeJS: DashboardDropdownContainer
08-18 11:17:02.953 12716 23241 E ctxmgr  : [ProducerActiveIntervalImpl]closeActiveInterval: Error: ongoing, trying to close
08-18 11:17:02.954 23247 23280 I react-native-sentry: captureEvent '{ NativeMap: {"level":"log","category":"console","message":"DashboardDropdownContainer","timestamp":1503047822.922} }'
08-18 11:17:02.979 23247 23279 I ReactNativeJS: StationDropdownButton
08-18 11:17:02.982 23247 23280 I react-native-sentry: captureEvent '{ NativeMap: {"level":"log","category":"console","message":"StationDropdownButton","timestamp":1503047822.979} }'

@vincejah This should be resolved.
Could it be that your code really has this error and it will always be thrown on startup?

@HazAT my code cannot have this error at startup as one of them is a generated crash that is triggered when clicking on a button.
I'll test with the latest release.

@HazAT The problem occurs again when switching from 0.21.2 to 0.29.0.

@vincejah can you upgrade to 0.30.0 please.

@HazAT 0.30.0 is not proposed by npm (latest available build on npm is 0.29.0)

@vincejah please try again

@HazAT It does not occur on 0.30.0. Thanks

I'm encountering this on our Android app as well--several fixed issues are getting re-reported at startup even across different builds.  Would love a fix/workaround for this as it's eating a lot of our events!

Hi! It seems like we're also affected by this. Unfortunately it makes it really confusing to check if a bug has been fixed or not. This almost renders Sentry useless for us...

Hey, sorry it was so quiet around this issue.
I will take a look at it again today.

Can you guys send me links to your events that got sent twice please?

Sure! https://sentry.io/drops-t0/drops-react-native/issues/408265228/ << this was an exception we have thrown manually. It has been removed from the codebase at least 3 days ago - around version 3.11 - but it's still showing up in 3.15. We have disabled codepush in order to verify that this is not coming from there.

@HazAT : I can see there's an open PR for this. any ETA for merging it in? we're going live soon (within 24 hours - although soft launching), and it'd be great to get accurate crash reports, otherwise we don't know where we're standing.

@itchingpixels So I am having a hard time reproducing this.
Are you able to test it easily?
If so you can try it by adding this to your package.json
"react-native-sentry": "https://github.com/getsentry/react-native-sentry#bugfix/android-send-event-twice"
and run yarn install / npm install
would love to get feedback

sure, happy to, will roll this out tonight

will be releasing this in a few hours. will report back later today if we can still reproduce this issue with the latest build! it'll be actually quite easy to verify, we'll have a result in 24 hours.

Hi @HazAT:
A release build fails on the CI & locally (so it's not connected to cached dependencies) with the following error:
FAILURE: Build failed with an exception.

What went wrong:
Could not list contents of '/Users/mark/Dev/drops-react-native/node_modules/react-native-sentry/appium/example'. Couldn't follow symbolic link.

Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.

BUILD FAILED
this is when using your branch. Do you have any advice?

@itchingpixels Damn it, ok npm is not considering .npmignore when installing directly from a branch.
I will check if I can make a prerelease or something, give me a few minutes.

@itchingpixels
This is a local npm pack of the branch uploaded to my dropbox.
You can add this or download it and upload it somewhere else ...
"react-native-sentry": "https://www.dropbox.com/s/edmziaethn160w9/react-native-sentry-0.31.0.tgz?dl=1"
Please do not use this for a prod release.

You mean we should upload it to somewhere we control it before using it in prod?

First this yes,
and I mean you should try it before releasing it.

We've rolled it out to our beta country. will report back later when we have a meaningful amount of data! It'll take longer, since our beta country has a substantially smaller userbase.

I'm around 90% certain that this has helped. By Monday, we can say with 99.9%.

Ok, that's good news 👍
Let's wait until monday until I make a release

I can confirm with 99% confidence that this works - none of the already fixed crashes appear with the latest version we've published!

I've just released version 0.32.0 which includes the fix.
Please check the migration guide in the release section since we have a breaking change in there.


Lists

T.18183022
List is a collection of items from one module, it can be a list of own items of any other items user have access too. It should replace existing "Favourite" functionality, where user could add items without placing it into particular list. So lists objects system need to be created in the system and implemented in the following modules: Posts, Photos, Albums(for images only), Videos, Files, Discussions, Review, Glossary, Market, Polls, Groups, Events, Organizations,
Upon clicking on add to list button, it should be popup window with manage lists interface, similar to this but with UNA controls and standard privacy groups:

With create new form:

Image for adding to list should be folder-plus from FontAwesome.
Block with lists should look like a block where list of items (as Gallery View) goes under List name:

It should be paginate if number of lists is more than N (add setting). This block is public by default, so owner and other users can see it.
List name should be a link to a separate page with list of items in just one list.
Separate page with all items in a list should have block with some controls which shows info about list (author, when updated, number of items, privacy settings), ability to share (if list is public), edit & delete the list.
It should be 'add to list' ACL action which is enabled for all by default.
Some features for the future improvements

separate setting in each list for sorting (date added to list, manual, a-z, etc)
ability to manually reorder lists and items in lists using drag&drop

@romanlesnikov fix is needed:
Database query error: Table 'bx_groups_favorites_lists' already exists


[SPARK-35169][SQL] Fix wrong result of min ANSI interval division by -1

What changes were proposed in this pull request?
Before this patch
scala> Seq(java.time.Period.ofMonths(Int.MinValue)).toDF("i").select($"i" / -1).show(false)
+-------------------------------------+
|(i / -1)                             |
+-------------------------------------+
|INTERVAL '-178956970-8' YEAR TO MONTH|
+-------------------------------------+
scala> Seq(java.time.Duration.of(Long.MinValue, java.time.temporal.ChronoUnit.MICROS)).toDF("i").select($"i" / -1).show(false)
+---------------------------------------------------+
|(i / -1)                                           |
+---------------------------------------------------+
|INTERVAL '-106751991 04:00:54.775808' DAY TO SECOND|
+---------------------------------------------------+

Wrong result of min ANSI interval division by -1, this pr fix this
Why are the changes needed?
Fix bug
Does this PR introduce any user-facing change?
No
How was this patch tested?
Added UT

FYI @MaxGekk

Test build #137859 has started for PR 32314 at commit 46c6d89.

Kubernetes integration test starting
URL: https://amplab.cs.berkeley.edu/jenkins/job/SparkPullRequestBuilder-K8s/42389/

Kubernetes integration test status failure
URL: https://amplab.cs.berkeley.edu/jenkins/job/SparkPullRequestBuilder-K8s/42389/

Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder-K8s/42389/

Test build #137859 has finished for PR 32314 at commit 46c6d89.

This patch fails Spark unit tests.
This patch merges cleanly.
This patch adds no public classes.

Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/137859/

Test build #137952 has started for PR 32314 at commit 68ae5a4.

Kubernetes integration test starting
URL: https://amplab.cs.berkeley.edu/jenkins/job/SparkPullRequestBuilder-K8s/42472/

Kubernetes integration test status failure
URL: https://amplab.cs.berkeley.edu/jenkins/job/SparkPullRequestBuilder-K8s/42472/

Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder-K8s/42472/

Test build #137953 has started for PR 32314 at commit 29f237a.

Test build #137952 has finished for PR 32314 at commit 68ae5a4.

This patch fails Spark unit tests.
This patch merges cleanly.
This patch adds no public classes.

Kubernetes integration test starting
URL: https://amplab.cs.berkeley.edu/jenkins/job/SparkPullRequestBuilder-K8s/42473/

Kubernetes integration test status failure
URL: https://amplab.cs.berkeley.edu/jenkins/job/SparkPullRequestBuilder-K8s/42473/

Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder-K8s/42473/

Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/137952/

Test build #137953 has finished for PR 32314 at commit 29f237a.

This patch fails Spark unit tests.
This patch merges cleanly.
This patch adds no public classes.

Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/137953/

Test build #137961 has started for PR 32314 at commit 447fa15.

Kubernetes integration test starting
URL: https://amplab.cs.berkeley.edu/jenkins/job/SparkPullRequestBuilder-K8s/42482/

Kubernetes integration test status failure
URL: https://amplab.cs.berkeley.edu/jenkins/job/SparkPullRequestBuilder-K8s/42482/

Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder-K8s/42482/

Test build #137961 has finished for PR 32314 at commit 447fa15.

This patch passes all tests.
This patch merges cleanly.
This patch adds no public classes.

Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/137961/

Test build #137980 has started for PR 32314 at commit 8363249.

Kubernetes integration test starting
URL: https://amplab.cs.berkeley.edu/jenkins/job/SparkPullRequestBuilder-K8s/42500/

Kubernetes integration test status failure
URL: https://amplab.cs.berkeley.edu/jenkins/job/SparkPullRequestBuilder-K8s/42500/

Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder-K8s/42500/

Test build #137986 has started for PR 32314 at commit 161bb7f.

The last commit changes indentation only. I'm merging it to master, thanks!

Kubernetes integration test unable to build dist.
exiting with code: 1
URL: https://amplab.cs.berkeley.edu/jenkins/job/SparkPullRequestBuilder-K8s/42506/

Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder-K8s/42506/

Test build #137980 has finished for PR 32314 at commit 8363249.

This patch passes all tests.
This patch merges cleanly.
This patch adds no public classes.

Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/137980/

Test build #137986 has finished for PR 32314 at commit 161bb7f.

This patch passes all tests.
This patch merges cleanly.
This patch adds no public classes.

Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/137986/


CASMINST-3524: Clarify NCN password change procedure

Summary and Scope
Clarify the NCN password change procedure by splitting the
Vault password update into a different section than the
CFS session creation sections (either standalone password changes
or through NCN personalization).
Add pod shell prompts to the commands run in a pod to set NCN
passwords in Vault.
Issues and Related PRs

Resolves CASMINST-3524

Testing
N/A
Risks and Mitigations
N/A

/backport main


JS: add DataFlow::getEnclosingExpr to get Expr for potentially reflective calls

Based on previous discussion.
Suggestions for the name of the new method are welcome.
I evaluated onUseOfReturnlessFunction, which is now the only query using this new method.
Evaluation shows no performance degradation, and removal of a whole bunch of FP's.
When I made the UseOfReturnlessFunction query I think I found the benchmarks I tested on using an initial query that had exists(call.asExpr()), and I therefore missed the benchmarks with lots of reflective calls.

Apologies, I'm a bit late to this discussion, but I would actually favour just extending asExpr() to cover this as suggested by @asger-semmle here. I'm not convinced that it's a bigger problem for asExpr() to be non-injective than to have two subtly different predicates that do the same thing most of the time. Do we have an example where we rely on the current semantics of asExpr()?

I would actually favour just extending asExpr() to cover this.

I definitely seems better to have one method instead of two.
Doing it in asExpr() will definitely affect some results and requires a thorough evaluation.
I just started such an evaluation.

Fixes #2288.

As pr. discussion: Lets land this, and then I'll do general changes to asExpr() in a followup PR once my evaluation of it finishes.

So I did a pretty big evaluation.
I compared a version where just UseOfReturnlessFunction used the new asExpr() method, and a version where the asExpr() is changed for everyone.
There is no change in results, but there is a nasty decrease in performance.

but there is a nasty decrease in performance.

That's a shame, but hopefully something we can fix. It does seem like the right thing to do.


fix: update official invalid example to match tutorial

making sure invalid example match the one mentioned in tutorial
https://v3.asyncapi.com/docs/tutorials/studio-document-validation
marked as fix as I kinda assume it will be automatically released once I do it

/rtm


Nested dictionary values resolves incorrectly

Description
Starting from version 0.9.3 nested dictionary values resolves incorrectly in case dictionary key starts from uppercase letter or underscore.
For example if we add  to config variable named 'example' with dictionary value:
    var config = {
        example: {
            'Function': {}
        }
    }

and initialize config.example.Function = read(<some js file>)
it will resolves into string "#function"
Preconditions
Java should be installed and setup
Steps to reproduce

Open your CLI
git clone https://github.com/pavlogs/karate-issue-2
cd ./karate-issue/
Download standalone jar https://dl.bintray.com/ptrthomas/karate/karate-0.9.4.jar
java -jar karate-0.9.4.jar issues.feature

Actual result
Two failed features
issues: issues.feature:8 - path: $.Reusable, actual: '#function', expected: function() {
    return "SUCCESS";
}, reason: actual value is not map-like
issues.feature:12 - path: $._reusable, actual: '#function', expected: function() {
    return "SUCCESS";
}, reason: actual value is not map-like

Expected result
No failed features
Note
Also reproduces for reusable features and java classes

@pavlogs okay this has nothing to do with uppercase / lowercase and this did confuse me initially.
the thing is we did introduce some restrictions on what you can do in karate-config.js - which is explained in detail here: https://github.com/intuit/karate/tree/develop#restrictions-on-global-variables
so if you do this:
function fn() {
    var config = {};
    var service = {};
    service.Reusable = read('reusable.js');
    service._reusable = read('reusable.js');
    config.service = karate.toMap(service);
    return config;
}

this solves your problem ! hope that makes sense.

Thank you for reference to documentation, it was useful. :thumbsup:
As far as I can see method toMap() was introduced in ScriptBridge class with 0.9.5RC1. I will consider moving to this version.

@pavlogs yes, also RC3 is available. it will help us if you test your existing suites with that.


fix: do not re-crawl unless necessary

Related to the indirect refs bundle optimization: https://github.com/APIDevTools/json-schema-ref-parser/pull/62
For large specifications, the current implementation ends up re-crawling a LOT. So much so that for one customer's spec (which is 48k lines, with inline $refs only, no remote ones), it takes around 20s to bundle.

After a brief investigation, it seems like we might not need to re-crawl if we're just updating the inventoried $ref to be a more direct one?
The tests still pass, but I'm not 100% sure on this and so would appreciate some 👀.
For the specification in question, here's the before and after:

So basically an over 20x increase in performance!

@JamesMessinger congratulations mate!

I just had a baby, so I've been AFK for a few weeks. 👶🍼

Congrats! Very happy for you, hope all is well :).

Thanks guys!  BTW... This PR has now been released in version 9.0.2


resource volterra_alert_policy - Field spec.routes.matcher.custom.alertlabel.matcher_type should be not nil

The terraform resource "volterra_alert_policy" failing when configuring "alert policy -> routes -> custom" as part of the code depicted below:
resource volterra_alert_policy:
   custom {
        alertlabel  {
            name  = "env"
            value {
                exact_match = "${var.environment}"
            }
        }
        severity  {
            exact_match = "CRITICAL"
        }
    }

terraform plan is ok:
  + routes {
      + send = true

      + custom {
          + alertlabel {
              + name = "env"

              + value {
                  + exact_match = "edu"
                }
            }
          + severity {
              + exact_match = "CRITICAL"
            }
        }

      + notification_parameters {
          + default         = true
          + group_interval  = "10h"
          + group_wait      = "5m"
          + repeat_interval = "4h"
        }
    }
}

but terraform apply fails.
It looks like bug in go code in validation which does not match the required schema.

Ack. I will get back to you on this.

Hi @abhinavgrover15, have you found anything in this matter? Do you need any help or inputs?

@abhinavgrover15 I will close this issue because I think I misunderstood alertlabel attribute. I used it inproperly. thanks


Can’t login as user with LightDM

I can’t login as user
I start my laptop running NixOS 22.05 with LightDM and XMonad. When I want to login as normal user LightDM won’t let me login
Steps To Reproduce
Steps to reproduce the behavior:

Boot
login as root
$> lightdm
login as user
enter password
screen turn black
login prompt appear again

It works fine with root but not with the user.
Output from journalctl:

if you remove lightdm does xmonad successfully start just using startx with your xinit setup? Looks to me like your xmonad setup is broken.
Have you ran xmonad before? I've seen several people want to instantly swap to xmonad while also new to nixos and having too many new issues at the same time.
Also without any configuration it's very difficult to help

No I can't use startx. startx brings also errors but it never worked since beginning.
I use XMonad since two years now without any problems until now.
Here is my configurations.nix:
# Edit this configuration file to define what should be installed on
# your system.  Help is available in the configuration.nix(5) man page
# and in the NixOS manual (accessible by running ‘nixos-help’).

{ config, pkgs, ... }:

{
  imports =
    [ # Include the results of the hardware scan.
      ./hardware-configuration.nix
    ];

  # Use the systemd-boot EFI boot loader.
  boot.loader.systemd-boot.enable = true;
  boot.loader.efi.canTouchEfiVariables = true;

  # Set your time zone.
  time.timeZone = "Europe/Berlin";

  # Automatic remove old unused packages
  nix.gc = {
	automatic = true;
	dates = "daily";
	options = "--delete-older-than 30d";
  };

  # Limit Bootoptions to 5
  boot.loader.systemd-boot.configurationLimit = 5;

  # Deduplicate nix-store filebase
  nix.optimise.automatic = true;

  networking.useDHCP = false;
  networking.interfaces.enp0s31f6.useDHCP = true;
  networking.interfaces.wlp4s0.useDHCP = true;
  networking.wireless.userControlled.enable = true;
  # Configure keymap in X11
  services.xserver.enable = true;
  services.xserver.layout = "de";
  services.xserver.xkbOptions = "eurosign:e";
  services.xserver.windowManager.xmonad.enable = true;
  services.xserver.windowManager.xmonad.enableContribAndExtras = true;
  services.xserver.autorun = false;

  programs.zsh.enable = true;
  # Enable sound.
  # sound.enable = true;
  # hardware.pulseaudio.enable = true;

  # Enable touchpad support (enabled default in most desktopManager).
  services.xserver.libinput.enable = true;

  # Sound
  services.jack = {
	jackd.enable = true;
	alsa.enable = false;
	loopback = {
		enable = true;
	};
  };

  # Define a user account. Don't forget to set a password with ‘passwd’.
  users.users.pho = {
     isNormalUser = true;
     extraGroups = [ "wheel" ]; # Enable ‘sudo’ for the user.
     shell = pkgs.zsh;
   };

  # FONTS
  fonts.fonts = with pkgs; [
	ibm-plex
	google-fonts
	noto-fonts
  ];

  # AUTOUPGRADE NIXOS
  system.autoUpgrade.enable = false;
  system.autoUpgrade.allowReboot = false;

  # List packages installed in system profile. To search, run:
  # $ nix search wget
  # environment.systemPackages = with pkgs; [
  #   wget vim
  #   firefox
  # ];
  system.stateVersion = "20.09"; # Did you read the comment?

}

Thanks for your help :)

hmm yeah I'm not sure then. It's quite hard to track xmonad's history since it's part of the mega haskel packages file.
Are you able to move your xmonad config and try a config that's default/minimal :shrug:

@nerdbude
Out of interest did you resolve your problem? Stop using xmonad/lightdm? Or are just looking to clean up stale issues?
:slightly_smiling_face:

No not really. I just reinstall the whole OS. Thought I destroyed some essential files within ~/
I just saw today that I never responded to this. Sorry for that

No problem at all. Shame about those files but I'm glad things are working.


Guide to Eating Ontario Fishes Mobile App

Thanks for submitting your project to be featured in the Open Leadership Zone at MozFest 2017 :sparkles:
This is open to any project in Mozilla Open Leaders round 4 -- even if you're not coming to MozFest. This process ensures that you're following open practices and will help set you up for a sustained contributor community afterwards. If you have any questions, feel free to reach out to @acabunoc or ask questions in our chat room.
Open Project Checklist :clipboard:
Your project must complete the following to be a featured on Mozilla Pulse and the Open Leadership Zone at MozFest 2017. As you complete each exercise, check off the box and comment with a link to your completed resource. This template repository is here to help you if you get stuck!

[x] Complete Open Leadership 101
[x] Provide a GitHub repository for work and discussion on your project in a comment

new to GitHub?  Here's a step-by-step guide on using the #mozfest template

[x] Create file: README.md in your project repository. This file should help newcomers understand what your project is, why it's important, and kinds of help you're looking for.
[x] Create file: LICENSE to give your project an open license, allowing for sharing and remixing.
[x] Create file: CONTRIBUTING.md so others know how they can contribute. If you'd like, you can remix this template
[x] Create file: CODE_OF_CONDUCT.md. This can be the Mozilla Community Participation Guidelines or a code of conduct of your choice
[x] Turn on your Issue Tracker and create issues to describe each task that you need help with and how a contributor can get started on that task. If you're participating in Hacktoberfest, Create a label called hacktoberfest and apply it to your issues.

Ready to be featured :tada:

[x] Fill out this form to submit your project to Mozilla Pulse. Add the tag open leadership zone.
[x] Leave a comment on this issue with the text This is ready for the Open Leadership Zone. @acabunoc will review this issue. If accepted, your project will be approved on Mozilla Pulse and featured in the Open Leadership Zone.

If you get stuck at any point, feel free to look at the project templates or reach out to your mentor or @acabunoc. We're here to help you through this process.

Hey @Monsauce ! Gentle reminder that there's only one week to MozFest :) I'd love to see you project featured in the Open Leadership Zone!

Just finished updating the GitHub repo and we have a working beta app!!!!! https://github.com/Monsauce/Open-the-North

This is ready for the Open Leadership Zone

YAY BETA APP!!! 🎉
Approved: https://www.mozillapulse.org/entry/499


raft: revise test case and fix typo

Hi,
This PR revises the case case and fixes a typo in #7331

lgtm


update envoyproxy/go-control-plane SHA

[APPROVALNOTIFIER] This PR is NOT APPROVED
This pull-request has been approved by:
To fully approve this pull request, please assign additional approvers.
We suggest the following additional approver: geeknoid
If they are not already assigned, you can assign the PR to them by writing /assign @geeknoid in a comment when ready.
The full list of commands accepted by this bot can be found here.
The pull request process is described here

Needs approval from an approver in each of these files:

OWNERS

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@quanjielin: The following test failed, say /retest to rerun them all:

Test name
Commit
Details
Rerun command

prow/e2e-mixer-no_auth-mcp.sh
8060433c21242179857e246e7dc84bfcc40c5973
link
/test e2e-mixer-no_auth-mcp

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

[APPROVALNOTIFIER] This PR is APPROVED
This pull-request has been approved by: hklai
The full list of commands accepted by this bot can be found here.
The pull request process is described here

Needs approval from an approver in each of these files:

OWNERS [hklai]

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment


Remove BC break issue type

Summary
The information can already be conveyed using the "BC Break" check in the "Bug" category.

God dammit, this was targeting wrong branch


Investigate font weight discrepancies between browsers & OS

MacOS:

Mac is displaying font weights much more realistically while on Windows font weights seem to be barely distinguishable. I want to find out if there's anything we can do so fonts display more true to their assigned weights on Windows.
to do: I will post a photo on Windows when I move back to my Surface.

I've looked into this. Not a whole lot we can do. Windows renders fonts much thinner unfortunately.


Support for string compilation using indented (SASS) string syntax.

Fixes #41.

Looks like your change fails flake8.  Could you fix that and add a quick test?
Other than that, :shipit:

Yup, noticed the flake8 failure… wow those Travis tests take a long time to complete.  Updating now.

Should be good to go.

Thanks for the PR!

It never hurts to help.  I may tackle the @import callback thing (#81) later, as it's needed at work.  Do you have a release schedule for pypi published releases?

I usually release whenever someone asks or when I need a new release.  Would you like me to cut a new version?

@asottile Ah, might wait until I've pushed the @import callback code, but after that for sure.  That's a significant feature to add.

Sounds good to me, looking forward to reviewing :)


mypy static analysis ignores missing imports and PR workflow doesn't install all dependencies when running it

Tech Debt
https://github.com/ni/measurementlink-python/blob/main/pyproject.toml#L69 specifies ignore_missing_imports = true, which ignores the fact that nidcpower, nidmm, etc. are not installed in the venv used to run mypy. This may also affect ni-measurement-generator.
As a result, mypy skips type analysis for classes/functions imported from these dependencies.
AB#2267352

This was fixed by https://github.com/ni/measurementlink-python/pull/244 . Now we only specify ignore_missing_imports for specific modules and we run mypy separately for each example project.
Further PRs reduced the number of missing imports: https://github.com/ni/measurementlink-python/pull/275 https://github.com/ni/measurementlink-python/pull/280 https://github.com/ni/measurementlink-python/pull/292


Make SockAddr::vsock infallible

This code can never fail, but it was incorrect marked as fallible (by
returning an io::Result).
Updates #231.

Force pushed to fixed the conflicts.


Download failed - Got status code 404 when trying to download https://github.com/linknlink/linknlink-local/archive/refs/tags/1e2336f.zip

Download failed - Got status code 404 when trying to download https://github.com/linknlink/linknlink-local/archive/refs/tags/1e2336f.zip

Traceback (most recent call last):
  File "/config/custom_components/hacs/base.py", line 770, in async_download_file
    raise HacsException(
custom_components.hacs.exceptions.HacsException: Got status code 404 when trying to download https://github.com/linknlink/linknlink-local/archive/refs/tags/1e2336f.zip

See this in the system logs when Download in HCAS takes forever. I don't think there is a package there and we could ever be successful.

Seems to be local network related. Download was successful later. Most likely related to switching to 2.4GHz only.


Add e2e for changing controller params.

Description
closes: #2116
Commit Message / Changelog Entry
chore: add e2e test for changing controller params.

see the guidelines for commit messages. (view raw markdown for examples)

Before we can merge this PR, please make sure that all the following items have been
checked off. If any of the checklist items are not applicable, please leave them but
write a little note why.

[x] Targeted PR against correct branch (see CONTRIBUTING.md).
[x] Linked to Github issue with discussion and accepted design OR link to spec that describes this work.
[ ] Code follows the module structure standards and Go style guide.
[ ] Wrote unit and integration tests.
[ ] Updated relevant documentation (docs/) or specification (x/<module>/spec/).
[ ] Added relevant godoc comments.
[x] Provide a commit message to be used for the changelog entry in the PR description for review.
[ ] Re-reviewed Files changed in the Github PR explorer.
[ ] Review Codecov Report in the comment section below once CI passes.

And a question: should we add this test to the appropriate .json files for compatibility testing?

I've added this as a point to the epic in #2010. IIRC this has only been done for client so far so we can add these all together in a single PR.


Publish our experimental build on a different image.

Right now I keep pollution quickwit/quickwit with my qw-fulmicoton-experiment tags.
In particular, it overrides the latest tag.
We should publish those under a different tag, using a different prefix scheme.

We no longer override the latest image for qw-* tags. I fixed it yesterday.

tagging as low priority

I think you meant different image, for instance quickwit/quickwit-dev:fulmicoton-123?


Does it only work in backbone network

Hi, thanks for your great work.
Does it only work in backbone network?
and can it work in yolov3/ssd/efficientdet??

If the Module is defined using nn.XXX it should work as well. However, you need to specify rules for customized OPs.


dataset list - filter by state

Add a command line option (something like -s or --state) to filter the datasets listed.

Add in f99cb23e07dd0dfda144533e70657dc3707c1531


Feature Request - add policy replacement id in description for deprecated

It would be great if you in the description of a policy def, could add the policy id of the new policy that is replacing a deprecated policy, so that you do not have to manually sit and connect the dots.

Hey @vegazbabz,
We should be doing this already in our latest policy refreshes.
Please provide a list of any you have spotted and we will address going forward.
cc: @Springstone @paulgrimley

Multiple, unfortunately. I have also seen the opposite, so it is not consistant.
Couldn't find more than these:

https://www.azadvertizer.net/azpolicyadvertizer/Deny-MachineLearning-PublicNetworkAccess.html
https://www.azadvertizer.net/azpolicyadvertizer/Deny-PublicEndpoint-MariaDB.html
https://www.azadvertizer.net/azpolicyadvertizer/Deny-PublicIP.html
https://www.azadvertizer.net/azpolicyadvertizer/Deploy-Nsg-FlowLogs-to-LA.html
https://www.azadvertizer.net/azpolicyadvertizer/Deploy-Nsg-FlowLogs.html

This two have it:

https://www.azadvertizer.net/azpolicyadvertizer/Deploy-Sql-Tde.html
https://www.azadvertizer.net/azpolicyadvertizer/Deny-RDP-From-Internet.html

@vegazbabz thanks for awareness, we do document these here https://github.com/Azure/Enterprise-Scale/wiki/ALZ-Deprecated-Services#deprecated-policies but as you suggest having them within the description also helps. Will work on getting these updated.

Backlog item created #AB29467

I was just going to share the same @paulgrimley. Adding the replacement policy ID will be added going forward to all deprecated policies, and as suggested we will remediate those currently deployed as above. Please do always check https://github.com/Azure/Enterprise-Scale/wiki/ALZ-Deprecated-Services and https://github.com/Azure/Enterprise-Scale/wiki/Whats-new for complete history of changes.

We always check that, however, we have script that pulls changes from this repo into our Azure DevOps. So when comparing changes and we can see a policy has been deprecated, then we want to easily just check the other superseding policy without having to search for it.
Thanks

See PR #1388 that will address existing deprecated custom policies with a "supersededBy" metadata property. Kindly also note that AzAdvertizer has been updated with great views and tooling for comparing superseded ALZ policies. Example here: AzAdvertizer

Sounds good, thanks. Feel free to close it from my point of view.


Doesen't work

I followed all the steps but nothing appears

You may have selected the wrong profile folder.

You may have selected the wrong profile folder.

no, I chose this one well, that's why I'm confused

You may have selected the wrong profile folder.

no, I chose this one well, that's why I'm confused

The choice of the shape of the tabs is also required.

The choice of the shape of the tabs is also required.

Yes done to but doesn't work

Browser and operating system version?

Browser and operating system version?

Firefox 100 and windows 11

@QNetITQ

That's right. Browser, I hope you restarted after activating the keys? It won't work without a restart.

I completely rebooted. even my pc

That's right. Browser, I hope you restarted after activating the keys? It won't work without a restart.

I completely rebooted. even my pc

This is strange. Everything seems to be correct. A little later, I will describe in detail all the steps regarding the installation.

This is strange. Everything seems to be correct. A little later, I will describe in detail all the steps regarding the installation.

so do you have an idea of the problem or is it on my side and here it is?

There are several ideas. Download Firefox Nightly and try on it. This will eliminate the influence of extensions and profile settings.

Take a screenshot of the contents in the chrome folder. Maybe that's the thing.

Make a screenshot of the contents in the chrome folder. Maybe that's the thing.
problem fixed ! in fact I had downloaded wavefox here: https://github.com/QNetITQ/WaveFox/releases/tag/v1.204. when you just had to download wavefox directly by cloning it and downloading it in zip

Make a screenshot of the contents in the chrome folder. Maybe that's the thing.

problem fixed ! in fact I had downloaded wavefox here: https://github.com/QNetITQ/WaveFox/releases/tag/v1.204. when you just had to download wavefox directly by cloning it and downloading it in zip

Well, yes. 1.204 should no longer work on version 100. Then I close the report.


conf/layer.conf: add a variable with the URL of the PELUX git repo

This variable can be used by this layer's recipes like this:
SRC_URI = "${PELUX_GIT_URL}/project"
in order to continue working unmodified when the URL of the server
changes.
Signed-off-by: Alberto Mardegan<EMAIL_ADDRESS>

It would be nice with some motivation on when this would be needed. I don't see PELUX's infrastructure (i.e. GitHub) changing any time soon, and we currently have no recipes in meta-pelux that point to code stored at the Pelagicore GitHub. If anything (and I'm against that too) we could add it to meta-bistro.

I guess that since meta-pelux and meta-bistro are both in github.com/Pelagicore, they will both move if we decide to change hosting; and given that meta-bistro has actually a few recipes using a SRC_URI pointing to Pelagicore's github, it makes more sense to have this trick in that project, rather than here in meta-pelux.
Now, why would you object to having this change in meta-bistro? Changing repositories is not that unlikely (I remember when out set of projects moved from gitorious.org, then to code.google.com and finally to GitLab), it can happen for a multitude of reasons: github could change its policy and start charging money for corporations, or Luxoft might want to change "Pelagicore" to "Luxoft" everywhere, or we might decide that GitLab is a better place for us (it is!). :-)

PELUX Baseline is also the reference for projects using this. And in many of these projects the infrastructure and network has a tendency to change over time.

If projects that build on PELUX Baseline has this need then sure, add it there (in meta-project-whatever).
And I disagree with the likelyhood of repo hosting changing, which I see as low. Having the full URL in the recipes makes them super clear for everyone who reads them, which imho is more valuable than the cost of a one-time search/replace action needed if we ever change hosting.

@tobsan My point is that the PELUX Baseline is a reference on how to do things. That's a use-case equally valid as any other and needs to be included in the reasoning. Sure the risk of switching hosting is low in the particular case of meta-pelux or meta-bistro recipes, but so is the risk of people not understanding where they should look for the repo.
A middle ground could be to have a how-to and some rationale only in the SWF Blueprint and then let the projects needing a reference rely on that. I think in practice, people will use the PELUX layers as they are as reference though and read that part of the SWF too late.

@breakreturn I just see a risk of us making the PELUX Baseline so super-modular so that it becomes hard to use by itself.
It might not sound like it, but I think the idea of having a project specific variable pointing to the project's git server is a good idea. This is similar to how Qt does it in their recipes, where SRC_URI is something like ${QT_SERVER}/${PN}.git. But I think that makes more sense for those cases. Perhaps that's what @breakreturn means with the middle ground. Since it is a good practice when needed, I'm all for documenting this and using it where applicable.

@tobsan If the Baseline would become difficult to use, we've also failed in some area ofc. But do you really think it would be more difficult to use if we have a variable like this?
Btw, I'm not as familiar with the Qt specifics to understand why the variable makes sense in their case and not ours.

The way I see it is that this variable makes sense for PELUX in general when we have recipes that point to stuff hosted by us. We currently have 6 regular recipes and 4 CommonAPI-recipes in meta-bistro, and not a single such recipe in meta-pelux, that point to the Pelagicore GitHub. Having to resolv a variable to find where the recipe gets its sources makes it more difficult to use, almost by definition.
The Qt layer meta-qt5 has lots of recipes where they all follow the same release etc, so in their case all recipes use the same settings, defined in qt5-git.inc.
If we have projects using PELUX where it is useful to do this, we should place that logic in the project, but we can of course have it described in the SWF. The downside with that approach is that we're side-stepping the dog-fooding approach. On the other hand I suspect our SWF BluePrint will end up containing quite a lot of things that are relevant only in specific cases.

@tobsan Ok, let's skip this in PELUX then.
@mardy Could you write something in the SWF Blueprint about this pattern and practice? I think the sections that describe e.g. how to create your own layer etc (I guess the PDK parts) should link to an instruction like that.

@mardy and @tobsan I guess we agree to close this PR then?

Fine with me, closing.


Use tiktoken WASM to count message tokens

I'm not sure if this is the right way to do this or not, but I'm trying an experiment using tiktoken.  It's a JS/WASM port of OpenAI's tiktoken, allowing you to get tokens for a string.  It's crazy fast (unlike langchain's equivalent).  The only downside is the extra download size.
If you enable token counting in the settings, this is what it looks like (not sure that I like the prominence of the token count, but this is a draft to discuss):

I've also added dynamic getters to ChatCraftMessage and ChatCraftChat to easily get the counts.  This would allow me to bypass the bugs with langchain and token counting in streaming messages, and just count everything myself.
I know you wanted to have a "receipt" of token usage.  I'm wondering about putting it in sessionStorage so it's tied to your current session/window.  I could connect the code in this PR to the calls to OpenAI, and keep track of things as you chat.
See what you think, and we can discuss/iterate.

this feels odd. It's kind of a superpower to have this info, but a superpower you don't normally want...could probably have this as optional in settings. It's an interesting feature for devs.
Also doesn't load here.

i'm also concerned about footprint/loadtimes/memory-fitprint..tiktoken is pretty heavyweight

Updated to make it only load tiktoken module dynamically when setting is enabled.
I have no idea what this crash is on startup, I'll have to look into that next.

OK, preview URL works now https://tokens.console-overthinker-dev.pages.dev/

I have this working now:

If the user opts into token/cost tracking via settings, we keep track of the cost for a session cumulatively.
The large dependencies to make this work are only loaded if the setting is enabled at runtime vs. startup.
I'm still not sure if we want this or not, but it works.

I like it

Rebased.  Should I land this, then?


Define the right folders for ZK logs and BK data

SUMMARY
ZK and BK manages two different concepts to manage the data of each component. ZK uses a logs folder to store the transaction log of the in-memory database, however, BK uses a logs folder to store the commit logs (at the end the segments where the messages are stored. So, here the concept of log is not related to the usual concept of logs to track the behaviour of a process.
As the ZK and BK both manages outputs (logs) as process running on a system, these folders should be different from the original defines to store data.
The current definition of the roles are not using the right folders and use cases for the data of each component.
ZK configuration:
dataDir is the directory to store ZK transaction log and snapshots of the in-memory database. It is not the "log" of a service. This value usually is defined in the /var/lib/zookeeper/ folder. This property is declared in the zookeeper.properties file.
References:

https://access.redhat.com/documentation/en-us/red_hat_amq_streams/2.4/html-single/using_amq_streams_on_rhel/index#proc-running-single-node-amq-streams-cluster-str

BK configuration:
log.dirs is the directory to store commit logs in one or multiple log files. It means that it is the data of the brokers, not the logs of the service. This property is usually defined with the value /var/lib/kafka in the server.properties file.
References:

https://kafka.apache.org/32/documentation.html#brokerconfigs_log.dir
https://access.redhat.com/documentation/en-us/red_hat_amq_streams/2.4/html-single/using_amq_streams_on_rhel/index#con-kafka-commit-log-configuration-str

ISSUE TYPE

Feature Idea

@guidograzioli Should we close this issue as the PR was merged?

yup


elcos fix no effect option --max-cpu-usage

Thank you for your bug report in issue #4259. I am closing this PR in favor of #4272 because this fix isn't an urgent security fix and therefore we will be merging it into the release/1.1 branch rather than master.
In the future, please request new PRs to be merged into the appropriate release branch (release/1.x where x is the minor version number of next upcoming milestone that is not a security patch release, e.g. not v1.0.y).
Once again, thanks for the bug report and for creating this PR.


[BUG]

Describe the bug
ariaTSsetup.py does not correctly stitch frames for GUNW v3_0_1 datasets over Los Angeles.
To Reproduce
Steps to reproduce the behavior:

Download
ariaDownload.py --num_threads 16 -b '33.4 34.5 -119.0 -117.4'  -s 20190101  -e 20211231 -t 64 --version 3_0_1
Command used
ariaTSsetup.py -f "/scratch/nisar-st-calval-solidearth/ARIA_S1/Secular/LA_A64_3years/fielding/20240515/v1/products/*.nc" -b '33.6 34.3 -118.5 -117.5' --mask Download  --croptounion --verbose
Error Output

2024-05-17 19:32:21,555 - ARIAtools.product - WARNING - 81 out of 663 interferograms rejected since stitched interferogram would have gaps
2024-05-17 19:32:52,875 - ARIAtools.util.dem - WARNING - Cannot proceed with VRT format, using ENVI format instead
Downloading glo_90 tiles: 100%|██████████| 26/26 [00:48<00:00,  1.85s/it]
Reading tile metadata: 100%|██████████| 1/1 [00:00<00:00, 2065.14it/s]
Reading tile imagery: 100%|██████████| 1/1 [00:04<00:00,  4.09s/it]
/home/jovyan/.local/envs/solid_earth_atbd/lib/python3.11/site-packages/ARIAtools/util/stitch.py:394: RuntimeWarning: Mean of empty slice
  comb_data = np.nanmean(comb_data, axis=0)
2024-05-17 21:45:40,873 - ARIAtools.util.vrt - WARNING - Extraction of raider-derived troposphere layers is not possible as specified tropo model name(s) "-tm None" is not valid.

The run completed without further errors and I loaded it into MintPy, but many of the interferograms have incomplete stitching. Output from MintPy with views of the interferograms are attached below.

Desktop (please complete the following information):

ARIA-tools git tag: [e.g. git show --summary]  I used the conda install aria-tools and it reports version:
aria-tools                      <IP_ADDRESS>  py311hd037940_0          conda-forge     219kB
OS  CentOS 7

Additional context
This was running on the NISAR On-Demand System.

@EJFielding , I took a look at your case example and this appears to be the expected behavior since there are a mix of short scenes here (i.e. IFGs with just a single frame available, which only partially overlaps with the specified AOI), e.g. 20190210_20190123 below:

To kick out such scenes, you would need to omit the -croptounion option to strictly enforce a cutline from the provided AOI (i.e. clip scene extends that span beyond this footprint) and leverage the minimum overlap option (-mo) to kick out scenes that have below X km^2 of overlap WRT to the specified AOI.
For the latter, please refer to the help print screen (i.e. ariaTSsetup.py -h) for a detailed description of its purpose. Generally I specify a value that represents ~90% of the area in km^2 of the AOI of interest, which in this case I manually estimated from QGIS to be 5800 km^2 (i.e. -mo 5800). By specifying this as an argument, I am able to kick out "short" scenes such as 20190210_20190123  above, and only pass scenes such as 20190123_20190117 that span the AOI:

@sssangha Thanks for investigating. It seems that the new v3_0_1 processing must have a lot more missing scenes than the older v2 processing. I will use the -mo option then. My AOI seems to mostly fit in one frame, but then catches the edges of the frame above and below, so I get all those little pieces of interferograms.

I verified that running ariaTSsetup.py with the -mo 5800 flag creates a set of interferograms that is complete, but a much smaller number. I am closing this as not a bug in ARIA-tools but what I hope is a temporary set of missing frames in the ARIA S1 GUNW archive.


Add processor to handle graceful failover timeout

What changed?

Add a processor the watch domain failover endtime timeout
Forbid domain failover to the same cluster

Why?
If graceful failover timed out, update domain to active.

How did you test it?
TBD

Potential risks
N/A

Coverage increased (+0.1%) to 68.56% when pulling 6e1219ceb0b95d3afc0f259b012277977ec8ef77 on handle_failover_timeout into 1f3404b402e4f4813166871610e7e4625bd547ef on master.


[Meta] Change copyright owner to Modus

Tweag has been acquired in 2022 by Modus Create. This PR updates the various licenses to reflect this change legally.

Copyright holder is also mentioned in the .el file, so probably worth updating that too

Also, hi Yann!

Hi Steve :smile: ! I hope you're doing well!
Good catch, I'll update the .el file now


🚀 Feature: Declare Optional Dependencies for Traceloop SDK

Which component is this feature for?
Traceloop SDK
🔖 Feature description
We're starting to hit some issues with dependency conflicts, which prevents us from upgrading key packages that we instrument in the library.
One of these conflicts, for instance, is how weaviate-client v4 depends on pydantic>=2 but haystack v1 depends on pydantic==1.
In theory, there's no need to always have all dependencies from all instrumentations to be always resolved simultaneously. We should instead make Traceloop SDK dependency light, and declare the instrumentations as optional dependencies.
One could then, install the specific instrumentations that he desires, like this:
pip install traceloop[pinecone, openai]
🎤 Why is this feature needed ?
This would also enable us to simultaneously support many versions of the same libraries, as we can effectively just declare a new optional dependency for each version we're instrumenting.
✌ How do you aim to achieve this?
Update to pyproject.toml on traceloop-sdk, needs additional research on details.
🔄 Additional Information
Many libraries in the wild offer this, we can find one and use their configuration as a starting point.
👀 Have you spent some time to check if this feature request has been raised before?
I checked and didn't find similar issue

Are you willing to submit PR?
Yes I am willing to submit a PR!

Interesting! But the thing is - the instrumentations don't depend on the actual packages - so why is it an issue? I think it only happens in the sample app, no?

@nirga I think the problem is that we have these dependencies:
[tool.poetry.group.test.dependencies]
For instance, in Pinecone:
[tool.poetry.group.test.dependencies]
openai = "^1.12.0"
pytest = "8.0.2"
pytest-sugar = "1.0.0"
vcrpy = "^6.0.1"
pytest-recording = "^0.13.1"
opentelemetry-sdk = "^1.23.0"
opentelemetry-instrumentation-openai = {path="../opentelemetry-instrumentation-openai", develop=true}
pinecone-client = "^2.2.4"

I might be mistaken, but I think if you install traceloop-sdk locally with poetry install, it will fetch these and trigger some dependency conflicts between different instrumentations. Maybe another simpler solution could be implemented here.

Hmm it shouldn't since these are test dependencies, so only if installing the instrumentation directly to run should be installed.

I see, perhaps this was already fixed when the tests were pushed to separate projects? Previously they were all in traceloop-sdk, I think that’s when I had the issue.
I guess we can close this issue then.


Upgrade to Crystal 0.25.0 JSON::Any API

This PR update the code to the future crystal 0.25 version regarding JSON::Any API.
Ref: https://github.com/crystal-lang/crystal/pull/5183

Hey @bcardiff awesome, thanks! What are your instructions for merging this? I see it does not work on 0.24.2 and 0.25 is not listed yet on https://github.com/crystal-lang/crystal/releases.
Do you suggest that this gets merged after 0.25 is released, and that we effectively start requiring 0.25 as minimum version after that?

Hi @docelic, it's up to you if you want to try to keep compatibility with 0.24.2, but that will requiere some ifdef/responds_to checks in the code.
My suggestion would be to wait for merging until 0.25 is ready (last days where checking that the ecosystem is mostly ready for it without many issues, from that check this PR emerged :-) ). After 0.25 is release I would suggest a new release changing the minor version. Later and only if needed, a patch version can be released with backported features and  0.24.2 support.

We'll do so, thanks!

Fixes #33 Thank you @bcardiff !


Make installable for Python 3.10.6

Due to following line, HPOBench is no installable for Python 3.10.6. I use HPOBench in the test cases of my package (pyPDPPartitioner) and therefore need to install HPOBench in the test-pipeline. This fails, as this line prohibits the installation.
There are a few workarounds for me:

Change python_requires='>=3.6, <=3.10' to python_requires='>=3.6, <3.11', which just stalls the issue (Currently done in this branch)
Remove upper python boundary so that python_requires='>=3.6, <=3.10' will be python_requires='>=3.6'
Remove HPOBench in my test cases/dependencies

Personally, I do not think there is an issue with the second approach, although this might be untested in future python versions

I think approach 2. is best, there's rarely ever a reason to upper bound a python version

Hi,
thanks for your pull request.
Approach 2 is also fine by me.
Could you also please redirect the PR to the development branch?
Thanks

Looks like the python versions were interpreted as floats instead of strings. I hope the latest commit fixes this

I think the build for python 3.10 crashes due some old (unnecessary) dependencies that we have in the HPOBench.
We are planing to remove them with the next release (coming end of september). This should fix the error above.
We also will include the support for py>=3.10 then.

We have a similar issue in auto-sklearn, the problem is essentially the scikit learn version. Scikit learn needs an older version of numpy which doesn't release a pre-built wheel for python 3.10. Therefore, it downloads the older version of numpy and tries to build it for python 3.10 and then fails.

Hey, thanks for your work. I have fixed the remaining error in #155 on our side and included your changes into the dev branch.
Therefore, i close this PR.


feat(drop-command): I added the drop command and fixed some bugs

1 - I updated the "sample" project dependencies to fix the issue I was getting when trying to build: Module '"buffer"' has no exported member 'Blob'.
2 - I added the drop command to clean the database.
3 - Fixed the refresh command bug where drop and seed were running in parallel and sometimes drop was called later.
Related issues:

https://github.com/edwardanthony/nestjs-seeder/issues/22
https://github.com/edwardanthony/nestjs-seeder/issues/18
https://github.com/edwardanthony/nestjs-seeder/issues/21

When will this PR be merged into main branch?
I believe the project owner abandoned...

Hello, any updates on this PR? Will it be merged?


Update in dutch translations

As already mentioned:

Create a new branch for every PR.
A PR should contain only commits relevant for this PR.

I will do for further updates. sorry i am an noobing on Github 🤦♂.
Is it something i can solve on this PR ?

I think it 's easier to close this one.
Maybe this helps.


Set max rows for display helper

Currently display() maxes out at 20 rows, and then shows xxx count of rows remaining. It would be incredibly useful to be able to increase this at times, say 40, or even all.
Workarounds such as writing my own display-type function or calling display in a loop seem like less than stellar solutions, display() is already awesome, I'd just like to be and to see more than 20 rows sometimes.
Ideas for Implementation (off the cuff):

JupyterLab setting (seems most elegant)
global variable
second optional param to display for configuration.

This is configurable using the Formatter APIs.

This is Great! Thanks.
Mind if I add a small about, or just a link from the display docs to the Formatter APIs? It may help others with the same question.

By all means, link to the docs. Thanks!


How to get current location for direction to destination?

How to get current location for direction to destination?

There are many ways to do it: from user's browser (he will need to grant you permission) or via the IP (I recommend MaxMind GeoIp)

i found code from Google Maps but how to add to this package?
`if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(function(position) {
var pos = {
lat: position.coords.latitude,
lng: position.coords.longitude
};
        infoWindow.setPosition(pos);
        infoWindow.setContent('Location found.');
        map.setCenter(pos);
      }, function() {
        handleLocationError(true, infoWindow, map.getCenter());
      });
    } else {
      // Browser doesn't support Geolocation
      handleLocationError(false, infoWindow, map.getCenter());
    }`

Same question as well

@kongoon that code can simply be appended by using https://github.com/2amigos/yii2-google-maps-library/blob/master/Map.php#L361
Make sure you give a name to the map and recall it when you append that code (map.setCenter(pos) <---)


Document the entire mobile project

Currently, the mobile project only contains a single readme file as for the documentation. More structured and well-formatted documentation should be compiled using the GitHub Wiki feature.

Looking to work on this (GSOC)


OCPBUGS-8687: machineset_controller: Stop caching clouds credentials

Removing the OpenStack service client cache from the MachineSet reconciler solves at least two problems:

the secret where to look for clouds.yaml is a property of each MachineSet (cloudsSecret in the Machine template). However, we were caching clouds.yaml from the first MachineSet we encountered, and using the same for all MachineSets from that point on.
by caching (and never invalidating) the OpenStack service client, we were not picking up any change to the clouds.yaml itself: for example, if the user rotated the cluster's OpenStack credentials.

Additionally, in a separate commit: the warning event signaling failure to retrieve flavor information also contains the original error coming from the OpenStack API.

/test unit e2e-openstack gofmt golint govet

/jira refresh

For the record, I just got visual confirmation that error logging works.

/hold cancel
Comment addressed. PTAL!

/cherrypick release-4.13


Leveling System

Idea:
Users receive experience for involvement in group chats.

Base functionality done, waiting on MongoDB to finish.

Added

Base functionality done, waiting on MongoDB to finish.

Base functionality done, waiting on MongoDB to finish.


No indication that a bower install in not enough

It would be nice if there was a note explicitly stating that the css file needs to be added in the index.html file. The bower install does not take care of this. The bower install only inserts the js include statement.

I'm coming back to this, stumbling on the missing css resource, biting me. I can't see anything about it in the doc now.

What was needed was the following command:
bower install bootstrap -s
And adding the following statement in the app/index.html file:

@stephaneeybert - You actually need to bower install angular-bootstrap.  I've put in a PR for this: #3521.  Then you just need to include a script tag referencing "angular-bootstrap/ui-bootstrap-tpls.js"


Add curl

I understand this isn't meant for mrsk, but it'll be used by many people for that. And mrsk now requires curl to be installed.
https://github.com/mrsked/mrsk/issues/276
Maybe add it by default (it's a small package) or via an option?

Hey! You can already add curl (and any other package you want) via the add package command: https://github.com/fly-apps/dockerfile-rails#add-a-packageenvironment-variablebuild-argument

I understand this isn't meant for mrsk, but it'll be used by many people for that.

I want people to use it for mrsk and elsewhere!  I also want this package to track the Dockerfile produced by Rails 7.1.


cannot access bipio server within vagrant guest

I want to use bipio in vagrant as guest, but I found I can't access bipio from host machine(if I use others server[restify or koa and etc..], I can access successfully). Should I need setting something else for bipio?

I'm not sure on your exact setup but it could be that bipio listens on localhost only by default. This rule can be relaxed editing config/default.json and either stripping out the server.host config or setting it to another interface.
The template for it is in the distributed config : https://github.com/bipio-server/bipio/blob/master/config/config.json-dist#L19

@mjpearson Thanks. I fixed it.
Solution:  set server.host  to <IP_ADDRESS>


Update from upstream

:tada: This PR is included in version 1.0.2 :tada:
The release is available on GitHub release
Your semantic-release bot :package::rocket:


[Feature] 🐳 Dockerize Next.js application with MongoDB for consistent development environments

💬 Describe your changes
Summary
This PR introduces Dockerization for the Next.js application and MongoDB setup to ensure consistent development environments and simplify deployment processes.
Related Issue: #31
📂 Area of Change

[ ] 📱 API Routes
[ ] 🖼 UI Components
[ ] 🎨 Styles (CSS/SCSS)
[ ] 🧑💻 Hooks/Logic
[ ] 📝 Documentation
[ ] 🧪 Tests
[x] 🔧 Other

🧬 Type of change

[ ] 🐛 Bug fix
[ ] ♻ Refactor
[x] ✨ New feature
[ ] 📦 Dependency upgrade
[ ] 📝 Documentation update
[ ] 🔧 Other

✨ What's New

🐳 Docker support added for Next.js application.
MongoDB container setup included for development and production environments.

🔒 Why
Dockerization simplifies the development environment setup, allowing the team to work with consistent dependencies and configurations across machines.
✅ Changes

I created a Dockerfile for the Next.js application.
Added compose.yml to manage both Next.js and MongoDB containers.
A .dockerignore file was included to prevent unwanted files from being added to Docker images.

🛠 Checklist before requesting a review

[x] 🔍 Style guide has been followed.
[x] 🧑💻 Performed a self-review of my code.
[x] 🔒 No backdated packages have been added.

💡 Additional information
The MongoDB container can be accessed at mongodb://mongo:27017, and the Next.js application runs on port 3000 within the container.

Hey @samiurprapon sorry for the delay. I was testing it in the morning but forgot to merge it. Thanks for your amazing contribution.

No worries. Please upgrade this project from Next@13 to Next@15, later on I will contribute for sure. and you can close the Issue as well.

Just updated.


Spirograph Art-Maker

Makes beautiful, amazing art using hypotrochoid or epitrochoid curves that change over time and layer colors.  Mess with variables to get different art.  Click the sketch to pause.
Community Contribution
Link to live project, video, or image:
Video showing it: https://www.youtube.com/watch?v=jNWaAh3Irjw&t=1s
Code: https://editor.p5js.org/StevesMakerspace/sketches/dqCrfr642
Sharing

[ x] I would be happy to have my project shared on The Coding Train's social media!

Twitter:@SteveMakerspace
YouTube: https://www.youtube.com/channel/UCJjYUJudUW67Tg79jtF_rpQ

Great Video!


Kafka test container hangs indefinitely

Expected Behaviour
The node (vitest 1) process should not hang.
Actual Behaviour
The node (vitest 1) process hangs indefinitely.
Testcontainer Logs
See "steps to reproduce section".
Steps to Reproduce
I've created a test setup that you can use to run into the same problem. See instructions in the README.md:
https://github.com/alycklama/testcontainers-hanging
Environment Information

Operating System: Sonoma 14.7.1
Docker Version: v4.36.0
Node version: v20.15.0
Testcontainers version: 10.15.0

I believe this to be an issue with kafka-javascript. I've opened a new issue there, as I don't run into any issue when replacing kafka-javascript with kafkajs.