Please add decodeFromStream for symmetry with encodeToStream

That would ease reading from files on the JVM a bit 😉

Short answer: Won't fix. Please use inputStream.reader() with decodeFromNativeReader. By the way, we plan to deprecate encodeToStream in favor of encodeToNativeWriter in the next release.
Long answer: Actually that was a thing before, but was abandoned. Note that, the parser is based on character stream, not byte stream, and InputStream is a byte stream. While it is possible to achieve this with inputStream.bufferedReader(), we don't want to break the symmetry with other implementations either, which simply use x.buffered(). We've noticed that the offical Json format does copy InputStreamReader to support Json.decodeFromStream, which is not ideal in respect to no repetition. We don't want to pollute user's disk further with another copy of InputStreamReader when it is easy enough to use decodeFromNativeReader, so we don't plan to support InputStream directly. encodeToStream, on the other hand, just happens to be doable without a lot of paste work, but still hurts performance because it allocates a byte array each time even a single character goes into the file, so we don't recommend it either.

We've noticed that the offical Json format does copy InputStreamReader to support Json.decodeFromStream

Yeah, that's where I'm coming from, and what I'm used to.
Thanks for the elaborate answer, makes sense now!


No ability to capture remote audio samples?

Hello, thank you for this awesome library! I'm trying to implement recording of a remote WebRTC stream. I'm able to capture raw video frames using the addSink method on VideoTrack and write them to a file. There doesn't appear a similar method on AudioTrack. Does this library provide the ability to process remote audio sample? Thanks in advance.

Hey @wseemann, audio doesn't work by adding a track on the Sink, which renders Video streams.
You can refer to handing audio tracks from Stream's Video SDK.

Hello @skydoves, thank you for the reply. I looked over the sample you provided but this doesn't seem to address the issue outlined in my original question. The code snippet provided combines multiple media tracks into one. What I'm looking to do is capture the audio samples being sent by the server so I can save them to a file. As I noted, it is possible using addSink on the video track, but there doesn't appear to be a method to retrieve audio track samples. Is there something I'm misunderstanding in this snippet which allows me to do that?

Hey @wseemann, ah I got your question. Thanks for the details! Do you mean the audio sample callback listeners like this?

https://github.com/GetStream/stream-video-android/blob/ddea2579360cb09223c7f3f36dda22fd4d5fb3cb/stream-video-android-core/src/main/kotlin/io/getstream/video/android/core/call/connection/StreamPeerConnectionFactory.kt#L207
https://github.com/GetStream/stream-video-android/blob/ddea2579360cb09223c7f3f36dda22fd4d5fb3cb/stream-video-android-core/src/main/kotlin/io/getstream/video/android/core/call/connection/StreamPeerConnectionFactory.kt#L210

@wseemann This library may be what you need，WebRTCExtension
use:
val audioDeviceModule = JavaAudioDeviceModule.builder(this)
     .setAudioTrackStateCallback(object : JavaAudioDeviceModule.AudioTrackStateCallback {
        override fun onWebRtcAudioTrackStart() {
            //kotlin
            audioDeviceModule.setAudioTrackSamplesReadyCallback {
                val audioFormat = it.audioFormat
                val channelCount = it.channelCount
                val sampleRate = it.sampleRate
                //pcm
                val data = it.data
            }
        }

        override fun onWebRtcAudioTrackStop() {
        }

})
.setSamplesReadyCallback {

}.createAudioDeviceModule()

@skydoves  I'm also looking for the solution for detecting whether the remote user is talking. For what you posted above, I checked. I saw the comments for these two callbacks, says they are for detecting audio input, does it mean the local audio input or remote? since what i want to know is how to detect the remote users. What's more is this callback doesn't include any information about which audio track the data was coming through, so how do I detect which remote user is talking if there are multiple connections communicating around?

@zibozeng have you found any solution for this? If so, do you mind sharing, please?


Add Linux aarch64 release artifact

Attempting to use this in an ARM environment, but no release available

Just cut https://github.com/chrismellard/docker-credential-acr-env/releases/tag/0.7.0 with some arm64 builds in there. Let me know if they suit.


Bump lean version to 4.0.0-m5

This is not a bump. That's an older version. Also, Lean 4 doesn't use leanpkg.toml files anyone.


Export SourceMessageCreationTime option (using FromFile)

I want to set SourceMessageCreationTime option in my ingestion process that using (in this case) FromFile.
Seems like this option exists, but not exported (correct me if I'm wrong).
Why?
I want to override creationTime, the data shard's creation to make sure retention and caching policies are applied (to what I specify in the creationTime).
Using go1.16 and github.com/Azure/azure-kusto-go v0.3.2

Talsheldon...
I'll see if anyone happens to remember, but the likely culprits are:

We just missed adding the exposure option
We skipped exposing it to avoid the clutter of unused options and no one asked for them

Kusto has a lot of options that I didn't expose in the Go packages.  With very few exceptions, no one asks for them.  They end up being clutter that isn't needed.  And there are some more technical reasons that aren't worth going into.
If you need the option, we can look at exposing it via an Ingestion option.

The source message creation time does not affect the retention policy.
It is used to monitor the ingestion pipeline progress.
Kusto retention policy controls how data is removed - Azure Data Explorer | Microsoft Docs
SoftDeletePeriod:
•	Time span for which it's guaranteed that the data is kept available to query. The period is measured starting from the time the data was ingested.
•	Defaults to 100 years.
•	When altering the soft-delete period of a table or database, the new value applies to both existing and new data.

Created a PR to set creationTime ingestion property (different from SourceMessageCreationTime).
This should allow use to set the date & time the retention policy is considered against


Added alert compliance test for Thanos

Fixes https://github.com/thanos-io/thanos/issues/5203
Chained on top of https://github.com/thanos-io/thanos/pull/5348, let's review that one first.

Current status: alert_generator_compliance_tester is stuck (: WIP

I tried this compliance test before with Thanos few weeks ago but I also got some failures. Will take a look at this amazing pr during the weekend.

level=debug ts=2022-05-09T06:59:14.249Z caller=remote_write.go:147 component=remote_write msg="Remote writing" timestamp=2022-05-09T06:59:14.244Z total_series=4
level=debug ts=2022-05-09T06:59:29.244Z caller=remote_write.go:147 component=remote_write msg="Remote writing" timestamp=2022-05-09T06:59:29.244Z total_series=4
level=debug ts=2022-05-09T06:59:44.244Z caller=remote_write.go:147 component=remote_write msg="Remote writing" timestamp=2022-05-09T06:59:44.244Z total_series=4
level=debug ts=2022-05-09T06:59:59.245Z caller=remote_write.go:147 component=remote_write msg="Remote writing" timestamp=2022-05-09T06:59:59.244Z total_series=4
level=debug ts=2022-05-09T07:00:14.248Z caller=remote_write.go:147 component=remote_write msg="Remote writing" timestamp=2022-05-09T07:00:14.244Z total_series=4
level=info ts=2022-05-09T07:00:27.406Z caller=server.go:102 component=alertsServer msg="Received alerts" num_alerts=1
level=debug ts=2022-05-09T07:00:29.244Z caller=remote_write.go:147 component=remote_write msg="Remote writing" timestamp=2022-05-09T07:00:29.244Z total_series=4
level=info ts=2022-05-09T07:00:42.165Z caller=server.go:102 component=alertsServer msg="Received alerts" num_alerts=1
level=debug ts=2022-05-09T07:00:44.244Z caller=remote_write.go:147 component=remote_write msg="Remote writing" timestamp=2022-05-09T07:00:44.244Z total_series=4
level=debug ts=2022-05-09T07:00:59.245Z caller=remote_write.go:147 component=remote_write msg="Remote writing" timestamp=2022-05-09T07:00:59.244Z total_series=3
level=info ts=2022-05-09T07:01:06.919Z caller=testsuite.go:384 component=testsuite msg="Test finished successfully for a rule group" rulegroup=PendingAndFiringAndResolved
Congrats! All tests passed

Got all test case passing with the TSDB ruler setup with Prometheus as remote write receiver.

Nice @yeya24 did you have a code somewhere for stateful ruler (I guess this is what you mean by "TSDB ruler")?

Nice @yeya24 do you have a code somewhere for stateful ruler that we can add to this PR or so (I guess this is what you mean by "TSDB ruler")?
I will try to finalize stateless one early this week - thanks for comments, will check

I can add some code after this pr is merged. I haven't tried the code, just started the deployment locally and run the test suite.

19:37:37 rule-1: level=error name=rule-1 ts=2022-05-09T17:37:37.388604344Z caller=manager.go:967 component=rules msg="loading groups failed" err="/shared/data/rule-1/.tmp-rules/ABORT/shared/data/rule-1/rules/rules.yaml: group "ZeroFor_SmallFor", rule 2, "ZeroFor_SmallFor_SmallFor": annotation "template_test": template: __alert_ZeroFor_SmallFor_SmallFor:1: function "stripPort" not defined"

I get this 🤔

@bwplotka I updated the Prometheus dependency on https://github.com/thanos-io/thanos/pull/5256 so main branch should be available for this template func.

OK, I think I found the issue, I did not have latest thanos docker build...

Another problem is fact Querier does not expose /alerts - we could pass this test by pointing to Ruler (it exposes that), but will try to add /alerts to querier quickly using our Rules API.
testsuite msg="Error in fetching alerts" url=http://alert_compatibility-querier-query:8080/api/v1/alerts err="non 200 response code 404"

Another issue, potentially related to receiver default external labels - receive and tenant_id
10:40:02 alert_generator_compliance_tester-exec: The following rule groups failed the API and metrics check:
10:40:02 alert_generator_compliance_tester-exec: Group Name: NewAlerts_OrderCheck
10:40:02 alert_generator_compliance_tester-exec: Error 1: error in rules: rules do not match, mismatch in "Labels",
10:40:02 alert_generator_compliance_tester-exec: expected(ignoring Alerts and LastEvaluation): []v1.AlertingRule{v1.AlertingRule{State:"inactive", Name:"NewAlerts_OrderCheck_Rule1", Query:"{__name__=\"alert_generator_test_suite\", alertname=\"NewAlerts_OrderCheck_Rule1\", rulegroup=\"NewAlerts_OrderCheck\"} > 10", Duration:180, Labels:labels.Labels{labels.Label{Name:"foo", Value:"bar"}, labels.Label{Name:"rulegroup", Value:"NewAlerts_OrderCheck"}}, Annotations:labels.Labels{labels.Label{Name:"description", Value:"This should produce more alerts later"}}, Alerts:[]*v1.Alert(nil), Health:"ok", LastError:"", EvaluationTime:0, LastEvaluation:time.Date(1, time.January, 1, 0, 0, 0, 0, time.UTC), Type:"alerting"}, v1.AlertingRule{State:"inactive", Name:"NewAlerts_OrderCheck_Rule2", Query:"(ALERTS{alertstate=\"firing\", alertname=\"NewAlerts_OrderCheck_Rule1\", foo=\"bar\", rulegroup=\"NewAlerts_OrderCheck\", variant=\"one\"} + ignoring(variant) ALERTS{alertstate=\"firing\", alertname=\"NewAlerts_OrderCheck_Rule1\", foo=\"bar\", rulegroup=\"NewAlerts_OrderCheck\", variant=\"two\"}) == 2", Duration:0, Labels:labels.Labels{labels.Label{Name:"ba_dum", Value:"tss"}, labels.Label{Name:"foo", Value:"baz"}, labels.Label{Name:"rulegroup", Value:"NewAlerts_OrderCheck"}}, Annotations:labels.Labels{labels.Label{Name:"description", Value:"Based on ALERTS. Old alertname was {{$labels.alertname}}. foo was {{.Labels.foo}}."}}, Alerts:[]*v1.Alert(nil), Health:"ok", LastError:"", EvaluationTime:0, LastEvaluation:time.Date(1, time.January, 1, 0, 0, 0, 0, time.UTC), Type:"alerting"}},
10:40:02 alert_generator_compliance_tester-exec: got: []v1.AlertingRule{v1.AlertingRule{State:"inactive", Name:"NewAlerts_OrderCheck_Rule1", Query:"{__name__=\"alert_generator_test_suite\",alertname=\"NewAlerts_OrderCheck_Rule1\",rulegroup=\"NewAlerts_OrderCheck\"} > 10", Duration:180, Labels:labels.Labels{labels.Label{Name:"foo", Value:"bar"}, labels.Label{Name:"replica", Value:"1"}, labels.Label{Name:"rulegroup", Value:"NewAlerts_OrderCheck"}}, Annotations:labels.Labels{labels.Label{Name:"description", Value:"This should produce more alerts later"}}, Alerts:[]*v1.Alert{}, Health:"ok", LastError:"", EvaluationTime:0.003413538, LastEvaluation:time.Date(2022, time.May, 10, 8, 39, 54, 245001133, time.UTC), Type:"alerting"}, v1.AlertingRule{State:"inactive", Name:"NewAlerts_OrderCheck_Rule2", Query:"(ALERTS{alertname=\"NewAlerts_OrderCheck_Rule1\",alertstate=\"firing\",foo=\"bar\",rulegroup=\"NewAlerts_OrderCheck\",variant=\"one\"} + ignoring(variant) ALERTS{alertname=\"NewAlerts_OrderCheck_Rule1\",alertstate=\"firing\",foo=\"bar\",rulegroup=\"NewAlerts_OrderCheck\",variant=\"two\"}) == 2", Duration:0, Labels:labels.Labels{labels.Label{Name:"ba_dum", Value:"tss"}, labels.Label{Name:"foo", Value:"baz"}, labels.Label{Name:"replica", Value:"1"}, labels.Label{Name:"rulegroup", Value:"NewAlerts_OrderCheck"}}, Annotations:labels.Labels{labels.Label{Name:"description", Value:"Based on ALERTS. Old alertname was {{$labels.alertname}}. foo was {{.Labels.foo}}."}}, Alerts:[]*v1.Alert{}, Health:"ok", LastError:"", EvaluationTime:0.003139047, LastEvaluation:time.Date(2022, time.May, 10, 8, 39, 54, 248421574, time.UTC), Type:"alerting"}}
10:40:02 alert_generator_compliance_tester-exec: Group Name: PendingAndFiringAndResolved
10:40:02 alert_generator_compliance_tester-exec: Error 1: error in rules: rules do not match, mismatch in "Labels",
10:40:02 alert_generator_compliance_tester-exec: expected(ignoring Alerts and LastEvaluation): []v1.AlertingRule{v1.AlertingRule{State:"inactive", Name:"PendingAndFiringAndResolved_SimpleAlert", Query:"{__name__=\"alert_generator_test_suite\", alertname=\"PendingAndFiringAndResolved_SimpleAlert\", rulegroup=\"PendingAndFiringAndResolved\"} > 10", Duration:360, Labels:labels.Labels{labels.Label{Name:"foo", Value:"bar"}, labels.Label{Name:"rulegroup", Value:"PendingAndFiringAndResolved"}}, Annotations:labels.Labels{labels.Label{Name:"description", Value:"SimpleAlert is firing"}, labels.Label{Name:"summary", Value:"The value is {{$value}} {{.Value}}"}}, Alerts:[]*v1.Alert(nil), Health:"ok", LastError:"", EvaluationTime:0, LastEvaluation:time.Date(1, time.January, 1, 0, 0, 0, 0, time.UTC), Type:"alerting"}},
10:40:02 alert_generator_compliance_tester-exec: got: []v1.AlertingRule{v1.AlertingRule{State:"inactive", Name:"PendingAndFiringAndResolved_SimpleAlert", Query:"{__name__=\"alert_generator_test_suite\",alertname=\"PendingAndFiringAndResolved_SimpleAlert\",rulegroup=\"PendingAndFiringAndResolved\"} > 10", Duration:360, Labels:labels.Labels{labels.Label{Name:"foo", Value:"bar"}, labels.Label{Name:"replica", Value:"1"}, labels.Label{Name:"rulegroup", Value:"PendingAndFiringAndResolved"}}, Annotations:labels.Labels{labels.Label{Name:"description", Value:"SimpleAlert is firing"}, labels.Label{Name:"summary", Value:"The value is {{$value}} {{.Value}}"}}, Alerts:[]*v1.Alert{}, Health:"ok", LastError:"", EvaluationTime:0.003572003, LastEvaluation:time.Date(2022, time.May, 10, 8, 39, 34, 302842473, time.UTC), Type:"alerting"}}
10:40:02 alert_generator_compliance_tester-exec: Group Name: PendingAndResolved_AlwaysInactive
10:40:02 alert_generator_compliance_tester-exec: Error 1: error in rules: rules do not match, mismatch in "Labels",
10:40:02 alert_generator_compliance_tester-exec: expected(ignoring Alerts and LastEvaluation): []v1.AlertingRule{v1.AlertingRule{State:"inactive", Name:"PendingAndResolved_AlwaysInactive_InactiveAlert", Query:"{__name__=\"alert_generator_test_suite\", alertname=\"PendingAndResolved_AlwaysInactive_InactiveAlert\", rulegroup=\"PendingAndResolved_AlwaysInactive\"} > 99", Duration:180, Labels:labels.Labels{labels.Label{Name:"ba_dum", Value:"tss"}, labels.Label{Name:"rulegroup", Value:"PendingAndResolved_AlwaysInactive"}}, Annotations:labels.Labels{labels.Label{Name:"description", Value:"This should never fire"}}, Alerts:[]*v1.Alert(nil), Health:"ok", LastError:"", EvaluationTime:0, LastEvaluation:time.Date(1, time.January, 1, 0, 0, 0, 0, time.UTC), Type:"alerting"}, v1.AlertingRule{State:"inactive", Name:"PendingAndResolved_AlwaysInactive_PendingAlert", Query:"{__name__=\"alert_generator_test_suite\", alertname=\"PendingAndResolved_AlwaysInactive_PendingAlert\", rulegroup=\"PendingAndResolved_AlwaysInactive\"} > 10", Duration:180, Labels:labels.Labels{labels.Label{Name:"foo", Value:"bar"}, labels.Label{Name:"rulegroup", Value:"PendingAndResolved_AlwaysInactive"}}, Annotations:labels.Labels{labels.Label{Name:"description", Value:"SimpleAlert is firing"}}, Alerts:[]*v1.Alert(nil), Health:"ok", LastError:"", EvaluationTime:0, LastEvaluation:time.Date(1, time.January, 1, 0, 0, 0, 0, time.UTC), Type:"alerting"}},
10:40:02 alert_generator_compliance_tester-exec: got: []v1.AlertingRule{v1.AlertingRule{State:"inactive", Name:"PendingAndResolved_AlwaysInactive_InactiveAlert", Query:"{__name__=\"alert_generator_test_suite\",alertname=\"PendingAndResolved_AlwaysInactive_InactiveAlert\",rulegroup=\"PendingAndResolved_AlwaysInactive\"} > 99", Duration:180, Labels:labels.Labels{labels.Label{Name:"ba_dum", Value:"tss"}, labels.Label{Name:"replica", Value:"1"}, labels.Label{Name:"rulegroup", Value:"PendingAndResolved_AlwaysInactive"}}, Annotations:labels.Labels{labels.Label{Name:"description", Value:"This should never fire"}}, Alerts:[]*v1.Alert{}, Health:"ok", LastError:"", EvaluationTime:0.002937445, LastEvaluation:time.Date(2022, time.May, 10, 8, 39, 51, 263369466, time.UTC), Type:"alerting"}, v1.AlertingRule{State:"inactive", Name:"PendingAndResolved_AlwaysInactive_PendingAlert", Query:"{__name__=\"alert_generator_test_suite\",alertname=\"PendingAndResolved_AlwaysInactive_PendingAlert\",rulegroup=\"PendingAndResolved_AlwaysInactive\"} > 10", Duration:180, Labels:labels.Labels{labels.Label{Name:"foo", Value:"bar"}, labels.Label{Name:"replica", Value:"1"}, labels.Label{Name:"rulegroup", Value:"PendingAndResolved_AlwaysInactive"}}, Annotations:labels.Labels{labels.Label{Name:"description", Value:"SimpleAlert is firing"}}, Alerts:[]*v1.Alert{}, Health:"ok", LastError:"", EvaluationTime:0.003548297, LastEvaluation:time.Date(2022, time.May, 10, 8, 39, 51, 259814067, time.UTC), Type:"alerting"}}
10:40:02 alert_generator_compliance_tester-exec: Group Name: ZeroFor_SmallFor
10:40:02 alert_generator_compliance_tester-exec: Error 1: error in rules: rules do not match, mismatch in "Labels",
10:40:02 alert_generator_compliance_tester-exec: expected(ignoring Alerts and LastEvaluation): []v1.AlertingRule{v1.AlertingRule{State:"inactive", Name:"ZeroFor_SmallFor_SmallFor", Query:"{__name__=\"alert_generator_test_suite\", alertname=\"ZeroFor_SmallFor_SmallFor\", rulegroup=\"ZeroFor_SmallFor\"} > 13", Duration:15, Labels:labels.Labels{labels.Label{Name:"ba_dum", Value:"tss"}, labels.Label{Name:"rulegroup", Value:"ZeroFor_SmallFor"}}, Annotations:labels.Labels{labels.Label{Name:"description", Value:"This should fire after an interval"}, labels.Label{Name:"template_test", Value:"{{title \"this part\"}} {{toUpper \"is testing\"}} {{toLower \"THE STRINGS\"}}. {{ stripPort \"[::1]:6006\"}} {{ stripPort \"<IP_ADDRESS>:4004\"}}. {{parseDuration \"2h10m15s\"}}. {{if match \"[0-9]+\" \"1234\"}}{{reReplaceAll \"r.*d\" \"replaced\" \"rpld text\"}}{{end}}. {{if match \"[0-9]+$\" \"1234a\"}}WRONG{{end}}."}}, Alerts:[]*v1.Alert(nil), Health:"ok", LastError:"", EvaluationTime:0, LastEvaluation:time.Date(1, time.January, 1, 0, 0, 0, 0, time.UTC), Type:"alerting"}, v1.AlertingRule{State:"inactive", Name:"ZeroFor_SmallFor_ZeroFor", Query:"{__name__=\"alert_generator_test_suite\", alertname=\"ZeroFor_SmallFor_ZeroFor\", rulegroup=\"ZeroFor_SmallFor\"} > 10", Duration:0, Labels:labels.Labels{labels.Label{Name:"foo", Value:"bar"}, labels.Label{Name:"rulegroup", Value:"ZeroFor_SmallFor"}}, Annotations:labels.Labels{labels.Label{Name:"description", Value:"This should immediately fire"}, labels.Label{Name:"template_query_test", Value:"{{ define \"testtemplate\" }}Args are: {{.arg0}} {{.arg1}} {{.arg2}}. {{ with query \"alert_generator_test_suite{rulegroup='ZeroFor_SmallFor',for='template'}\" }}first_id:{{ . | sortByLabel \"id\" | first | label \"id\"}},{{ range $v := sortByLabel \"id\" .}}{{ . | label \"id\" }}:{{ . | value }},{{end}}{{end}}{{ end }}{{ template \"testtemplate\" (args \"foo\" \"bar\" 99) }}"}, labels.Label{Name:"template_test", Value:"{{humanize 1048576}} {{humanize1024 1048576}} {{humanizeDuration 135.3563}} {{humanizePercentage 0.959}} {{humanizeTimestamp<PHONE_NUMBER>}}"}}, Alerts:[]*v1.Alert(nil), Health:"ok", LastError:"", EvaluationTime:0, LastEvaluation:time.Date(1, time.January, 1, 0, 0, 0, 0, time.UTC), Type:"alerting"}},
10:40:02 alert_generator_compliance_tester-exec: got: []v1.AlertingRule{v1.AlertingRule{State:"inactive", Name:"ZeroFor_SmallFor_SmallFor", Query:"{__name__=\"alert_generator_test_suite\",alertname=\"ZeroFor_SmallFor_SmallFor\",rulegroup=\"ZeroFor_SmallFor\"} > 13", Duration:15, Labels:labels.Labels{labels.Label{Name:"ba_dum", Value:"tss"}, labels.Label{Name:"replica", Value:"1"}, labels.Label{Name:"rulegroup", Value:"ZeroFor_SmallFor"}}, Annotations:labels.Labels{labels.Label{Name:"description", Value:"This should fire after an interval"}, labels.Label{Name:"template_test", Value:"{{title \"this part\"}} {{toUpper \"is testing\"}} {{toLower \"THE STRINGS\"}}. {{ stripPort \"[::1]:6006\"}} {{ stripPort \"<IP_ADDRESS>:4004\"}}. {{parseDuration \"2h10m15s\"}}. {{if match \"[0-9]+\" \"1234\"}}{{reReplaceAll \"r.*d\" \"replaced\" \"rpld text\"}}{{end}}. {{if match \"[0-9]+$\" \"1234a\"}}WRONG{{end}}."}}, Alerts:[]*v1.Alert{}, Health:"ok", LastError:"", EvaluationTime:0.001165051, LastEvaluation:time.Date(2022, time.May, 10, 8, 39, 56, 511592512, time.UTC), Type:"alerting"}, v1.AlertingRule{State:"inactive", Name:"ZeroFor_SmallFor_ZeroFor", Query:"{__name__=\"alert_generator_test_suite\",alertname=\"ZeroFor_SmallFor_ZeroFor\",rulegroup=\"ZeroFor_SmallFor\"} > 10", Duration:0, Labels:labels.Labels{labels.Label{Name:"foo", Value:"bar"}, labels.Label{Name:"replica", Value:"1"}, labels.Label{Name:"rulegroup", Value:"ZeroFor_SmallFor"}}, Annotations:labels.Labels{labels.Label{Name:"description", Value:"This should immediately fire"}, labels.Label{Name:"template_query_test", Value:"{{ define \"testtemplate\" }}Args are: {{.arg0}} {{.arg1}} {{.arg2}}. {{ with query \"alert_generator_test_suite{rulegroup='ZeroFor_SmallFor',for='template'}\" }}first_id:{{ . | sortByLabel \"id\" | first | label \"id\"}},{{ range $v := sortByLabel \"id\" .}}{{ . | label \"id\" }}:{{ . | value }},{{end}}{{end}}{{ end }}{{ template \"testtemplate\" (args \"foo\" \"bar\" 99) }}"}, labels.Label{Name:"template_test", Value:"{{humanize 1048576}} {{humanize1024 1048576}} {{humanizeDuration 135.3563}} {{humanizePercentage 0.959}} {{humanizeTimestamp<PHONE_NUMBER>}}"}}, Alerts:[]*v1.Alert{}, Health:"ok", LastError:"", EvaluationTime:0.002001364, LastEvaluation:time.Date(2022, time.May, 10, 8, 39, 56, 509589401, time.UTC), Type:"alerting"}}
10:40:02 alert_generator_compliance_tester-exec: ------------------------------------------

OK, that was because we had "--label":                         fmt.Sprintf(replica="%s", name), in the Ruler

Is the error related to stateless ruler remote write queue config?

No idea yet... @yeya24

No idea yet... @yeya24

I am wondering if it is caused by the remote write local batch. So I set the batch time to 100ms and batch samples to 1. Unfortunately this doesn't work...

Yea, the mentioned error is still there and has to be debugged (:
Help wanted, might return to this later as well if no one helps. Deadline was moved to next KubeCon 🙈

Or PromCon

If there is any issue with the stateless ruler, I think we can add the compliance test for the stateful ruler first as it should pass the compliance test. (At least locally)

If there is any issue with the stateless ruler, I think we can add the compliance test for the stateful ruler first as it should pass the compliance test. (At least locally)
WDYT?

I have a moment, I'll try to debug the stateless results locally and try a run with stateful as well

I tried it with a stateful ruler but I'm getting the exact same errors as @bwplotka, I'll keep looking.

I traced what seemed to been the main issue to having non-default resend interval in tests (1s whereas the compliance suite assumes this is 1m - this was throwing of EndsAt values in alerts). That seemed to have fixed most test cases, but I'm still seeing failure with NewAlerts_OrderCheck test case:
17:11:19 alert_generator_compliance_tester-exec: ------------------------------------------
17:11:19 alert_generator_compliance_tester-exec: The following rule groups failed the API and metrics check:
17:11:19 alert_generator_compliance_tester-exec: Group Name: NewAlerts_OrderCheck
17:11:19 alert_generator_compliance_tester-exec: Error 1: one of the following errors happened in alerts:
17:11:19 alert_generator_compliance_tester-exec: (1) alerts mismatch - expected: {{alertname="NewAlerts_OrderCheck_Rule1", foo="bar", rulegroup="NewAlerts_OrderCheck", variant="two"} {description="This should produce more alerts later"} pending 2022-06-10 15:07:41.009 +0000 UTC 11}, actual: {{alertname="NewAlerts_OrderCheck_Rule1", foo="bar", rulegroup="NewAlerts_OrderCheck", variant="two"} {description="This should produce more alerts later"} firing 2022-06-10 15:07:54.239864092 +0000 UTC 1.1e+01}
17:11:19 alert_generator_compliance_tester-exec: (2) different number of alerts - expected(3): [{{alertname="NewAlerts_OrderCheck_Rule1", foo="bar", rulegroup="NewAlerts_OrderCheck", variant="one"} {description="This should produce more alerts later"} firing 2022-06-10 15:01:41.009 +0000 UTC 11} {{alertname="NewAlerts_OrderCheck_Rule1", foo="bar", rulegroup="NewAlerts_OrderCheck", variant="two"} {description="This should produce more alerts later"} firing 2022-06-10 15:07:41.009 +0000 UTC 11} {{alertname="NewAlerts_OrderCheck_Rule2", alertstate="firing", ba_dum="tss", foo="baz", rulegroup="NewAlerts_OrderCheck"} {description="Based on ALERTS. Old alertname was NewAlerts_OrderCheck_Rule1. foo was bar."} firing 2022-06-10 15:10:41.009 +0000 UTC 2}], actual(2): [{{alertname="NewAlerts_OrderCheck_Rule1", foo="bar", rulegroup="NewAlerts_OrderCheck", variant="one"} {description="This should produce more alerts later"} firing 2022-06-10 15:01:54.239864092 +0000 UTC 1.1e+01} {{alertname="NewAlerts_OrderCheck_Rule1", foo="bar", rulegroup="NewAlerts_OrderCheck", variant="two"} {description="This should produce more alerts later"} firing 2022-06-10 15:07:54.239864092 +0000 UTC 1.1e+01}]
17:11:19 alert_generator_compliance_tester-exec: ------------------------------------------
17:11:19 alert_generator_compliance_tester-exec: The following alerts were still expected but were not received in time:
17:11:19 alert_generator_compliance_tester-exec: Group Name: NewAlerts_OrderCheck
17:11:19 alert_generator_compliance_tester-exec: 1: Expected time: 2022-06-10T15:17:56.009Z, Labels: {alertname="NewAlerts_OrderCheck_Rule1", foo="bar", rulegroup="NewAlerts_OrderCheck", variant="one"}, Annotations: {description="This should produce more alerts later"}, State: resolved, Resend: false
17:11:19 alert_generator_compliance_tester-exec: Group Name: NewAlerts_OrderCheck
17:11:19 alert_generator_compliance_tester-exec: 1: Expected time: 2022-06-10T15:15:56.009Z, Labels: {alertname="NewAlerts_OrderCheck_Rule1", foo="bar", rulegroup="NewAlerts_OrderCheck", variant="two"}, Annotations: {description="This should produce more alerts later"}, State: resolved, Resend: false
17:11:19 alert_generator_compliance_tester-exec: Group Name: NewAlerts_OrderCheck
17:11:19 alert_generator_compliance_tester-exec: 1: Expected time: 2022-06-10T15:10:41.009Z, Labels: {alertname="NewAlerts_OrderCheck_Rule2", alertstate="firing", ba_dum="tss", foo="baz", rulegroup="NewAlerts_OrderCheck"}, Annotations: {description="Based on ALERTS. Old alertname was NewAlerts_OrderCheck_Rule1. foo was bar."}, State: firing, Resend: false
17:11:19 alert_generator_compliance_tester-exec: 2: Expected time: 2022-06-10T15:15:56.009Z, Labels: {alertname="NewAlerts_OrderCheck_Rule2", alertstate="firing", ba_dum="tss", foo="baz", rulegroup="NewAlerts_OrderCheck"}, Annotations: {description="Based on ALERTS. Old alertname was NewAlerts_OrderCheck_Rule1. foo was bar."}, State: resolved, Resend: false

I'll keep looking, after I have a fix I will update this PR and resolve conflicts.

I updated the branch and switched to stateful ruler, which makes the test suite pass. Anyone else wants to give it spin on their local?
I'm still trying to understand to root cause of why this is failing with stateless ruler. I tracked the problem down to one of the rules in the compliance test, which depends on the ALERTS metric. I did couple of tests and observed the behavior of stateless ruler 'manually' and it seems that the ruler in stateless mode is not correctly evaluating expressions containing ALERTS metrics. Although the alert should have been pending / firing, this never happens in stateless ruler (whereas this works correctly in stateful mode). When querying the expression manually in the querier, it's being evaluated correctly.
I'm not sure where the cause could be. As I understand the code, the ALERTS metrics are synthesized by the Prometheus rule manager, which we run 'within' our Thanos rule manager. This metrics should be then written upon evaluation of an alerting rule.  I assume that it indeed the case, as we can query for the expression in querier and ALERTS metrics are available. However, for ruler evaluations, this simply does not work.

Added the issue, if everyone's happy we can merge this one :+1:

I think I messed up one more thing after merging main and didn't notice (we now always use replica label in ruler config, which is making the test suite fail). I'll fix this tomorrow.

Created https://github.com/thanos-io/thanos/pull/5433, PTAL

I don't know if it's an issue but when I compare API object Alerts return by /api/v1/alerts with Prometheus and Thanos, there is a difference: A uppercase in Thanos, a lowercase in prometheus

Thanos -> Alerts:
json {"status":"success","data":{"Alerts":[..]}}
Prometheus -> alerts:
json {"status":"success","data":{"alerts":[..]}}

I don't know if it's an issue but when I compare API object Alerts return by /api/v1/alerts with Prometheus and Thanos, there is a difference: A uppercase in Thanos, a lowercase in prometheus

Thanos -> Alerts:
json {"status":"success","data":{"Alerts":[..]}}
Prometheus -> alerts:
json {"status":"success","data":{"alerts":[..]}}

It can be usefull to have the same struc of object. Our usecase is to use nagstamon to scrape alerts and there is a compatibility with prometheus interface, but it's broker due to uppercase on 'Alerts'

Feel free to submit a PR to fix this! :beers:

I will try


Unify the DatabaseMut,Database and EntityMut and EntityMut interface

@alu I just merged the API to unify both the immutable and mutable interface into 1. Please notify me if it breaks something on your part.

@ivanceras Thank you for notify :white_flower:
I upgraded the crate and it's not problems for now :D


Change assocPath behavior for empty path

R.assocPath([], 0, {a:1}) should return 0 not {a:1}
As discussed in #1510 the previous behavior of returning the full object does not quite match the desired logic that would also be required for lensPath. From a lens point of view the focus is on the empty path and thus on the whole object, meaning the whole object is being overwritten and not "nothing is being ovewritten"

:deciduous_tree:

:herb:


Document know privacy issues with Type Indexes and Trusted Apps

I understand that this repo focuses on prior art. Still, I think it should honestly document known issues and possibly even reference ongoing efforts which are addressing those issues. It could be addressed by Privacy considerations section(s).
TypeIndex
ISSUE: Apps that have access to given TypeIndex can see the complete index. It doesn't allow users to selectively (e.g. as part of authorizing the app) disclose to the app what kind of data they have. It is known to be problematic when users have some specific data like (mental) health data, (un)employment data, etc. While apps should be able to discover data the user authorizes that app to access, it shouldn't have knowledge that any other data even exists in any of the user's storage instances.
ALTERNATIVE: Solid Application Interoperability
Trusted Apps
ISSUE: User may not want to publically disclose which app they are using. It is known to be problematic when users use apps related to (mental) health data, (un)employment data, dating, etc.
ALTERNATIVE: Solid Application Interoperability

We discussed this issue in today's meeting and we agree that there are privacy concerns with both trustedApps and type indexes.  We will refer to these concerns in a "Considerations" section of the document  at a later date.  We will include links to the Interoperability spec as examples of other ways of handling the issues.


Bugfix: manage resources properly

Proposed changes
Manage multi-threaded resources with Python's built-in syntax, to avoid deadlocks.
Types of changes
What types of changes does your code introduce to the community Python SDK?
Put an x in the boxes that apply

[x] Bugfix (non-breaking change which fixes an issue)
[ ] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
[ ] Documentation update or tests (if none of the other choices apply)

Checklist
Put an x in the boxes that apply. You can also fill these out after creating the PR. If you're unsure about any of them, don't hesitate to ask. We're here to help! This is simply a reminder of what we are going to look for before merging your code.

[x] I have read the CONTRIBUTING doc
[ ] I have lint'ed all of my code using repo standards
[x] I have added tests that prove my fix is effective or that my feature works
[ ] I have added necessary documentation (if appropriate)

Further comments
minimal reproducible example:
import time

from deepgram import DeepgramClient, LiveOptions

deepgram_client = DeepgramClient(api_key=API_KEY)
deepgram_connection = deepgram_client.listen.live.v("1")

deepgram_connection.start(LiveOptions())

time.sleep(30)    # Deepgram will close the connection after 10-15s of silence, followed with another 5 seconds for a ping

print('deadlock!')
try:
  deepgram_connection.finish()
finally:
  print('no deadlock...')

output:
Exception in _listening: received 1011 (internal error) Deepgram did not receive audio data or a text message within the timeout window. See https://dpgr.am/net0001; then sent 1011 (internal error) Deepgram did not receive audio data or a text message within the timeout window. See https://dpgr.am/net0001
Exception in thread Thread-5 (_listening):
Traceback (most recent call last):
  File "/Users/tom/my/lib/mambaforge/envs/dev3/lib/python3.10/threading.py", line 1016, in _bootstrap_inner
    self.run()
  File "/Users/tom/my/lib/mambaforge/envs/dev3/lib/python3.10/threading.py", line 953, in run
    self._target(*self._args, **self._kwargs)
  File "/Users/tom/my/lib/mambaforge/envs/dev3/lib/python3.10/site-packages/deepgram/clients/live/v1/client.py", line 146, in _listening
    message = self._socket.recv()
  File "/Users/tom/my/lib/mambaforge/envs/dev3/lib/python3.10/site-packages/websockets/sync/connection.py", line 201, in recv
    raise self.protocol.close_exc from self.recv_events_exc
websockets.exceptions.ConnectionClosedError: received 1011 (internal error) Deepgram did not receive audio data or a text message within the timeout window. See https://dpgr.am/net0001; then sent 1011 (internal error) Deepgram did not receive audio data or a text message within the timeout window. See https://dpgr.am/net0001
Exception in _processing: received 1011 (internal error) Deepgram did not receive audio data or a text message within the timeout window. See https://dpgr.am/net0001; then sent 1011 (internal error) Deepgram did not receive audio data or a text message within the timeout window. See https://dpgr.am/net0001
deadlock!

I added a minimal reproducible example.
The deadlock happens when there's an exception raised by the self._socket.send(...) method, because the socket has already been closed.
The with ...: statement will release the lock even in case of exceptions (similar to a finally: block).

Sure but you should still make this change. This code
lock.acquire()
do_something_that_might_cause_an_exception()
lock.release()

is just wrong (see Python official docs here).
Also, your PR further complicates the algorithm, and doesn't even use locks properly!
(Also, my code doesn't remove the send mutex, it just uses it properly.)

Thanks for your PR!


Problem with sending commands - no termination sign

Hi, I have a problem with sending commands over TCPIP using this lib.
Simple code:
inst = scpi.Instrument(port_match=False) inst.rid='TCPIP0::<IP_ADDRESS>::30000::SOCKET' inst.connect() print(inst.id())
TCPIP0::<IP_ADDRESS>::30000::SOCKET Traceback (most recent call last):     return self.query( '*IDN?' )     raise errors.VisaIOError(rv) pyvisa.errors.VisaIOError: VI_ERROR_TMO (-1073807339): Timeout expired before operation completed.
What I observe is that even to use pyvisa manager I have to set termination sign. I tried in such way:
inst.__inst.read_termination = '\n'
inst.__inst.write_termination = '\n'

But it is not working this should be set in such way:
self.__inst = self.__rm.open_resource( self.rid, read_termination = '\n', write_termination = '\n')
Do you have any workaround or hint how to fix that without changing a code??
`pip list
Package           Version

easy-scpi         0.1.4
modbus-tk         1.1.2
pip               21.2.3
pymodbus          3.0.2
pyserial          3.5
PyVISA            1.13.0
PyVISA-py         0.6.0
setuptools        57.4.0
typing_extensions 4.4.0`

If I understand correctly you are trying to set the read and write termination characters. This can be done by setting it directly on the SCPI_Instrument during initialization as passed in via the **resource_params.
import easy_scpi as scpi

inst = scpi.Instrument( <port>, read_termination='\n', write_termination='\n' )

You can see an example of this in the full example on the README.

Hi,
Sorry, I've missed somehow this information. Btw very good job with this library :)

Happy to help, and glad you are finding the package useful :) Please feel free to raise another issue if you run into any trouble.


Align spec with GeoParquet 1.1

The bbox field is currently listed as Struct of Floats. It would be nice to have more detail on this. How should the struct columns be named? Can they be float32 or only float64? Now that bounding boxes are part of the GeoParquet 1.1 spec, we should align the spec here with that.

Now that bounding boxes are part of the GeoParquet 1.1 spec, we should align the spec here with that.

Agreed. I don't see any reason to diverge from the GeoParquet spec.


Godot-mono (3.4) crashes on using VoxelObject

I get a full crash whenever I try using VoxelObjects in my main scene. I can't seem to find any error output, so unfortunately I haven't the slightest idea why it's crashing as VoxelMesh seems to be working just fine. I will provide any logs or such on request!

As discussed off thread, this is due to a limitation and strain on the system. You've mentioned that you've seen different results when importing as MeshOfVoxels than as VoxelObject. I think this has to do with that when importing as MeshOfVoxels you are only saving the resource as a static Mesh. As opposed to when importing as a VoxelObject, where it not only stores the Mesh, but also stores the entire voxel content. Taking a look at the voxel assets you've shared with me, they are what I would classify as high-density voxel content. One of the assets has a dimension of 73 x 75 x 126, which means that there could be at most 689,850 voxels. You can imagine how draining that amount of voxel content can be, especially when you want to create a "forest" of them where each instance would contain the Mesh and its own copy of the voxel content.
What I would recommend for this type of situation is a chunking system, you would basically split your scene/world into voxel chunks and only load the part that is active/seen by the player, take a look here for a simple example: https://github.com/ClarkThyLord/Voxel-Core/tree/master/examples/ProceduralWorld
Another recommendation is that when looking to work with high-density voxel content, it's best to work with them as static Meshes. And if you ever need to have dynamic voxel content, all you need to do is swap the static Meshes for VoxelObjects as needed and vice versa.


[json-rpc] allow no params field in JSON-RPC API call request

Motivation
Resolve #7208
Have you read the Contributing Guidelines on pull requests?
Yes
Test Plan
Unit test

This PR may have modified JSON-RPC server code.
Breaking changes policy:

Chaning JSON-RPC method signatures or removing/modifying fields
in the response in /V1 will not be accepted.
Adding fields is ok.
Adding a new JSON-RPC method is ok.

Please ensure you have also done the following to update the docs:

Update json-rpc/API-CHANGELOG.md.
Add/update type/method documentation under json-rpc/docs.

This PR may have modified JSON-RPC server code.
Breaking changes policy:

Chaning JSON-RPC method signatures or removing/modifying fields
in the response in /V1 will not be accepted.
Adding fields is ok.
Adding a new JSON-RPC method is ok.

Please ensure you have also done the following to update the docs:

Update json-rpc/API-CHANGELOG.md.
Add/update type/method documentation under json-rpc/docs.

/land

/land

/cherry-pick release-1.1

/cherry-pick release-1.1

@xli :cherries: Opened PR #7317 to cherry-pick these changes into release-1.1

@xli :cherries: Opened PR #7317 to cherry-pick these changes into release-1.1


Fix worker-build on Windows

What this PR solves / how to test:
This PR increments the version of the worker-build command, since the version 0.0.7 resulted in errors when building on Windows.
Associated docs issues/PR:
https://github.com/cloudflare/workers-rs/issues/222
Author has included the following, where applicable:

[ ] Tests
[ ] Changeset

Reviewer has performed the following, where applicable:

[ ] Checked for inclusion of relevant tests
[ ] Checked for inclusion of a relevant changeset
[ ] Checked for creation of associated docs updates
[ ] Manually pulled down the changes and spot-tested

Fixes #2308

Well that was fast! Thanks @Alex1607

Issue was fixed in #2936


Default CSS

I have been trying to get the default CSS that specifically controls the header.
I want to change the header and use my own styling.Any where?

Never Mind i got the layout.server.view.html
Thanks.


BlockingGet creates MaxCap - 1 connections

BlockingGet creates MaxCap - 1 connections when trying to increase number of connections in the pool from initial to max, due to requests.

Yes, I have already fix it, and add unit test in gpool_test.go. Thanks @FarhadF


Retry create connection on PDOException

ref: https://keboola.slack.com/conversation/C035LGNK5/p1545126032115000

I'm not sure if we should wait with this until https://github.com/keboola/db-extractor-common/pull/78 is finished, because we really only want to retry on timeout imho.


Icons are decolorized in security

If you haven’t already, check out our contributing guidelines for onboarding and email<EMAIL_ADDRESS>to request to join our Slack channel!

Version Number: 9.0.78-1
Reproducible in staging?: Y
Reproducible in production?: N
If this was caught on HybridApp, is this reproducible on New Expensify Standalone?:
If this was caught during regression testing, add the test name, ID and link from TestRail:
Email or phone of affected tester (no customers):
Logs: https://stackoverflow.com/c/expensify/questions/4856
Expensify/Expensify Issue URL:
Issue reported by: @allgandalf
Slack conversation (hyperlinked to channel name): expensify_bugs
Action Performed:

Open settings > Security, > observe the icon on top left

Expected Result:
Icons are displayed in color
Actual Result:
Icons are decolorized in security
Workaround:
Unknown
Platforms:

Which of our officially supported platforms is this issue occurring on?

[ ] Android: Standalone
[ ] Android: HybridApp
[ ] Android: mWeb Chrome
[ ] iOS: Standalone
[ ] iOS: HybridApp
[ ] iOS: mWeb Safari
[x] MacOS: Chrome / Safari
[ ] MacOS: Desktop

Screenshots/Videos

Add any screenshot/video evidence

https://github.com/user-attachments/assets/d86873d3-5705-4831-bb05-899395e172b9
View all open jobs on GitHub

Requested CP for https://github.com/Expensify/App/issues/54514 here: https://expensify.slack.com/archives/C07J32337/p1735069519771039


MQTT broker not connected

Hi and thanks for the great FW.
I use the firmware on a Nodosvop v2 with a PIC16F88 on PIC FW 5.0.1 and MCU FW 0.9.5+4eb7d24 (30-05-2022).
It's configured on a MQTT server that I run in a container and seems to works just fine, but I've noticed that HomeAssistant about every 10/15 minutes say that all entities provided by the MQTT integrations are unavailable.
If I connect through telnet on the MCU I see:
15:05:07.138281 (  12656| 11544) processOT   (1693): Answer Thermostat AC0000300 (9)[MsgID=  0][READ_ACK        ]>Status = Slave  [--------]
15:05:07.174146 (  11312| 10248) processOT   (1693): Thermostat        T00000300 (9)[MsgID=  0][READ_DATA       ]-Status = Master [CD---W--] <ignored>
15:05:17.409951 (  10016|  8832) processOT   (1693): Request Boiler    R80000100 (9)[MsgID=  0][READ_DATA       ]>Status = Master [C----W--]
15:05:17.420603 (  10264|  8832) handleOTGW  (1760): Serial Overrun
15:05:17.422506 (   8920|  8184) processOT   (1722): Not processed, received from OTGW => (0300) [4]
15:05:17.434596 (   9320|  8184) sendMQTTData( 406): Error: MQTT broker not connected.
15:05:17.437355 (   7976|  6888) sendMQTTData( 406): Error: MQTT broker not connected.
15:05:17.438049 (   7976|  6888) sendMQTTData( 406): Error: MQTT broker not connected.
15:05:17.438485 (   7976|  6888) sendMQTTData( 406): Error: MQTT broker not connected.
15:05:17.438929 (   7976|  6888) sendMQTTData( 406): Error: MQTT broker not connected.
15:05:17.439365 (   7976|  6888) sendMQTTData( 406): Error: MQTT broker not connected.
15:05:17.439809 (   7976|  6888) sendMQTTData( 406): Error: MQTT broker not connected.
15:05:17.440904 (   7304|  6240) sendMQTTData( 406): Error: MQTT broker not connected.
15:05:17.441753 (   7304|  6240) sendMQTTData( 406): Error: MQTT broker not connected.
15:05:17.442248 (   7304|  6240) sendMQTTData( 406): Error: MQTT broker not connected.
15:05:17.442746 (   7304|  6240) processOT   (1693): Boiler            B40000100 (9)[MsgID=  0][READ_ACK        ]>Status = Slave  [--------]
15:05:17.450384 (   9320|  8184) sendMQTTData( 406): Error: MQTT broker not connected.

After a while it reconnects and things start to work again:
15:14:49.517580 (  13400| 12384) processOT   (1693): Boiler            BC0110000 (9)[MsgID= 17][READ_ACK        ]>RelModLevel = 0.00 %
15:14:49.900375 (  14744| 13680) sendMQTTData( 406): Error: MQTT broker not connected.
15:14:49.903459 (  13400| 12384) processOT   (1693): Thermostat        T00120000 (9)[MsgID= 18][READ_DATA       ] CHPressure = 0.00 bar
MQTT connected
15:14:50.047344 (  14384| 13680) addOTWGcmdto(1239): CmdQueue: Adding cmd end of queue, slot [0]
15:14:50.049229 (  13040| 12384) addOTWGcmdto(1242): CmdQueue: Insert queue in slot[0]:cmd[CS=1] (4)
15:14:50.050279 (  13040| 12384) addOTWGcmdto(1262): CmdQueue: Next free queue slot: [1]
15:14:50.057334 (  14384| 13680) addOTWGcmdto(1239): CmdQueue: Adding cmd end of queue, slot [1]
15:14:50.058848 (  13040| 12384) addOTWGcmdto(1242): CmdQueue: Insert queue in slot[1]:cmd[CS=45] (5)
15:14:50.059862 (  13040| 12384) addOTWGcmdto(1262): CmdQueue: Next free queue slot: [2]

I've already checked MQTT logs (seems fine but I'm not an expert) and WiFi connection that seems good, probably best proof is the solid telnet connection while printing error messages.
What can be the problem ? How can I troubleshoot it ?
UPDATE
It turns out I looked at the wrong place for MQTT logs.
MQTT server indeed logs some relevant errors:
2022-11-30T15:05:17.445710307Z<PHONE_NUMBER>: Client OTGWAC:0B:FB:CF:A2:05 disconnected due to protocol error.

2022-11-30T15:05:59.460947971Z<PHONE_NUMBER>: New connection from <IP_ADDRESS>:58478 on port 1883.

2022-11-30T15:05:59.461634145Z<PHONE_NUMBER>: New client connected from <IP_ADDRESS>:58478 as OTGWAC:0B:FB:CF:A2:05 (p2, c1, k15, u'hauser').

2022-11-30T15:14:08.038595128Z<PHONE_NUMBER>: Client OTGWAC:0B:FB:CF:A2:05 disconnected due to protocol error.

2022-11-30T15:14:50.056192241Z<PHONE_NUMBER>: New connection from <IP_ADDRESS>:50281 on port 1883.

2022-11-30T15:14:50.058293671Z<PHONE_NUMBER>: New client connected from <IP_ADDRESS>:50281 as OTGWAC:0B:FB:CF:A2:05 (p2, c1, k15, u'hauser').

2022-11-30T15:22:57.967104200Z<PHONE_NUMBER>: Client OTGWAC:0B:FB:CF:A2:05 disconnected due to malformed packet.

2022-11-30T15:23:39.998089398Z<PHONE_NUMBER>: New connection from <IP_ADDRESS>:53478 on port 1883.

2022-11-30T15:23:39.998986189Z<PHONE_NUMBER>: New client connected from <IP_ADDRESS>:53478 as OTGWAC:0B:FB:CF:A2:05 (p2, c1, k15, u'hauser').

Somehow it looks like the wire protocol is broken for some reason in your case. I have not seen this myself, but I will go and look in my MQTT logs to see if that is really the case. Has you situation resolved it self? Or still seeing this strange behaviour?

Yes, sorry, this must be closed!
I’ve had the same doubt that there were some connection issues.
I’ve put a ping running for a few hours and it reported less than 1% of loss packets, but still SOME of them were losts. I’ve changed the ESP board with no luck, then I’ve tried to change firmware and I had the same problem.
Finally, last weekend I’ve moved the container running mosquitto to a different server and I had 24+ hours without problem! So the problem is NOT in the firmware and this must be closed. Sorry, I should have put an update on the issue.
Just yesterday evening I’ve also discovered that my linux server was using two ip addresses (one static and one by dhcp client). Removing the address from dhcp for some unknown reason put the lost packet to 0.
From: Robert van den Breemen @.>
Sent: martedì 20 dicembre 2022 14:07
To: rvdbreemen/OTGW-firmware @.>
Cc: Marco Casamento @.>; Author @.>
Subject: Re: [rvdbreemen/OTGW-firmware] MQTT broker not connected (Issue #149)
Somehow it looks like the wire protocol is broken for some reason in your case. I have not seen this myself, but I will go and look in my MQTT logs to see if that is really the case. Has you situation resolved it self? Or still seeing this strange behaviour?
—
Reply to this email directly, view it on GitHub https://github.com/rvdbreemen/OTGW-firmware/issues/149#issuecomment-1359324375 , or unsubscribe https://github.com/notifications/unsubscribe-auth/AABW2Y7CMDKIRU3AKO2IPALWOGVNZANCNFSM6AAAAAASPXYU7M .
You are receiving this because you authored the thread.  https://github.com/notifications/beacon/AABW2Y2NF2BAWUEP6IXKE7TWOGVNZA5CNFSM6AAAAAASPXYU7OWGG33NNVSW45C7OR4XAZNMJFZXG5LFINXW23LFNZ2KUY3PNVWWK3TUL5UWJTSRAWSNO.gif Message ID: @.*** @.***> >

Thanks for letting me know.


Sablier PoC integration for Shutter

Shutter have had a problem creating proposal with complex data structure (specifically - tuple with nested tuples and array of tuples).
In order to support them - we made PoC implementation of specific proposal submission which is Sablier V2 stream creation.
On-going work happens here: https://github.com/decentdao/fractal-interface/pull/1491
We might spin off this work into full scaled integration later on.

Closing this issue, the PoC has been implemented and lives at a branch: https://github.com/decentdao/decent-interface/tree/fix/encoding-of-array-of-tuples


Number including parenthesis should be displayed on same line in business case comparison

This is hard to read:

Do you have a link to the LES in question?

That explains a lot...
Firefox:

Chrome:


Adjust "a interactive" to "an interactive"

Despite the advice in the README it doesn't appear there's a develop branch here. 😝

It also says " (this might be overkill for some projects)." 😆 , Thanks for contributing


plotter.py: 2D y=log-scaled energy, x=coszen plots end up log(log(E))

apparently a bug in linlog logic; removing the imshow section, plots look fine

Not sure this issue persists, but we are using a much newer matplotlib now, so maybe it works. The code in these lines coul be tested again..


Add support for compute score command

Summary of changes:

Added support for command registry compute score.
TODOs:

timestamp based check for artifact dependencies in score calculation
support for dry_run flag
support for RollUp score
Support for json artifacts

I still have some open comments about improving test descriptions, but I won't block the PR for that. LGTM overall.

The test descriptions were fixed in this commit. I missed resolving the comments.


Using lib produces render error

Hey,
Repro steps scenario #1 (repo+example):
If you change the line in StoryEditor.js in example
import DragDropContainer from "../../dist/container"
to
import DragDropContainer from "slate-react-dnd-plugin"
the editor doesn't work.
Anytime I want to import the plugin to any of my project I have exact the same error. Somehow only the example works if you build the library one dir higher. But when it wants to use the actual npm package it is not working. Nor is the package working in any of my projects.
Am I doing something wrong or there is some configuration problem?
Repro steps scenario #2 (fresh react project):
Please try to create a simple react app anywhere, just use npm install slate-react-dnd-plugin --save and copy/paste App.js and StoryEditor.js. Change imports to 'slate-react-dnd-plugin' and you will see it doesn't work throwing render null errors. Here is the minified App.js that works in example folder (if lib is built one dir higher):
import React, { Component } from 'react';
import { Editor } from 'slate-react'
import { Value } from 'slate'

import DragDropContainer from "slate-react-dnd-plugin"
import { inject } from "slate-react-dnd-plugin"

const initialValue = Value.fromJSON({
    document: {
        nodes: [
            {
                object: 'block',
                type: 'paragraph',
                nodes: [
                    {
                        object: 'text',
                        leaves: [
                            {
                                text: 'A line of text in a paragraph.'
                            }
                        ]
                    }
                ]
            }
        ]
    }
});

class ParagraphNode extends React.Component {
    render() {
        return (
{this.props.children}
)
    }
}

ParagraphNode.PLUGIN_DEFAULT_TEMPLATE = {
}

const blockStyle = {
    backgroundColor: 'white',
    cursor: 'move',
    opacity: 1
};

const renderNode = (props) => {
    switch (props.node.type) {
        case 'paragraph':
            return <ParagraphNode {...props} />;
        default:
            return null;
    }
  }
  const renderBlock = (isDragging, children) => {
    return
{children}

  }

class StoryEditor extends React.Component {

    state = {
        value: initialValue
    };

    onChange({ value }) {
        this.setState({ value })
    }
    plugins = inject([{renderNode}],{renderBlock});
    render() {
        return (
            <Editor
                value={this.state.value}
                plugins={this.plugins}
                onChange={this.onChange.bind(this)} />
        )
    }
}

class App extends Component {
  render() {
    return (
        <DragDropContainer>
                <StoryEditor/>
        </DragDropContainer>
    );
  }
}

export default App;

Here's the stack trace:
index.js:2178 Warning: React.createElement: type is invalid -- expected a string (for built-in components) or a class/function (for composite components) but got: undefined. You likely forgot to export your component from the file it's defined in, or you might have mixed up default and named imports.

 You likely forgot to export your component from the file it's defined in, or you might have mixed up default and named imports.

Check the render method of `App`.
    at invariant (http://localhost:3000/static/js/bundle.js:4611:15)
    at createFiberFromElement (http://localhost:3000/static/js/bundle.js:31284:5)
    at reconcileSingleElement (http://localhost:3000/static/js/bundle.js:33062:23)
    at reconcileChildFibers (http://localhost:3000/static/js/bundle.js:33166:35)
    at reconcileChildrenAtExpirationTime (http://localhost:3000/static/js/bundle.js:33287:30)
    at reconcileChildren (http://localhost:3000/static/js/bundle.js:33278:5)
    at finishClassComponent (http://localhost:3000/static/js/bundle.js:33412:5)
    at updateClassComponent (http://localhost:3000/static/js/bundle.js:33381:12)
    at beginWork (http://localhost:3000/static/js/bundle.js:33756:16)
    at performUnitOfWork (http://localhost:3000/static/js/bundle.js:35755:16)
    at workLoop (http://localhost:3000/static/js/bundle.js:35819:26)
    at HTMLUnknownElement.callCallback (http://localhost:3000/static/js/bundle.js:26073:14)
    at Object.invokeGuardedCallbackDev (http://localhost:3000/static/js/bundle.js:26112:16)
    at invokeGuardedCallback (http://localhost:3000/static/js/bundle.js:25969:27)
    at renderRoot (http://localhost:3000/static/js/bundle.js:35897:7)
    at performWorkOnRoot (http://localhost:3000/static/js/bundle.js:36545:24)
    at performWork (http://localhost:3000/static/js/bundle.js:36498:7)
    at requestWork (http://localhost:3000/static/js/bundle.js:36409:7)
    at scheduleWorkImpl (http://localhost:3000/static/js/bundle.js:36263:11)
    at scheduleWork (http://localhost:3000/static/js/bundle.js:36220:12)
    at scheduleTopLevelUpdate (http://localhost:3000/static/js/bundle.js:36724:5)
    at Object.updateContainer (http://localhost:3000/static/js/bundle.js:36762:7)
    at http://localhost:3000/static/js/bundle.js:40757:19
    at Object.unbatchedUpdates (http://localhost:3000/static/js/bundle.js:36633:12)
    at renderSubtreeIntoContainer (http://localhost:3000/static/js/bundle.js:40756:17)
    at Object.render (http://localhost:3000/static/js/bundle.js:40821:12)
    at Object../src/index.js (http://localhost:3000/static/js/bundle.js:77760:51)
    at __webpack_require__ (http://localhost:3000/static/js/bundle.js:679:30)
    at fn (http://localhost:3000/static/js/bundle.js:89:20)
    at Object.0 (http://localhost:3000/static/js/bundle.js:77906:18)
    at __webpack_require__ (http://localhost:3000/static/js/bundle.js:679:30)
    at http://localhost:3000/static/js/bundle.js:725:37
    at http://localhost:3000/static/js/bundle.js:728:10
invariant @ invariant.js:42
createFiberFromElement @ react-dom.development.js:5753
reconcileSingleElement @ react-dom.development.js:7531
reconcileChildFibers @ react-dom.development.js:7635
reconcileChildrenAtExpirationTime @ react-dom.development.js:7756
reconcileChildren @ react-dom.development.js:7747
finishClassComponent @ react-dom.development.js:7881
updateClassComponent @ react-dom.development.js:7850
beginWork @ react-dom.development.js:8225
performUnitOfWork @ react-dom.development.js:10224
workLoop @ react-dom.development.js:10288
callCallback @ react-dom.development.js:542
invokeGuardedCallbackDev @ react-dom.development.js:581
invokeGuardedCallback @ react-dom.development.js:438
renderRoot @ react-dom.development.js:10366
performWorkOnRoot @ react-dom.development.js:11014
performWork @ react-dom.development.js:10967
requestWork @ react-dom.development.js:10878
scheduleWorkImpl @ react-dom.development.js:10732
scheduleWork @ react-dom.development.js:10689
scheduleTopLevelUpdate @ react-dom.development.js:11193
updateContainer @ react-dom.development.js:11231
(anonymous) @ react-dom.development.js:15226
unbatchedUpdates @ react-dom.development.js:11102
renderSubtreeIntoContainer @ react-dom.development.js:15225
render @ react-dom.development.js:15290
./src/index.js @ index.js:7
__webpack_require__ @ bootstrap d13401ee605a32928799:678
fn @ bootstrap d13401ee605a32928799:88
0 @ registerServiceWorker.js:117
__webpack_require__ @ bootstrap d13401ee605a32928799:678
(anonymous) @ bootstrap d13401ee605a32928799:724
(anonymous) @ bootstrap d13401ee605a32928799:724
index.js:2178 The above error occurred in the <App> component:
    in App (at index.js:7)

Consider adding an error boundary to your tree to customize error handling behavior.
 You likely forgot to export your component from the file it's defined in, or you might have mixed up default and named imports.

Check the render method of `App`.
    at invariant (http://localhost:3000/static/js/bundle.js:4611:15)
    at createFiberFromElement (http://localhost:3000/static/js/bundle.js:31284:5)
    at reconcileSingleElement (http://localhost:3000/static/js/bundle.js:33062:23)
    at reconcileChildFibers (http://localhost:3000/static/js/bundle.js:33166:35)
    at reconcileChildrenAtExpirationTime (http://localhost:3000/static/js/bundle.js:33287:30)
    at reconcileChildren (http://localhost:3000/static/js/bundle.js:33278:5)
    at finishClassComponent (http://localhost:3000/static/js/bundle.js:33412:5)
    at updateClassComponent (http://localhost:3000/static/js/bundle.js:33381:12)
    at beginWork (http://localhost:3000/static/js/bundle.js:33756:16)
    at performUnitOfWork (http://localhost:3000/static/js/bundle.js:35755:16)
    at workLoop (http://localhost:3000/static/js/bundle.js:35819:26)
    at HTMLUnknownElement.callCallback (http://localhost:3000/static/js/bundle.js:26073:14)
    at Object.invokeGuardedCallbackDev (http://localhost:3000/static/js/bundle.js:26112:16)
    at invokeGuardedCallback (http://localhost:3000/static/js/bundle.js:25969:27)
    at renderRoot (http://localhost:3000/static/js/bundle.js:35897:7)
    at performWorkOnRoot (http://localhost:3000/static/js/bundle.js:36545:24)
    at performWork (http://localhost:3000/static/js/bundle.js:36498:7)
    at requestWork (http://localhost:3000/static/js/bundle.js:36409:7)
    at scheduleWorkImpl (http://localhost:3000/static/js/bundle.js:36263:11)
    at scheduleWork (http://localhost:3000/static/js/bundle.js:36220:12)
    at scheduleTopLevelUpdate (http://localhost:3000/static/js/bundle.js:36724:5)
    at Object.updateContainer (http://localhost:3000/static/js/bundle.js:36762:7)
    at http://localhost:3000/static/js/bundle.js:40757:19
    at Object.unbatchedUpdates (http://localhost:3000/static/js/bundle.js:36633:12)
    at renderSubtreeIntoContainer (http://localhost:3000/static/js/bundle.js:40756:17)
    at Object.render (http://localhost:3000/static/js/bundle.js:40821:12)
    at Object../src/index.js (http://localhost:3000/static/js/bundle.js:77760:51)
    at __webpack_require__ (http://localhost:3000/static/js/bundle.js:679:30)
    at fn (http://localhost:3000/static/js/bundle.js:89:20)
    at Object.0 (http://localhost:3000/static/js/bundle.js:77906:18)
    at __webpack_require__ (http://localhost:3000/static/js/bundle.js:679:30)
    at http://localhost:3000/static/js/bundle.js:725:37
    at http://localhost:3000/static/js/bundle.js:728:10

Okay I figured out if my project already had a newest slate, this package newer got built well. Can you update to a newest slate-react?

I'll look into this.

To be honest, this repo unfortunately wasn't maintained well after its initially been published. I currently don't have the time to fix the compilation errors. It seems we need to update several dependencies and fix breaking changes. Help/PR's are welcomed! I'm really sorry but there seems no quick fix to me. If you could fix the bugs I'm able to publish the updated version to npm.

Just wondering how feasible it is to make this work with the latest react, slatejs, and react-dnd? 🙁


visualize pages

A new tab should be added to the ax-developer-tools-widget. It should provide a graphical "bird's eye view" of the current page and its widgets, along with their pattern-event connections.

Implemented on master (v2.0.0).


Tracing / timing information for requests

Also, investigate slowness on the home page render.

Slowness on home page render is fixed after rewriting the getFollowedArtists queries.


Missing "loginProviderName":"tmos" in authentication.yaml

ISSUE TYPE

Bug Report

COMPONENT NAME

f5_atc_deploy_declaration
More specifically, 'tasks/authentication.yaml'
ANSIBLE VERSION

ansible 2.9.0
  config file = None
  configured module search path = ['/Users/s006000/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /Users/s006000/repos/ansible-role-f5/venv/lib/python3.7/site-packages/ansible
  executable location = /Users/s006000/repos/ansible-role-f5/venv/bin/ansible
  python version = 3.7.4 (default, Jul  9 2019, 18:13:23) [Clang 10.0.1 (clang-1<IP_ADDRESS>)]

PYTHON VERSION

Python 3.7.4

BIGIP VERSION

Sys::Version
Main Package
  Product     BIG-IP
  Version     12.1.2
  Build       2.0.276
  Edition     Hotfix HF2
  Date        Sat Nov 11 04:32:09 PST 2017

CONFIGURATION

OS / ENVIRONMENT

macOS Mojvae - 10.14.4
SUMMARY

The authentication token returned is not valid for AS3 declarations because it is the following line in the body section:

loginProviderName: tmos

I believe this is necessary in most enterprise environments.
https://github.com/f5devcentral/ansible-role-f5_atc_deploy_declaration/blob/8e9b12aabc3ef72351083a1432a58e0256dcbf76/tasks/authentication.yaml#L3-L13

Thank you, this has been resolved with c82425bad788d29206e070194bcf39a8ee8a64f4


qr codes dont load

qr codes for telegram and what app dont show ever when you First set up so cant use them in station

Same here on W11

Same here for Telegram and Wp

Hi everyone, Same here for Telegram, Discord and Whatsapp on Apple Silicon MB Pro with a fresh Station Install from DMG

Same here - W11 on a HP Spectre.

same here. Windows 10 and discord. No QR loading so I had to sign in manually. and then I just get a spinning discord logo instead of it actually loading.

Same here on Whatsapp with Station version 2.0.9 on MacOS 12.01
QR code not loading.

After reading this thread, the unresolved QR code for MacOS and Windows since Nov 30, 2021, I guess I have to continue using Rambox

Same ware w11

Same here on ubuntu 20.04

Fixed in 2.1.0


Replace regex redaction with PyMuPDF redaction

https://www.pivotaltracker.com/story/show/180900091
Closes: https://github.com/alphagov/notifications-template-preview/pull/621
As well as fixing the bug on the card, this also removes a significant chunk of code
as the new redaction approach is much simpler - we just didn't know about it when
we first approached this problem.
I've already done some testing of this change for edge cases and with DVLA, which
I documented in 1. Even so, we should be cautious as we now rewrite each PDF with
PyMuPDF, which we weren't before.
Please review commit by commit.
My plan is to deploy this cautiously, following our guidance 2.

@leohemsted I'm also cautiously optimistic of this.
I've now done all the manual, visual testing specified in the deployment guidance and can confirm no visual differences ✅. I also manually / visually checked the Hackney sample PDF, where I did see the expected change in the address block, which does now get redacted / replaced ✅ . I've also tested with DVLA ✅ .
Further testing options / tweaks:

Deploy a canary instance to limit any impact even further.
Gather more sample PDFs from services and test with those.

I'm not convinced we need to do more though - we do have our recovery process.
I'll ask for some more thoughts...

doing it late in the day is an unnecessary restraint in my eyes

The reason for deploying late in the day is because usage tends to be slightly lower then, although not by much so I'd also be in favour of lifting this restriction. I've made a tangential PR to fix a couple of issues with the guidance. You're welcome to raise this on there - also interested in any ideas for making it less manual.

So I've had a quick look at this.
I've only had time to properly look at the first commit which I'm having with on a line by line basis.
I haven't had time to scrutinise the other commits. However, I am in general up for this PR. Removing 1000 lines of code from template preview is a good thing.
Will need someone to look through properly and give it a green tick but I support the general aim of this PR.

Trial deployment complete: 3:30-4:30PM on Monday 21st February.
All letters sent during the trial window are now showing as delivered, with no issues reported by DVLA (also confirmed in writing). Analysis shows the trial window covered 90%+ of the PDF variations we've seen over the past week.
Given this success and the lack of any recent historical issues to justify more caution, I think we should merge and deploy this change as normal. Any objections?

Agreed in Slack this is OK to go out 🚀.


Add emitter for onDidChangeSelectionAndFocus event handling

Fixes #24738
VS Code merge brought this event, but it was added without initialization, that caused the error in the issue reported. This PR initializes it and fixes registering the new event handler.

Pull Request Test Coverage Report for Build<PHONE_NUMBER>

0 of 0   changed or added relevant lines in 0 files are covered.
2 unchanged lines in 2 files lost coverage.
Overall coverage decreased (-0.004%) to 41.576%

Files with Coverage Reduction
New Missed Lines
%

extensions/notebook/src/book/bookTreeView.ts
1
36.91%

extensions/notebook/src/dialog/configurePython/configurePathPage.ts
1
57.02%

Totals

Change from base Build<PHONE_NUMBER>:
-0.004%

Covered Lines:
30777

Relevant Lines:
69331

💛  - Coveralls


Add GCC 7 and non-Hunter build to Travis

Signed-off-by: Isaac Hier<EMAIL_ADDRESS>

Seeing as I just closed #46, I'm going to close this until further notice.


Tenant resolved in first request resolved for second request and so son

Hi @AndrewTriesToCode I'm new for this library and I've facing issue, where it for the first request it resolved the tenant correctly and after that all other request resolved to tenant which was resolved in first request.
I'm not sure, what I'm doing wrong.
here are details of code follow
Tenant Db context
public class TenantDbContext(DbContextOptions<TenantDbContext> options)
    : EFCoreStoreDbContext<Tenant>(options)
{
    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        base.OnModelCreating(modelBuilder);

        modelBuilder.Entity<Tenant>(entity =>
        {
            entity.HasQueryFilter(c=>c.IsDeleted==false);
            entity.Property(b => b.CreatedOn)
                .HasDefaultValueSql("getdate()");
            entity.ToTable(nameof(Tenant), b => b.IsTemporal());
            entity.HasData( new List<Tenant>()
            {
                new Tenant()
                {
                    Id = ApplicationInitialConstants.RootTenant.Id,
                    Identifier =ApplicationInitialConstants.RootTenant.Identifier,
                    IsActive = true,
                    Name = ApplicationInitialConstants.RootTenant.Name,
                    CreatedOn = DateTime.UtcNow,
                    ValidUpto = DateTime.MaxValue,
                    AdminEmail = ApplicationInitialConstants.RootUser.EmailAddress,
                    ChangeId = Guid.NewGuid().ToString()
                }
            });
        });
    }
}

Service registration
var connectionString
    = builder.Configuration["ConnectionStrings:DbContext"];

builder.Services
    .AddDbContext<TenantDbContext>(
        opts => { opts.UseSqlServer(connectionString); })
    .AddMultiTenant<Tenant>()
    .WithHostStrategy("{tenant}.api.*")
    .WithHeaderStrategy("x-tenant-identifier")
     .WithStaticStrategy("xyz")
    .WithEFCoreStore<TenantDbContext, Tenant>();

builder.Services.AddDbContext<ApplicationDbContext>(
    opts => { opts.UseSqlServer(connectionString); });

Middleware
app.UseCors(b => b.AllowAnyOrigin().AllowAnyHeader().AllowAnyMethod());
app.UseMultiTenant(); //addended to the middleware
app.UseSwagger();

Service to get current Tenant
public class CurrentTenantService(IMultiTenantContextAccessor<Tenant> multiTenantContextAccessor)
    : ICurrentTenantService
{
    public TenantDto? GetCurrent()
    {
        if (multiTenantContextAccessor?.MultiTenantContext is null ||
            multiTenantContextAccessor.MultiTenantContext.TenantInfo is null)
        {
            return new TenantDto()
            {
                Id = ApplicationInitialConstants.RootTenant.Id,
                Identifier = ApplicationtInitialConstants.RootTenant.Identifier,
                IsActive = true,
                Name = ApplicationInitialConstants.RootTenant.Name,
                CreatedOn = DateTime.UtcNow,
                ValidUpto = DateTime.MaxValue,
                AdminEmail = ApplicationInitialConstants.RootUser.EmailAddress
            };
        }

        var res = multiTenantContextAccessor.MultiTenantContext.TenantInfo;
        return res?.Adapt<TenantDto>();
    }
}

if I call end point with

abc.api.example.com , with header x-tenant-identifier:abc => abc get resolved
now for second request if I call xyz.api.example.com,  with header x-tenant-identifier:xyz it gets resolved to abc

I have found the issue.
I will detail of the issue here later.

I was getting all entity that implements  ITenant then looping through each of them and I was calling static method where I was passing currentTenantService.
var tenantEntities = allEntities
                .Where(e => typeof(ITenant).IsAssignableFrom(e.ClrType));
            foreach (var entityType in tenantEntities)
            {
                builder.Entity(entityType.ClrType).Property("TenantId").IsRequired();
                entityType.AddTenantQueryFilter(currentTenantService);
            }

static extension metho for filter
public static class TenantFilterQueryExtension
    {

        public static void AddTenantQueryFilter(
            this IMutableEntityType entityData, ICurrentTenantService currentTenantService)
        {
            var methodToCall = typeof(SoftDeleteQueryExtension)
                .GetMethod(nameof(GetTenantFilter),
                    BindingFlags.NonPublic | BindingFlags.Static)!
                .MakeGenericMethod(entityData.ClrType);

            var filter = methodToCall.Invoke(null, new object[] { currentTenantService });

            entityData.SetQueryFilter((LambdaExpression)filter!);

            entityData.AddIndex(entityData.FindProperty(nameof(ITenant.TenantId))!);
        }

        private static LambdaExpression GetTenantFilter<TEntity>(CurrentTenantService currentTenantService)
            where TEntity : class, ITenant
        {
            Expression<Func<TEntity, bool>> filter = x => x.TenantId == currentTenantService.GetCurrent().Id;
            return filter;
        }
}

when requesting was coming for that first time it was setting   query filter with that tenant and it was stating their till, we restart the application

Sorry I was late to reply. I see you ran into the model cache.
The tenant query filter is implemented in MultiTenantDbContext and its related extension methods in such a way to avoid this. Did these not work for your use case?

I was getting all entity that implements ITenant then looping through each of them and I was calling static method where I was passing currentTenantService.
var tenantEntities = allEntities
                .Where(e => typeof(ITenant).IsAssignableFrom(e.ClrType));
            foreach (var entityType in tenantEntities)
            {
                builder.Entity(entityType.ClrType).Property("TenantId").IsRequired();
                entityType.AddTenantQueryFilter(currentTenantService);
            }

static extension metho for filter
public static class TenantFilterQueryExtension
    {

        public static void AddTenantQueryFilter(
            this IMutableEntityType entityData, ICurrentTenantService currentTenantService)
        {
            var methodToCall = typeof(SoftDeleteQueryExtension)
                .GetMethod(nameof(GetTenantFilter),
                    BindingFlags.NonPublic | BindingFlags.Static)!
                .MakeGenericMethod(entityData.ClrType);

            var filter = methodToCall.Invoke(null, new object[] { currentTenantService });

            entityData.SetQueryFilter((LambdaExpression)filter!);

            entityData.AddIndex(entityData.FindProperty(nameof(ITenant.TenantId))!);
        }

        private static LambdaExpression GetTenantFilter<TEntity>(CurrentTenantService currentTenantService)
            where TEntity : class, ITenant
        {
            Expression<Func<TEntity, bool>> filter = x => x.TenantId == currentTenantService.GetCurrent().Id;
            return filter;
        }
}

when requesting was coming for that first time it was setting query filter with that tenant and it was stating their till, we restart the application

Hi @AndrewTriesToCode  np ta all
The other main db context I have does not inherit form MultiTenantDbContext instead it just inherits form IdentityDbContext.
I was not able to write code which will loop through each of the Entity that implements ITenant and add Global query filter to filter result by current tenant so I have ended up writing one statement for each of the entity in main db context OnModelCreating.
like this
  builder.Entity<Product>(entity =>
            {
                entity.HasQueryFilter(c => c.IsDeleted == false && c.TenantId == tenantGetterService.Tenant.Id);
            });
            builder.Entity<EntityVersion>(entity =>
            {
                entity
                    .HasKey(p => new { p.EntityName, p.Timestamp });
                entity.HasQueryFilter(c => c.TenantId == tenantGetterService.Tenant.Id);
            });

Can you please point me to that part of code where I can take a look.

The tenant query filter is implemented in MultiTenantDbContext and its related extension methods in such a way to avoid this. Did these not work for your use case?

in other words you reimplemented the logic Finbuckle provides in its EFCore support but that’s ok if it works for you!

hi,
If you don't want to inherit from MultiTenantDbContext but want to get the same functionality see this part of the docs:
https://www.finbuckle.com/MultiTenant/Docs/EFCore#adding-multitenant-functionality-to-an-existing-dbcontext
I need to fix the formatting on that page but it boils down to calling IsMultiTenant on your entities in OnConfiguring -- this should set up the query filters for you.
Then in SaveChanges and SaveChangesAsync call the provided methods as shown to enforce the multitenant logic.


Output as JSON

It would be awesome to get the whole output also as JSON
example:
fritzctl list thermostats --output=json

Thx for reporting. I Had this in mind for some time and it should be straightforward to implement. I will have to think of a sustainable schema.


Make node-fetch example actually work by using pokeapi

Update the example in /pages/guides/data-fetching.md to use the pokeapi like @FredKSchott suggested in #66

Also need to update that in https://astro-docs-preview.vercel.app/core-concepts/astro-pages

FYI: the docs have been successfully merged back into the main Astro repo: https://github.com/snowpackjs/astro/tree/main/docs
This issue will be migrated over soon, but if anyone can take a look at this issue before then, please remember to create a PR against the main astro repo instead.


rbd: Add cephArgs config option

This patch adds an rbd.cephArgs config option. It takes free form text,
and is used to set the CEPH_ARGS env var. This env var is mostly used to
set "--id" and "--cluster" CLI args, the former being the name client
user to use (instead of admin) and the latter for using a non-default
cluster name (default is Ceph).
Using this field, a non-admin client and keyring can be used. Using that
client successfully means that the keyring has to be present in
/etc/ceph, and that the client's auth caps are set correctly. It is easy
to get in a situation where those are wrong, and calls to "rbd" or
"rados" hang instead of issuing "operation not permitted". To help
combat this, the driver no longer supports multiple pools when cephArgs
is set. Only the single pool defined as the defaultPool is supported.
I would have removed multi-pool support entirely, but that would break
backwards compatibility, and I've seen users use this functionality. But
setting CephArgs limits you to one pool only.
Replaces #934
Fixes #924
Fixes #955
xref #957 (addresses parts of it)
This patch also has an unrelated, 2nd commit with a fix I found necessary while working on the new feature.
Calling cmd.Help() prints the help output, but it does not exit the
program. There were places in the code were would detect a critical
error, emit it stderr, then emit the help output, but not exit the
program. This caused the program to continue execution leading to
potential faults from nil dereferences depending on what went wrong. We
really just want to emit the help then shutdown.

Codecov Report

Merging #1035 into master will decrease coverage by 0.31%.
The diff coverage is n/a.

@@            Coverage Diff             @@
##           master    #1035      +/-   ##
==========================================
- Coverage    34.5%   34.19%   -0.32%
==========================================
  Files          36       36
  Lines        2901     2901
==========================================
- Hits         1001      992       -9
- Misses       1796     1806      +10
+ Partials      104      103       -1

Impacted Files
Coverage Δ

...storage/drivers/storage/vfs/storage/vfs_storage.go
38.12% <0%> (-2.16%)
:arrow_down:

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 3dce0e4...4137587. Read the comment docs.

@codenrhoden Are we exposing this to the docker managed plugin as well?

@clintkitson It's not there yet, but it absolutely should be.

Hi @codenrhoden,
Should we merge this PR or let you first expose the above env vars to the Docker plug-in?

@akutz no merge yet. When I asked @mvollman to review this, the comments ended up on his PR, #934.  I have some feedback in there to address still.

@mvollman okay, I've relaxed the previous restriction a bit, such that it still allows multi pool if you are only setting something like --cluster in CEPH_ARGS. Basically, since we default to the admin user, if you don't do something to change it to something else, we know it's still using the admin user. But if you use any of the flags to set the user, we don't know what is going to happen, so we take the safest route of only allowing you the pool you set.
A future enhancement could indeed be to allow a list of pools. I'd be happy if you could take a look.

HI @codenrhoden,
Please rebase this since I merged the doc change.

@codenrhoden I was waiting to review this once it was finished and then I just saw that it was merged.  I see that you have added cephArgs, but I do not see that you are using them.  I built and tested the code and I am not able to use a non-admin user.  Your rbd, rados and ceph commands need to be passed the cephArgs.

@mvollman The CEPH_ARGS env var gets set here: https://github.com/codedellemc/rexray/blob/a35e8bba97a94f427dd9da965332e220aee22d4c/libstorage/drivers/storage/rbd/utils/utils.go#L378-L380
in my tests, I was able to use both a non-admin user, and use a custom cluster name.

@mvollman FWIW, there is an RC being created right now, and once that is up I'd be thrilled if you can install it and give it a try. That way we are sure of the version.


Update 'Reference assemblies'

There is no information on how we can reference reference assemblies such that the actual implementation flows in from the parent project references (if possible), just like what we have with netstandard.
Also, some info on the difference with multi-targeting as the two have some conceptual overlap, I think.
(I might got this all wrong but the docs do not clearup any of that at all)

Document Details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: 2652b073-4103-1426-af2c-cea38a6266de
Version Independent ID: 26649234-af05-dd2b-b0b7-c648d38c471b
Content: Reference assemblies
Content Source: docs/standard/assembly/reference-assemblies.md
Product: dotnet
Technology: dotnet-standard
GitHub Login: @MSDN-WhiteKnight
Microsoft Alias: dapine

@alrz Sorry for the delay in answering your question. I'll send an email around to see if anyone knows.
Ping @MSDN-WhiteKnight

Ping @MSDN-WhiteKnight

Unfortunately i don't know how to update article to better explain what @alrz is asking about. What implementation assembly is mapped to the particular reference (either to reference assembly or to implementation assembly) is always decided by the component of runtime, Fusion in .NET Framework (https://docs.microsoft.com/en-us/dotnet/framework/deployment/how-the-runtime-locates-assemblies) or load context in .NET Core. It has no concept of project references, it just scans directories in certain order. As for why .NET Standard enables referencing "non-existant" netstandard.dll and then binding it to real assemblies at runtime, this is because any .NET Standard-compliant runtime contains stub netstandard.dll with tons of type forwarders to real implementations. Indeed, this is different from multi-targeting, because multi-targeting is about producing different deployments for different runtimes, not resolving a single deployment for multiple runtimes.
This all is not directly related to reference assemblies, but we can probably add links to some related articles that explain this. I just don't know up-to-date article about runtime assembly binding that considers .NET Core and .NET 5.

The article does mention ProduceReferenceAssembly msbuild property, but not how the client code could use it.
I find a blog post by @clairernovotny discussing this very topic: https://claires.site/2018/07/09/create-and-pack-reference-assemblies-made-easy but it uses a custom sdk and there's no mention of ProduceReferenceAssembly (probably because it was not available at the time?)
The only usages of ProduceReferenceAssembly I find in github is in dotnet/wpf and xamarin, but there is no info about how it works.

For project references, they will be used automatically if ProduceReferenceAssembly is set in referenced project. Compilers will consider reference assembly as input whenever it's available, unless CompileUsingReferenceAssemblies property is set to false. This is documented here in roslyn docs: https://github.com/dotnet/roslyn/blob/master/docs/features/refout.md#msbuild , but wasn't included in this article, because the article is mainly about reference assemblies themselves, not MSBuild properties. For any other uses, the client selects the assembly file to reference manually, so it just needs to pick the produced reference assembly (from the ref/ directory under build output).

The only usages of ProduceReferenceAssembly I find in github is in dotnet/wpf and xamarin, but there is no info about how it works.

From what I've found, WPF does not use ProduceReferenceAssembly, instead it uses custom mechanism to generate separate projects for reference assemblies: https://github.com/dotnet/wpf/blob/master/Documentation/gen-api.md CoreFX libraries do the same.

@alrz I'm wondering if you would have more luck asking this question on https://github.com/dotnet/core and then if after that discussion, if there is something to document/improve over here, we can follow up?


GroupBy returns null result after upgrading from 0.9.2 to 0.10.1

Hey,
caching is enabled on both historical and broker nodes. druid.broker.cache.unCacheable=["groupBy", "select"]
And this plyql 0.11.2query:
http -v  http://host/plyql ""sql""="SELECT COUNT(DISTINCT diid) as gwid FROM gwiq-daily-p WHERE (('2017-10-01T00:00:00' <= __time AND __time <= '2017-10-10T00:00:00')) AND (cid = 'c0248') GROUP BY d_site"

returns :
{
    "result": {
        "attributes": [
            {
                "name": "split0",
                "type": "STRING"
            },
            {
                "name": "gwid",
                "type": "NUMBER"
            }
        ],
        "data": [
            {
                "gwid": 23652840.734643567,
                "split0": null
            }
        ],
        "keys": [
            "split0"
        ]
    }
}

However it is not fully deterministic, one time it returned correct split0 result, but after I tried it a couple of times more, it returned only null.

Not sure if the GroupBy querying changed too in 0.10.1, for instance this native broker/druid/v2/sql/ groupBy query doesn't return the split values :
 $ http http://broker/druid/v2/sql/ ""query""="SELECT COUNT(*) FROM \"gwiq-daily-p\" WHERE cid = 'c0248' GROUP BY 'd_site'"
[
    {
        "EXPR$0": 25450854
    }
]

How can  I get the split results ??

@l15k4 for the time filter in Druid SQL, it should be TIMESTAMP '2017-07-01 00:00:00' >= __time. The filter you have provided, '2017-07-01T00:00:00' >= '__time', is always false so no rows would be returned.
If you run plyql from the command line in verbose mode (bin/plyql -h <IP_ADDRESS> -q "your query" -v) then it will show the Druid queries that get made -- this will help debug.

In that case it must be a plyql problem, this works in druid-native-sql
SELECT \"d_site\", COUNT(*) FROM \"gwiq-daily-p\" WHERE TIMESTAMP '2017-07-01 00:00:00' >= __time AND cid = 'c0248' GROUP BY \"d_site\"

but corresponding plyql sql query (which we use in production) returns null :
SELECT d_site, COUNT(*) FROM gwiq-daily-p WHERE '2017-07-01T00:00:00' >= __time AND cid = 'c0248' GROUP BY d_site

we use plyql-server, I cannot use plyql-client for security reasons, so I cannot check the resulting native query json.

Interesting, not sure what is going on with plyql, but good to know that druid sql seems to be working OK.
Maybe running the plyql server with -v would get it to log its Druid queries to its log file.

-v on plyql-server only logs incoming SQL queries ....
-v on plyql-client only logs plywood expressions ...

It only happens for d_site dimension, so there is a problem with plyql metadata resolution, closing...


quartus-prime-lite: 22.1std.2.922 -> 23.1std.0.991

Description of changes
Update Quartus Prime Lite to 23.1
Homepage of this version is https://www.intel.com/content/www/us/en/software-kit/795187/intel-quartus-prime-lite-edition-design-software-version-23-1-for-linux.html

Things done

Built on platform(s)

[x] x86_64-linux
[ ] aarch64-linux
[ ] x86_64-darwin
[ ] aarch64-darwin

For non-Linux: Is sandboxing enabled in nix.conf? (See Nix manual)

[ ] sandbox = relaxed
[ ] sandbox = true

[x] Tested, as applicable:

NixOS test(s) (look inside nixos/tests)
and/or package tests
or, for functions and "core" functionality, tests in lib/tests or pkgs/test
made sure NixOS tests are linked to the relevant packages

[ ] Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage
[x] Tested basic functionality of all binary files (usually in ./result/bin/)
24.05 Release Notes (or backporting 23.05 and 23.11 Release notes)

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module

[x] Fits CONTRIBUTING.md.

Add a :+1: reaction to pull requests you find important.

same workaround as v22.1.2 applies for opening the quartus help links in a browser: https://github.com/NixOS/nixpkgs/pull/277610#issuecomment-1874367434
I didn't manage to fix this via xdg.portal.xdgOpenUsePortal as suggested previously.


how to add a default query in every route path

My project need to need to have a query region for every url path, like
http://xxx.com/path?region=3

Whatever url users input , it will add a region query that retrived from store
I try to add a onEnter in rootRoute configuration like
const routes =
	{
		onEnter: function (nextState, replaceState) {
			console.log(nextState, replaceState, store.getState())
			replaceState({
		    	nextPathname: nextState.location.pathname
		    }, nextState.location.pathname, {region: store.getState().region.id})
		},
		path: '/',
		component: require('page/App'),

	    indexRoute: {
	        getComponent(location, cb){

	          	require.ensure([], (require) => {
					cb(null, require('page/Home.jsx'))
				})

	    	}
	  	},
		childRoutes: [ ... ]
	}

but it causes loop many times in the onEnter function, and  I get Error Invalid regular expression: /^/+/*([\s\S]*?)$/: Stack overflow or   Maximum call stack size exceeded

For questions and support, please visit our channel on Reactiflux or Stack Overflow. The issue tracker is exclusively for bug reports and feature requests.


Consistent and informative style for the "Options" section in rule documentation

Currently, this is how the documentation for F821 is rendered in PyCharm and VSCode:

PyCharm
VSCode

Zoomed in:

And this is the only example I can find in which a description is included. All other 125 similar sections follow this format, plain and uninformative:
## Options
- `foo.option1`
- `bar.option2`

The lack of proper links make such options non-interactable: The user can't just jump straight to the docs but forced to search all on their own. Leaving the IDE while working is uncomfortable.

Personally, I have a special use case as a plugin developer: resolving these links in-place. In other words, the rule's documentation can be directly and immediately replaced with the option's documentation, right inside the IDE, no browser involved.
PyCharm allows plugins to determine what to do on link clicks, and I want to take advantage of that. I'm already doing this for the options' documentation (e.g., extend-select, which mentions select). Currently, I'm forced to do the error-prone task of parsing Markdown myself; this shouldn't be necessary.

Adding the link to the options makes sense to me


add checkbox on config-email page and test code, modify project access level label

Coverage decreased (-0.03%) to 56.18% when pulling ad38106642883823f7b14ccad85511c3e6f6b09a on pengpengshui:master into 5b2ececae842e28c83c5de250ba7610b8dadbc10 on vmware:master.


Versioned Documentation

My windows terminal version is 1.13.11432.0, this is the one I've god after installing windows, so far I haven't received upgrade suggestions, even though the latest version at the moment is v1.14.186.
Anyways. The selectAll action is a feature from the v1.14.143 release. I've tried it with my version and obviously it did not worked.
A tab to select documentation for specific release, not only for the latest (and previews) would be really convenient., something like this

Thanks for this suggestion @aiishymanel, but version selection within the docs is actually quite complicated and only used when absolutely necessary. Windows Terminal can now be auto-updated by installing terminal with the Microsoft Store if you are interested in maintaining the latest version: https://apps.microsoft.com/store/detail/windows-terminal/9N0DX20HK701?hl=en-us&gl=US
Otherwise, I recommend just referencing the Release notes here: https://github.com/microsoft/terminal/releases


Feature/integration-test-save-new-consent

This PR:

adds the client side usage of the Save New Consent use case

Codecov Report

Merging #15 into feature/set-vendor-consents-usecase will decrease coverage by 0.46%.
The diff coverage is 100%.

@@                           Coverage Diff                           @@
##           feature/set-vendor-consents-usecase      #15      +/-   ##
=======================================================================
- Coverage                                95.42%   94.96%   -0.47%
=======================================================================
  Files                                       18       19       +1
  Lines                                      700      735      +35
  Branches                                    56       57       +1
=======================================================================
+ Hits                                       668      698      +30
- Misses                                      32       37       +5

Impacted Files
Coverage Δ

...cture/controller/IABConsentManagementProviderV1.js
93.44% <100%> (ø)
:arrow_up:

src/cmp/infrastructure/Log.js
85.71% <100%> (ø)

...epository/ConsentStringVendorConsentsRepository.js
100% <100%> (ø)
:arrow_up:

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 366c0c5...ae24863. Read the comment docs.


HV-1762 Avoid cloning overhead from Method.getParameterTypes()

See https://hibernate.atlassian.net/browse/HV-1762

Can one of the admins add this person to the trusted builders? (reply with: "add to whitelist" or "ok to test")

ok to test

@dreis2211 BTW, we made a lot of improvements to the runtime performances of HV but I suspect there's a lot of room for improvements in the bootstrap part. When I mean bootstrap, I also mean the part when we initialize the metadata of a given bean (which might happen at runtime but only once for a given bean class).
If you're interested, you could add a JMH benchmarks for the bootstrap in our performance module and profile that. Creating a PredefinedScopeValidatorFactory is probably the best way to work on that. I remember we had quite a lot of map initializations due to some reflection calls. I discovered that when working on something unrelated and didn't get to the bottom of it.
Given we are all about improving startup time right now, that would be a cool pet project.

@gsmet I doubt that I will have time for that, but thanks for letting me know. My startup time improvement efforts these days go into the Spring ecosystem, but maybe I'll find some time in between.

But for completeness reasons: Could you elaborate on the PredefinedScopeValidatorFactory thought a bit more? Is that the hotspot that needs improvement?

No, it's just that if you use that one you are sure all the metadata have been properly initialized. Whereas with the standard one, metadata for a class are generated at the first validation of a bean of this class. This is the one we use in Quarkus.