[SPARK-37369][SQL] Avoid redundant ColumnarToRow transistion on InMemoryTableScan

What changes were proposed in this pull request?

This patch proposes to let InMemoryTableScanExec produces row output directly, if its parent query plan only accepts rows instead of columnar output.
Why are the changes needed?

We have a rule to insert columnar transition between row-based and columnar query plans. InMemoryTableScanExec can produce columnar output. So if its parent plan isn't columnar, the rule adds a ColumnarToRow between them, e.g.,
+- Union
:- ColumnarToRow
: +- InMemoryTableScan i#8, j#9
: +- InMemoryRelation i#8, j#9, StorageLevel(disk, memory, deserialized, 1 replicas)

But InMemoryTableScanExec is different because it can convert from cached batch to columnar batch or row.
For such case, we ask InMemoryTableScanExec to convert cached batch to columnar batch, and then convert to row in the added ColumnarToRow, before the parent query.
So for such case, we can simply ask InMemoryTableScanExec to produce row output instead of a redundant conversion.
Does this PR introduce any user-facing change?

No
How was this patch tested?

Existing tests.

Test build #145370 has started for PR 34642 at commit b73941c.

Test build #145370 has finished for PR 34642 at commit b73941c.

This patch fails to build.
This patch merges cleanly.
This patch adds no public classes.

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

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

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

Test build #145373 has started for PR 34642 at commit 6c379f4.

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

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

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

Test build #145373 has finished for PR 34642 at commit 6c379f4.

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

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

Thanks @attilapiros. Yea, I will add some tests later.

Test build #145440 has started for PR 34642 at commit 7dc5b51.

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

Test build #145444 has started for PR 34642 at commit 9c057b1.

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

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

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

Test build #145447 has started for PR 34642 at commit eb85130.

Test build #145440 has finished for PR 34642 at commit 7dc5b51.

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

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

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

Test build #145444 has finished for PR 34642 at commit 9c057b1.

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

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

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

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

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

Test build #145447 has finished for PR 34642 at commit eb85130.

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

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

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

@viirya
Could it be at the root of this problem we have a missing flag?
I think we have 3 different states here and only 1 boolean flag:

supports columnar
supports row based

true
false

false
true

true
true

So we might abuse supportsColumnar == false and take it as supportsRowBased.
What about introducing a new flag right beside the old one:
https://github.com/apache/spark/blob/eb851308f9b562bb84f09f7ef8b01e312df9b5e5/sql/core/src/main/scala/org/apache/spark/sql/execution/SparkPlan.scala#L77
Something like:
 def supportsRowBased: Boolean = !supportsColumnar

And in InMemoryTableScanExec we can override it.
This would a more generic solution as any node which support both can avoid to use the unneeded to-row transition.
WDYT?

Ideally, yes, it is a more general one to have another flag. In practice, I suspect if there will be more such nodes that could choose to output row-based or columnar output for some conditions? For the in-memory relation scan here, adding a new flag supportsRowBased seems not bring too much benefit?

Test build #145474 has started for PR 34642 at commit 5fa5aeb.

cc @cloud-fan @dongjoon-hyun @sunchao

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

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

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

Test build #145474 has finished for PR 34642 at commit 5fa5aeb.

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

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

I'm trying to understand the motivation. Is it because in-memory table can output rows efficiently? Parquet scan can also output rows but we try our best to output columnar batches.

I'm trying to understand the motivation. Is it because in-memory table can output rows efficiently? Parquet scan can also output rows but we try our best to output columnar batches.

For Parquet scan, when we say it to output columnar batches, actually it behaves quite different than row-based approach because it runs vectorized Parquet reader. I think this is why we try our best to do columnar batches on Parquet or Orc scan because vectorized reader usually has much better performance which can counteract the cost of columnar-to-row transition if any later.
For in-memory table, it is not actually doing a physical disk scan but the data is already serialized in memory. The motivation is that during local experiments I found columnar-to-row transition is costly and the columnar output looks meaningless.

Test build #145556 has started for PR 34642 at commit f31b061.

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

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

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

Test build #145556 has finished for PR 34642 at commit f31b061.

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

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

The rationalization seems to make sense; supporting row read and columnar read are not mutually exclusive, and it might not be always true that columnar read + columnar-to-row is better than row read (if we are always in favor of columnar read) or vice versa. Even it only supports columnar read by nature, there might be possibility it can convert its columnar form to row more efficiently than relying on Spark's columnar-to-row conversion. I'm not referring any data source, but just thinking out loud about possibility.
That said, for leaf node (each physical node probably has its requirement on row vs columnar) it sounds valid we allow supporting both and let Spark take one of, depending on the downstream node or preference if both are acceptable without addition conversion. (+1 on @attilapiros idea, though we may want to take this carefully to avoid requiring lots of changes on existing codes.)
If there's a case columar read + columnar-to-row is always better than row read, simply mark as don't support row read and then Spark will take care of conversion.

Although I'm not sure if this would be general case, since @attilapiros and @HeartSaVioR both think it is good idea to have a general flag. I can change this to add one. cc @cloud-fan WDYT?

Ideally saying, we only have three options instead of four. It doesn't make sense both support RDD and support columnar are false. That said, there should be "a" function which provides support ranges, one of three RDD / columnar / both. We may want to be careful on going with this way, because it requires all the nodes to be changed.
If we consider "more formats" in the future (don't know it is theoretically possible), a flag per format would be better way. This change also brings major changes on existing implementation of nodes, depending on the default value. (I guess the ideal default value of supportRDD would be true, but then we need to explicitly set it to false for existing nodes which supportColumnar is true since in many cases they will throw UnsupportedException for execute().)
It might be a painful change in both ways, but in-memory table seems to be a good rationalization.

I'm reluctant to add too much change here because before any real case, too complicated approach seems an early optimization to me. Maybe this in-memory relation is the only case we will encounter? That's said I can add the supportRDD method as @attilapiros and @HeartSaVioR asked, but more than that? I really don't think we need to do it now.

@attilapiros @HeartSaVioR @cloud-fan Added supportsRowBased. Now the columnar rule only adds ColumnarToRowExec to nodes which only outputs columnar format. If row-based is supported like InMemoryTableScanExec, no redundant transition will be added.

Test build #146015 has started for PR 34642 at commit 7a150a8.

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

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

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

Test build #146015 has finished for PR 34642 at commit 7a150a8.

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

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

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

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

Test build #146021 has started for PR 34642 at commit 788ae78.

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

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

Test build #146017 has finished for PR 34642 at commit 2d078e1.

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

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

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

Test build #146021 has finished for PR 34642 at commit 788ae78.

This patch passes all tests.
This patch merges cleanly.
This patch adds the following public classes (experimental):
class TimedeltaOps(DataTypeOps):
class TimedeltaIndex(Index):
class MissingPandasLikeTimedeltaIndex(MissingPandasLikeIndex):
class PandasSQLStringFormatter(string.Formatter):
class UDFBasicProfiler(BasicProfiler):
class CloudPickleSerializer(FramedSerializer):
class SQLStringFormatter(string.Formatter):
class ExecutorPodsPollingSnapshotSource(
class ExecutorPodsWatchSnapshotSource(
class ExecutorRollPlugin extends SparkPlugin with Logging
  class AnsiCombinedTypeCoercionRule(rules: Seq[TypeCoercionRule]) extends
case class RelationTimeTravel(
case class AsOfTimestamp(timestamp: Long) extends TimeTravelSpec
case class AsOfVersion(version: String) extends TimeTravelSpec
 class CombinedTypeCoercionRule(rules: Seq[TypeCoercionRule]) extends TypeCoercionRule
case class PrettyPythonUDF(
case class TryElementAt(left: Expression, right: Expression, child: Expression)
case class ConvertTimezone(
case class UnclosedCommentProcessor(
case class CreateTable(
case class TableSpec(
case class OptimizeSkewedJoin(ensureRequirements: EnsureRequirements)

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

cc @sunchao @dongjoon-hyun

cc. @revans2 @tgravescs @andygrove
I'd like to see reviews from them to ensure we don't break the origin intention of making the serializer pluggable.

Test build #146065 has started for PR 34642 at commit a216a6d.

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

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

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

Test build #146065 has finished for PR 34642 at commit a216a6d.

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

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

Test build #146079 has started for PR 34642 at commit dc9ad83.

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

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

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

Test build #146079 has finished for PR 34642 at commit dc9ad83.

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

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

I think this change should be pretty clear. If no more comments or objection, I will merge this in next few days. Thanks.

@HeartSaVioR Updated the description. Thanks.

Thank you all! Merging to master.

we can simply ask InMemoryTableScanExec to produce row output instead of a redundant conversion.

Sorry for the late review. How do we "ask" for producing row output? I don't see any related change to the in-memory table scan in this PR.

Sorry for the late review. How do we "ask" for producing row output? I don't see any related change to the in-memory table scan in this PR.

Sorry for confusion. I should say we can let InMemoryTableScanExec to produce row output. We let the transition rule knows exactly the in-memory scan can do it via the newly added supportsRowBased flag.


Set wasmd to v.0.23.0

Resolves #1017

Could you have a look at the CI fails? The problem seems simple to resolve:
out of gas in location: WriteFlat; gasWanted: 80000, gasUsed: 80293: out of gas
    at assertIsDeliverTxSuccess (/home/circleci/project/packages/stargate/build/stargateclient.js:32:15)
    at main (/home/circleci/project/scripts/wasmd/send_first.js:31:3)

We use 80_000 in a few places as the default fee for a bank send. This seems to be a little low. We can just increase it consistently in all places. Many wallets use 200_000 for that these days, which is plenty.

Now the expected contract addresses fail in tests. This is because in the upgrade from Cosmos SDK 0.42 to 0.45, contract addresses were changed from a 20 byte format to a 32 byte format. This only affects the addresses of instantiated contracts, not the regular user accounts.
You see the new addresses when running ./scripts/wasmd/start.sh && ./scripts/wasmd/init.sh locally. They need to be updated in the testing constants.


[Suggestion] Support for Widgets

After using android for many years I've been used to using widgets. Would it be possible to add them as pinned apps? In lieu of Live Tiles. I think supporting interactivity would be too complex but at least being able to see them would be quite nice.

thanks I will look how widgets work and see if I can implement them in a webview (maybe by using webrtc not sure)


Help. What is the encoding for GDL90 messages over WebSocket

Stratux version:

Stratux config:
SDR

[ ] single
[X] dual

GPS

[X] yes
[ ] no
type:

AHRS

[X] yes
[ ] no

power source:
usb cable:

EFB app and version: (e.g., WingX Pro7 8.6.2)
I am the developer of AvNav so its about AvNav
EFB platform: (e.g., iOS 9.2) iOS and Android
EFB hardware: (e.g., iPad Mini 2) Mini, iPAD etc

Description of your issue:

I am trying to decode the ws://<IP_ADDRESS>/gdl90 WebSocket messages from Javascript App in iOS safari (ours is a PWA). It seems Stratux does not set message type to Binary so they end up as "String" in iOS Safari client. After that its difficult to figure just how to decode this string - I have tried various ways including TextEncoder but data does not come out correct.
It would have been nice if message type was binary because browsers can then receive it as binary. I am not asking to change this at this point, but just want to know how to decode a byte[] sent via Go Websocket that ends up as string in javascript WebSocket client! To me it seems incompatible
Any ideas ?

My code is like this:
let client = new ReconnectingWebsocket("ws://<IP_ADDRESS>/gdl90");
client.binaryType = 'arraybuffer'
client.onmessage = (event: MessageEvent) => {
console.log("ADSB  Buffer is String: " + event.type)
console.log("ADSB data: " + event.data
})
Stratux send "strings" like this and below and encoder like
data = new TextEncoder("utf-8").encode(event.data)
or any other encoder/decoder does nt seem to have produced valid bytestream.
"fhQQoNN0HUWKy29GKKmJGJAWxANBQUwxNDg3AABG1X4="
"fgARAfqhAADiA34="
"fhQQoNN0HUWOy28RKKmJGKAWwwNBQUwxNDg3AAAIFH4="
"flNYAQEBBQEC/////wH4AAYAAwAAAAMAAAEiAZcAonh+"
"fhQQoNN0HUWOy28RKKmJGKAWwwNBQUwxNDg3AAAIFH4="

Figured its base64 encoded with some extra quote characters.
Closing.
Thanks.

Hi,  Did you resolve this GDL90 decoding problem?  If I do a base64 decode the data doesn't match the message description for a GDL90 heartbeat message lets say.
Thanks,
Steve


Consider removing dark/light theme toggle

Currently there is a user-facing toggle to change between light theme, dark theme, or 'system' (match whatever the OS theme is).
This manual toggle was originally added for user convenience. Having it be a manual setting requires quite a lot of behind-the-scenes work with JavaScript to remember the setting, set the HTML attributes, and try to avoid a flash-of-wrong-theme on each page load. This adds complexity and has a minor slowdown on loading speeds.
I'm not sure how many people actually use this toggle on anything but the default. (I don't collect any sort of analytics or events tracking, after all.)
The theme code would be a lot simpler if it always mirrored the system setting, in which case it could be implemented purely in CSS using the prefers-color-scheme media query.

I've had at least one person say they prefer having and actively use the manual toggle, so that's something.


Correct StackOverflow links

Motivation
CONTRIBUTING.md listed one link to StackOverflow site which was not related to this repository as it addressed Kentico Kontent, not Kentico EMS.
Checklist

[X] Code follows coding conventions held in this repo
[X] Automated tests have been added
[X] Tests are passing
[X] Docs have been updated (if applicable)
[X] Temporary settings (e.g. variables used during development and testing) have been reverted to defaults

How to test
Ensure that both links preceded by paragraph "To get help with coding and structuring your projects, use StackOverflow to ask questions with one of the following tags:" work and point at kentico-mvc and kentico tags.

Testing:
links point at proper tags.


Interpolate displayVersion into the right place in the tree

Why
Top-level displayVersion is actually the semantically-relevant minified version, .runner.[*].displayVersion is the full version string
What changed
Interpolate values from the new override parameter
Test plan
$ nix build .#'"nodejs-16"'
$ jq . < result | jq '.displayVersion, .runners.nodeJS.displayVersion'
"16"
"16.18.1"

Rollout
Describe any procedures or requirements needed to roll this out safely (or check the box below)

[x] This is fully backward and forward compatible

I believe this is now good to go.


Version 1.0

What does a 1.0 release look like? Personally, I feel like this crate is pretty feature complete as-is that it could be close to a 1.0 release.

Thanks for starting this discussion @frewsxcv. I agree that we are pretty close to 1.0.
I think #43 is the biggest open question. We can't currently support lifetime parameterized types because of the shrink method and its signature.
Relatedly, I've been thinking for a while that we might want to remove the shrink method completely and only support "internal reduction", i.e. what happens with cargo fuzz tmin where you (or the fuzz engine) reduce the byte string rather than the structured type created from the byte string via Arbirary. This would remove a bunch of code from the crate and make the API surface smaller. In practice I've also found cargo fuzz tmin to be easier to use than Arbitrary::shrink and I've always been satisfied with the amount it was able to reduce the test case.

Yeah I think we're pretty close to 1.0 though we should maybe try and fix the "replace main" thing and some of the shrinking stuff

The replace main thing is for the libfuzzer crate, yeah?

Yeah, fuzz targets shouldn't have to do that IMO.
Also, I posted this elsewhere but we should probably have a "major" pre 1.0 release before 1.0 for a smooth transition

1.0.0-rc1 has been published! what else are we considering including in 1.0.0? no-std? more reference implementations now that we have a lifetime param?

1.0 development lives on this branch https://github.com/rust-fuzz/arbitrary/tree/staging-1.0

Would be good to advertise the 1.0 rc on users.rust-lang.org, r/rust, and twitter and give a deadline for when we expect to publish 1.0 (two weeks?).

1.0.0-rc1 has been published! what else are we considering including in 1.0.0? no-std? more reference implementations now that we have a lifetime param?

I personally can't think of any solid use case for no-std. Even if the system under test is no-std, the tests/fuzz targets don't have to be, and if your target has enough for libfuzzer, it should have enough for std. Not sure about other fuzz engines... Mostly it seems like adding no-std support would be a bunch of busy work that no one would end up actually using but would impose additional maintenance and CI overheads on us.
impl<'a> Arbtirary<'a> for &'a [u8] would be nice to sneak in there.also
That's all I can think of.

Potential breaking change we might want to make before 1.0: should Unstructured::choose's result type be an Option<T> and it should return None rather than panicking when given an an empty set of choices?

Thinking out loud, but noticed we have a get_bytes method on Unstructured. Wonder if we should drop the get_ prefix to match Rust's convention of not having get_ prefixes. I don't feel strongly, just something that came to mind. I'm working on the &'a [T] impl now.

Wonder if we should drop the get_ prefix to match Rust's convention of not having get_ prefixes.

Sounds reasonable to me.

Wonder if we should drop the get_ prefix to match Rust's convention of not having get_ prefixes.

Sounds reasonable to me.

Wonder if we should drop the get_ prefix to match Rust's convention of not having get_ prefixes.

Sounds reasonable to me.

https://github.com/rust-fuzz/arbitrary/pull/70

Wonder if we should drop the get_ prefix to match Rust's convention of not having get_ prefixes.

Sounds reasonable to me.

https://github.com/rust-fuzz/arbitrary/pull/70

Just skimmed through cargo doc on the staging-1.0 branch and things are looking good! Anyone else see anything else worth changing before 1.0?

Opened a pull request for 1.0.0: https://github.com/rust-fuzz/arbitrary/pull/72
Anything else to update besides the changelog?

I'm a little concerned with releasing 1.0 immediately because, AFAIK, we haven't advertised the release candidates at all, so we don't know if there is anything we're overlooking that people would find by playing with it in their existing code bases.
I think it makes sense to post to users.rust-lang.org, r/rust, and on twitter with a link to the changelog and instructions on how to try out the release candidate (perhaps these instructions could be embedded in the changelog?), and then give it a week or two after the announcement before we actually release 1.0.
I can make these posts if you don't want to, @frewsxcv.

I've been feeling pretty impatient and anxious recently, so my thinking is if we do overlook something major in the 1.0 design, we can fix it in a follow-up release, and if necessary a 2.0 release. But I acknowledge that's not how everyone prefers to release things in the open source world, so it's not something I feel strongly about. I do appreciate the thought the thought and consideration you're putting in to make sure the 1.0 is really solid 💟. In general, I've been feeling impatient recently which is definitely affecting my headspace around this.

I can make these posts if you don't want to, @frewsxcv.

I've passed the upper bound of amount of time I allocated for myself for this, so I'd love to hand this off to someone else, whomever has capacity.

Thanks again for all your work on pushing this to 1.0 @frewsxcv. Sorry this advertising stuff got dropped on the floor, this shouldn't have stretched on this long, and if we had started advertising earlier I think things would have been smoother and not as drawn out.
I'll make a new rc release with the unreleased stuff in 1.0-release and then post to various places.

Doing an rc release seems good to me

https://users.rust-lang.org/t/the-arbitrary-crate-is-approaching-1-0/55370
https://www.reddit.com/r/rust/comments/lgadgq/the_arbitrary_crate_is_approaching_10/
https://twitter.com/fitzgen/status/1359215128122560515

Thanks for publicizing this @fitzgen
It feels like the conversation has slowed down. Besides this, do we see anything else worth taking action on?

That is all that I'm aware of. Was going to fix that and cut the 1.0 release on tuesday, unless something comes up.
Of course, if anyone wants to make a PR to fix that docs issue before then, be my guest :)

1.0 branch merged; making crates.io releases now.

Published on crates.io and tagged in github! :tada:
Thanks again everyone involved in this push, especially @frewsxcv!! :heart:

Twitter announcement: https://twitter.com/fitzgen/status/1364644251099820036

u.r-l.o post: https://users.rust-lang.org/t/arbitrary-version-1-0-released/56100

r/rust post: https://www.reddit.com/r/rust/comments/lrjzms/arbitrary_version_10_released/

Thanks for wrapping all this up @fitzgen! 🙇🏻


visual notifications for "unseen grid activity" and "unseen channel activity" in version 2.8

On my nmoplus location on hub with version 2.0.6 receive I the visual notification how on screenshot - and without delay. On my several locations (for example gerzilla.de or hub.libranet.de) with the version 2.8 receive I none visual notifications. Primary hub for nmoplus is libranet.de. Details. visual notifications for Unseen grid activity and Unseen channel activity in version 2.8

In 2.8, notifications are now displayed on the right side of the content. On small displays which do not have space for the right side, you will need to click the ! (inside a triangle) to display the notifications and right side region.


Add more instructions and handling for first time iOS run

#10446, #10135

Nice! LGTM modulo a few doc comment nits.

re-lgtm


Couldn't create execution plan from logical plan because of: Index 2 out of bounds for length 2

CrateDB version
5.4.3
CrateDB setup information
Use the system dataset: sys.summits
Problem description
Out of bound:
SQLParseException[Couldn't create execution plan from logical plan because of: Index 2 out of bounds for length 2:
GroupHashAggregate["collection_count(collect_set(country))", "collection_count(collect_set(mountain))", "collection_count(collect_set(country))"] (rows=2)
  └ Union["collection_count(collect_set(country))", "collection_count(collect_set(mountain))"] (rows=2)
    ├ GroupHashAggregate[collection_count(collect_set(country)), collection_count(collect_set(mountain)), collection_count(collect_set(country))] (rows=1)
    │  └ HashAggregate[collect_set(country), collect_set(mountain), collect_set(country)] (rows=1)
    │    └ NestedLoopJoin[CROSS] (rows=unknown)
    │      ├ NestedLoopJoin[INNER | (country > country)] (rows=unknown)
    │      │  ├ Rename[country] AS t1 (rows=unknown)
    │      │  │  └ Collect[sys.summits | [country] | true] (rows=unknown)
    │      │  └ Rename[mountain, country] AS t2 (rows=unknown)
    │      │    └ Collect[sys.summits | [mountain, country] | true] (rows=unknown)
    │      └ Rename[country] AS t3 (rows=unknown)
    │        └ Collect[sys.summits | [country] | true] (rows=unknown)
    └ Eval[collection_count(collect_set(country)), collection_count(collect_set(mountain))] (rows=1)
      └ HashAggregate[collect_set(country), collect_set(mountain)] (rows=1)
        └ NestedLoopJoin[CROSS] (rows=unknown)
          ├ NestedLoopJoin[INNER | (mountain > mountain)] (rows=unknown)
          │  ├ Rename[mountain] AS t2 (rows=unknown)
          │  │  └ Collect[sys.summits | [mountain] | true] (rows=unknown)
          │  └ Rename[mountain] AS t3 (rows=unknown)
          │    └ Collect[sys.summits | [mountain] | true] (rows=unknown)
          └ Rename[country] AS t1 (rows=unknown)
            └ Collect[sys.summits | [country] | true] (rows=unknown)]

Steps to Reproduce
Run:
SELECT DISTINCT count (distinct T1.country), count (distinct T2.mountain), count (distinct T3.country) FROM sys.summits as T1 INNER JOIN sys.summits as T2 ON T1.country>T2.country CROSS JOIN sys.summits as T3 UNION SELECT DISTINCT count (distinct T1.country), count (distinct T2.mountain), count (distinct T3.country) FROM sys.summits as T1 CROSS JOIN sys.summits as T2 JOIN sys.summits as T3 ON T2.mountain>T3.mountain

Actual Result
SQLParseException[Couldn't create execution plan from logical plan because of: Index 2 out of bounds for length 2:
GroupHashAggregate["collection_count(collect_set(country))", "collection_count(collect_set(mountain))", "collection_count(collect_set(country))"] (rows=2)
  └ Union["collection_count(collect_set(country))", "collection_count(collect_set(mountain))"] (rows=2)
    ├ GroupHashAggregate[collection_count(collect_set(country)), collection_count(collect_set(mountain)), collection_count(collect_set(country))] (rows=1)
    │  └ HashAggregate[collect_set(country), collect_set(mountain), collect_set(country)] (rows=1)
    │    └ NestedLoopJoin[CROSS] (rows=unknown)
    │      ├ NestedLoopJoin[INNER | (country > country)] (rows=unknown)
    │      │  ├ Rename[country] AS t1 (rows=unknown)
    │      │  │  └ Collect[sys.summits | [country] | true] (rows=unknown)
    │      │  └ Rename[mountain, country] AS t2 (rows=unknown)
    │      │    └ Collect[sys.summits | [mountain, country] | true] (rows=unknown)
    │      └ Rename[country] AS t3 (rows=unknown)
    │        └ Collect[sys.summits | [country] | true] (rows=unknown)
    └ GroupHashAggregate[collection_count(collect_set(country)), collection_count(collect_set(mountain)), collection_count(collect_set(country))] (rows=1)
      └ HashAggregate[collect_set(country), collect_set(mountain), collect_set(country)] (rows=1)
        └ NestedLoopJoin[CROSS] (rows=unknown)
          ├ NestedLoopJoin[INNER | (mountain > mountain)] (rows=unknown)
          │  ├ Rename[mountain] AS t2 (rows=unknown)
          │  │  └ Collect[sys.summits | [mountain] | true] (rows=unknown)
          │  └ Rename[country, mountain] AS t3 (rows=unknown)
          │    └ Collect[sys.summits | [country, mountain] | true] (rows=unknown)
          └ Rename[country] AS t1 (rows=unknown)
            └ Collect[sys.summits | [country] | true] (rows=unknown)]

io.crate.exceptions.SQLParseException: Couldn't create execution plan from logical plan because of: Index 2 out of bounds for length 2:
GroupHashAggregate["collection_count(collect_set(country))", "collection_count(collect_set(mountain))", "collection_count(collect_set(country))"] (rows=2)
  └ Union["collection_count(collect_set(country))", "collection_count(collect_set(mountain))"] (rows=2)
    ├ GroupHashAggregate[collection_count(collect_set(country)), collection_count(collect_set(mountain)), collection_count(collect_set(country))] (rows=1)
    │  └ HashAggregate[collect_set(country), collect_set(mountain), collect_set(country)] (rows=1)
    │    └ NestedLoopJoin[CROSS] (rows=unknown)
    │      ├ NestedLoopJoin[INNER | (country > country)] (rows=unknown)
    │      │  ├ Rename[country] AS t1 (rows=unknown)
    │      │  │  └ Collect[sys.summits | [country] | true] (rows=unknown)
    │      │  └ Rename[mountain, country] AS t2 (rows=unknown)
    │      │    └ Collect[sys.summits | [mountain, country] | true] (rows=unknown)
    │      └ Rename[country] AS t3 (rows=unknown)
    │        └ Collect[sys.summits | [country] | true] (rows=unknown)
    └ GroupHashAggregate[collection_count(collect_set(country)), collection_count(collect_set(mountain)), collection_count(collect_set(country))] (rows=1)
      └ HashAggregate[collect_set(country), collect_set(mountain), collect_set(country)] (rows=1)
        └ NestedLoopJoin[CROSS] (rows=unknown)
          ├ NestedLoopJoin[INNER | (mountain > mountain)] (rows=unknown)
          │  ├ Rename[mountain] AS t2 (rows=unknown)
          │  │  └ Collect[sys.summits | [mountain] | true] (rows=unknown)
          │  └ Rename[country, mountain] AS t3 (rows=unknown)
          │    └ Collect[sys.summits | [country, mountain] | true] (rows=unknown)
          └ Rename[country] AS t1 (rows=unknown)
            └ Collect[sys.summits | [country] | true] (rows=unknown)
	at io.crate.exceptions.SQLExceptions.esToCrateException(SQLExceptions.java:163)
	at io.crate.exceptions.SQLExceptions.prepareForClientTransmission(SQLExceptions.java:152)
	at io.crate.rest.action.SqlHttpHandler.sendResponse(SqlHttpHandler.java:163)
	at io.crate.rest.action.SqlHttpHandler.lambda$channelRead0$0(SqlHttpHandler.java:119)
	at java.base/java.util.concurrent.CompletableFuture.uniWhenComplete(CompletableFuture.java:863)
	at java.base/java.util.concurrent.CompletableFuture.uniWhenCompleteStage(CompletableFuture.java:887)
	at java.base/java.util.concurrent.CompletableFuture.whenComplete(CompletableFuture.java:2357)
	at io.crate.rest.action.SqlHttpHandler.channelRead0(SqlHttpHandler.java:117)
	at io.crate.rest.action.SqlHttpHandler.channelRead0(SqlHttpHandler.java:81)
	at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:99)
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444)
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
	at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)
	at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:103)
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444)
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
	at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)
	at io.crate.protocols.http.HttpBlobHandler.channelRead0(HttpBlobHandler.java:166)
	at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:99)
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444)
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
	at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)
	at io.crate.auth.HttpAuthUpstreamHandler.handleHttpChunk(HttpAuthUpstreamHandler.java:135)
	at io.crate.auth.HttpAuthUpstreamHandler.channelRead0(HttpAuthUpstreamHandler.java:84)
	at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:99)
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444)
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
	at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)
	at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:103)
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444)
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
	at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)
	at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:346)
	at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:318)
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444)
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
	at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)
	at io.netty.handler.timeout.IdleStateHandler.channelRead(IdleStateHandler.java:286)
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:442)
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
	at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)
	at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410)
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:440)
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
	at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919)
	at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:166)
	at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:788)
	at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:724)
	at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:650)
	at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:562)
	at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997)
	at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
	at java.base/java.lang.Thread.run(Thread.java:1623)
Caused by: java.lang.IllegalArgumentException: Couldn't create execution plan from logical plan because of: Index 2 out of bounds for length 2:
GroupHashAggregate["collection_count(collect_set(country))", "collection_count(collect_set(mountain))", "collection_count(collect_set(country))"] (rows=2)
  └ Union["collection_count(collect_set(country))", "collection_count(collect_set(mountain))"] (rows=2)
    ├ GroupHashAggregate[collection_count(collect_set(country)), collection_count(collect_set(mountain)), collection_count(collect_set(country))] (rows=1)
    │  └ HashAggregate[collect_set(country), collect_set(mountain), collect_set(country)] (rows=1)
    │    └ NestedLoopJoin[CROSS] (rows=unknown)
    │      ├ NestedLoopJoin[INNER | (country > country)] (rows=unknown)
    │      │  ├ Rename[country] AS t1 (rows=unknown)
    │      │  │  └ Collect[sys.summits | [country] | true] (rows=unknown)
    │      │  └ Rename[mountain, country] AS t2 (rows=unknown)
    │      │    └ Collect[sys.summits | [mountain, country] | true] (rows=unknown)
    │      └ Rename[country] AS t3 (rows=unknown)
    │        └ Collect[sys.summits | [country] | true] (rows=unknown)
    └ GroupHashAggregate[collection_count(collect_set(country)), collection_count(collect_set(mountain)), collection_count(collect_set(country))] (rows=1)
      └ HashAggregate[collect_set(country), collect_set(mountain), collect_set(country)] (rows=1)
        └ NestedLoopJoin[CROSS] (rows=unknown)
          ├ NestedLoopJoin[INNER | (mountain > mountain)] (rows=unknown)
          │  ├ Rename[mountain] AS t2 (rows=unknown)
          │  │  └ Collect[sys.summits | [mountain] | true] (rows=unknown)
          │  └ Rename[country, mountain] AS t3 (rows=unknown)
          │    └ Collect[sys.summits | [country, mountain] | true] (rows=unknown)
          └ Rename[country] AS t1 (rows=unknown)
            └ Collect[sys.summits | [country] | true] (rows=unknown)
	at java.base/jdk.internal.util.Preconditions.outOfBounds(Preconditions.java:100)
	at java.base/jdk.internal.util.Preconditions.outOfBoundsCheckIndex(Preconditions.java:106)
	at java.base/jdk.internal.util.Preconditions.checkIndex(Preconditions.java:302)
	at java.base/java.util.Objects.checkIndex(Objects.java:385)
	at java.base/java.util.ArrayList.get(ArrayList.java:427)
	at io.crate.common.collections.Lists2$LazyMapList.get(Lists2.java:338)
	at io.crate.execution.dsl.projection.EvalProjection.castValues(EvalProjection.java:60)
	at io.crate.planner.operators.Union.addCastsForIncompatibleObjects(Union.java:174)
	at io.crate.planner.operators.Union.build(Union.java:103)
	at io.crate.planner.operators.GroupHashAggregate.build(GroupHashAggregate.java:146)
	at io.crate.planner.operators.RootRelationBoundary.build(RootRelationBoundary.java:60)
	at io.crate.planner.operators.LogicalPlanner.getNodeOperationTree(LogicalPlanner.java:552)
	at io.crate.planner.operators.LogicalPlanner.doExecute(LogicalPlanner.java:531)
	at io.crate.planner.operators.LogicalPlanner.execute(LogicalPlanner.java:509)
	at io.crate.planner.operators.LogicalPlan.executeOrFail(LogicalPlan.java:213)
	at io.crate.planner.Plan.execute(Plan.java:73)
	at io.crate.action.sql.Session.singleExec(Session.java:795)
	at io.crate.action.sql.Session.execute(Session.java:552)
	at io.crate.rest.action.SqlHttpHandler.executeSimpleRequest(SqlHttpHandler.java:260)
	at io.crate.rest.action.SqlHttpHandler.handleSQLRequest(SqlHttpHandler.java:207)
	at io.crate.rest.action.SqlHttpHandler.channelRead0(SqlHttpHandler.java:116)
	... 45 more
Caused by: java.lang.IndexOutOfBoundsException: Index 2 out of bounds for length 2
	... 66 more

Expected Result
The valid query should return results.

Thanks again for reporting @YuanchengJiang . Similar to https://github.com/crate/crate/issues/14807, this could be workaround by providing column aliases:
-- create a mini summits table
cr> create table summits as (select * from sys.summits limit 10);
CREATE OK, 10 rows affected  (1.702 sec)

-- reproducible:
cr> SELECT DISTINCT count (distinct T1.country), count (distinct T2.mountain), count (distinct T3.country) FROM summits as T1 INNER JOIN summits a
    s T2 ON T1.country>T2.country CROSS JOIN summits as T3 UNION SELECT DISTINCT count (distinct T1.country), count (distinct T2.mountain), count
    (distinct T3.country) FROM summits as T1 CROSS JOIN summits as T2 JOIN summits as T3 ON T2.mountain>T3.mountain;
SQLParseException[Couldn't create execution plan from logical plan because of: Index 2 out of bounds for length 2:
GroupHashAggregate["collection_count(collect_set(country))", "collection_count(collect_set(mountain))", "collection_count(collect_set(country))"] (rows=2)
  └ Union["collection_count(collect_set(country))", "collection_count(collect_set(mountain))"] (rows=2)
    ├ GroupHashAggregate[collection_count(collect_set(country)), collection_count(collect_set(mountain)), collection_count(collect_set(country))] (rows=1)
    │  └ HashAggregate[collect_set(country), collect_set(mountain), collect_set(country)] (rows=1)
    │    └ NestedLoopJoin[CROSS] (rows=unknown)
    │      ├ NestedLoopJoin[INNER | (country > country)] (rows=unknown)
    │      │  ├ Rename[country] AS t1 (rows=unknown)
    │      │  │  └ Collect[doc.summits | [country] | true] (rows=unknown)
    │      │  └ Rename[mountain, country] AS t2 (rows=unknown)
    │      │    └ Collect[doc.summits | [mountain, country] | true] (rows=unknown)
    │      └ Rename[country] AS t3 (rows=unknown)
    │        └ Collect[doc.summits | [country] | true] (rows=unknown)
    └ GroupHashAggregate[collection_count(collect_set(country)), collection_count(collect_set(mountain)), collection_count(collect_set(country))] (rows=1)
      └ HashAggregate[collect_set(country), collect_set(mountain), collect_set(country)] (rows=1)
        └ NestedLoopJoin[CROSS] (rows=unknown)
          ├ NestedLoopJoin[INNER | (mountain > mountain)] (rows=unknown)
          │  ├ Rename[mountain] AS t2 (rows=unknown)
          │  │  └ Collect[doc.summits | [mountain] | true] (rows=unknown)
          │  └ Rename[country, mountain] AS t3 (rows=unknown)
          │    └ Collect[doc.summits | [country, mountain] | true] (rows=unknown)
          └ Rename[country] AS t1 (rows=unknown)
            └ Collect[doc.summits | [country] | true] (rows=unknown)]

-- column aliases prevent the exception:
cr> SELECT DISTINCT count (distinct T1.country) x, count (distinct T2.mountain) y, count (distinct T3.country) z FROM summits as T1 INNER JOIN sum
    mits as T2 ON T1.country>T2.country CROSS JOIN summits as T3 UNION SELECT DISTINCT count (distinct T1.country), count (distinct T2.mountain),
    count (distinct T3.country) FROM summits as T1 CROSS JOIN summits as T2 JOIN summits as T3 ON T2.mountain>T3.mountain;
+---+---+---+
| x | y | z |
+---+---+---+
| 2 | 9 | 3 |
| 3 | 9 | 3 |
+---+---+---+
SELECT 2 rows in set (0.045 sec)

@YuanchengJiang
The issue has been fixed by #14816 and will be released with the next 5.4.5 hotfix release.
Thank you for reporting.


drop 404 in global message handler

404 on pages are handled by rendering the not found page. Having both the not-found page and the global message is ambiguous.
This is especially annoying during logout, where the not-found page is only rendered if available. Otherwise, the experience should silently navigate to the landing page.

This depends on CMSX-8516, which is ready in 1905

QA steps:

test whether an unknown page will show the not-found content, but doesn't display an error in the GlobalMessage panel (aka alert box)

passing, not found page doesn't show 404 global message


Set http_proxy which starts with socks://:
export ALL_PROXY="socks://$host_ip:10810"
export HTTP_PROXY=$ALL_PROXY
export HTTPS_PROXY=$ALL_PROXY

Then I use the default http client to request a random domain:
package main

import (
	"fmt"
	"net/http"
)

func main() {
    _, err := http.Get("https://www.google.com")
    if err != nil {
        fmt.Println(err)
    }
}

What did you see happen?
I got a error like:
 proxyconnect tcp: dial tcp: lookup socks on <IP_ADDRESS>:53: no such host

It seems like it treats socks as a domain instead of a protocol.
However, if I set http_proxy using http://, everything is OK.
What did you expect to see?
No error.

https://pkg.go.dev/net/http#ProxyFromEnvironment
Unlike many projects, the Go project does not use GitHub Issues for general discussion or asking questions. GitHub Issues are used for tracking bugs and proposals only.
For questions please refer to https://github.com/golang/go/wiki/Questions


Allow any return type for Handler method

Doesn't look like it was fully implemented for all types. Reopening.

fixed in #43


Why you're getting "Value cannot be null. Parameter name: authKeyOrResourceToken"

Supported APIs
Azure Cosmos DB bindings are only supported for use with the SQL API. For all other Azure Cosmos DB APIs, you should access the database from your function by using the static client for your API, including Azure Cosmos DB's API for MongoDB, Cassandra API, Gremlin API, and Table API.

You, like me, should probably read more closely—also @ the docs team, it may be worth highlighting this section in some way.
I spent longer than I'd like to admit trying to get this to work with Mongo.

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

ID: fa5bcb79-2af8-3b0e-c78c-0c89a2535e15
Version Independent ID: 31b87687-7841-f46f-8c97-38898e7b97db
Content: Azure Cosmos DB bindings for Functions 2.x
Content Source: articles/azure-functions/functions-bindings-cosmosdb-v2.md
Service: azure-functions
GitHub Login: @craigshoemaker
Microsoft Alias: cshoe

I'm glad you made this issue. I also spent far too long trying to get output bindings work with Mongo.

I just realized I was trying to bind with Mongo as well :(

The error message should say that something is incorrectly used. Maybe you could update the error message with information that mongo cannot be used with bindings?


PRMerger not installed

PRMerger is no longer installed on this repo. If it was uninstalled intentionally, please confirm that in a comment and close this issue. Your repo will be removed from the PRMerger list within 24 hours and then you will no longer get this warning.
If PRMerger was uninstalled unintentionally, click here to reinstall it (must be a repo admin). The PRMerger team is investigating the cause of accidental uninstallations.

The link is pointing to AutoCloseBacklog App, I've just installed the app on this repository so we dont keep receiving this message.


Generate summary from trace file

Hi,
I am wondering if there is any command to generate summary from the raw trace files (or collapsed stacks)
Thanks!!
Best,
Wenlei

Hi @wenleix
Please clarify what kind of summary would you like to get from trace files and why.

@wenleix There are a few of options for viewing the collapsed stacks profile:

Use flamegraphs
Scripted summary (awk/sed/grep scripts)
Use speedscope
Use IntelliJ (import profile)

@wenleix you can read here about IntelliJ integration: https://blog.jetbrains.com/idea/2018/09/intellij-idea-2018-3-eap-git-submodules-jvm-profiler-macos-and-linux-and-more/


Enable building migrations with dep by installing dep and sources

This builds locally now, so we have a shot at it actually working.


MRU and frecency ranking

It would be nice to include MRU or frecency based rankings into the file sorting on a per-root-directory basis. This way, more frequently or recently accessed files are given higher priority, provided they meet some minimum threshold of fuzzy text matching score. This should have the effect of reducing characters typed to access common files, and also have them immediately visible in the list to remind the user which files they typically want to open. Perhaps the frecency filter could be disabled for inputs of >2 characters to ensure never-before-accessed files can also be easily accessed via the default search algorithms.

I like how telescope did this by using a plugin: https://github.com/nvim-telescope/telescope-frecency.nvim
I'd imagine something similiar for snap would be the best.


Extract log, properties, rest-api and server into commons

This one is pending on https://github.com/hawkular/hawkular-commons/pull/104
To run this branch it is needed to build locally a commons package with the pointed artifacts dependencies.

So, it is expected that travis will fail until commons is consolidated.


Update Furina constellation will remove all the constellation of all characters

Update Furina constellation will remove all the constellation of all characters
Step to reproduce

Go to Character page
Click Furina's image
Editing the constellations
Save it
Go back to Character page
Refresh the page

Expected Result: Furina's constellations updated
Actual Result: All constellations of all characters are gone

Duplicate #466 #480


Bug: Theme switched in the Dark mode and light mode Updated.

Description
Now , the mode is in light mode it shows the light theme and when the mode is in dark mode it shows the dark theme.
Category

[ ] Documentation
[ ] Resource Addition
[ ] Codebase
[x] User Interface
[ ] Feature Request

Related Issue
Fixes #229
Checklist

[x] I have gone through the CONTRIBUTING guide
[x] The name of the resource is spelled correctly (if applicable)
[x] The link to the resource is working (if applicable)
[x] The resource is added in the correct format (if applicable)
[x] I have tested changes on my local computer (if applicable)

Name : Vishal malyan
GitHub link : https://github.com/vishal2005025


change order of images

change order of images to be more compliant with text

just pushing this back to the top @unicodeveloper

@unicodeveloper , can you just merge this please


fix typos and name segments in bigquery uri

Problem
typos and name segment inconsistencies in bigquery uri
Solution
fix them
Please describe your change as it relates to the problem, or bug fix, as well as any dependencies. If your change requires a schema change, please describe the schema modifcation(s) and whether it's a backwards-incompatible or backwards-compatible change, then select one of the following:

Note: All schema changes require discussion. Please link the issue for context.

[ ] Your change modifies the core OpenLineage model
[ ] Your change modifies one or more OpenLineage facets

If you're contributing a new integration, please specify the scope of the integration and how/where it has been tested (e.g., Apache Spark integration supports S3 and GCS filesystem operations, tested with AWS EMR).
Checklist

[x] You've signed-off your work
[x] Your pull request title follows our guidelines
[ ] Your changes are accompanied by tests (if relevant)
[ ] Your change contains a small diff and is self-contained
[ ] You've updated any relevant documentation (if relevant)
[ ] You've updated the CHANGELOG.md with details about your change under the "Unreleased" section (if relevant, depending on the change, this may not be necessary)
[ ] You've versioned the core OpenLineage model or facets according to SchemaVer (if relevant)
[ ] You've added a header to source files (if relevant)

// is not required by URI,

wow, never knew that! almost weird that // is standard practice across the rest of the internet really!
fixed


[#2227] improve(jdbc backend): Improve the judgment of exception information in JDBC backend

What changes were proposed in this pull request?
Determine exceptions more accurately based on SQL Exception error codes.
Why are the changes needed?
Fix: #2227
How was this patch tested?
Add the unit tests.

@yuqi1129 @qqqttt123 Please help take a look of this, thanks.

Generally LGTM.

Merge into main, thanks for your contributions @xloya


remove unmaintained pytest ordering

Description of Changes
pytest-ordering is not maintained and broken:
https://github.com/ftobia/pytest-ordering/issues/73
This PR removes it. Tests should be written in a way that they are independent of each other.
Alternatively, if the order of tests is really needed, you may consider using forked and maintained https://github.com/pytest-dev/pytest-order with more concise mark names.
Affirmation
By submitting this Pull Request or typing my (user)name below,
I affirm the Developer Certificate of Origin
with respect to all commits and content included in this PR,
and understand I am releasing the same under Spyder's MIT (Expat) license.

I certify the above statement is true and correct: bnavigator

Alternatively, if the order of tests is really needed, you may consider using forked and maintained https://github.com/pytest-dev/pytest-order with more concise mark names.

You're welcome to help us migrate our tests to pytest-order. Otherwise, you'll have to wait until we have time to do this because things are working fine for us with Pytest 5 (our current requirement).

I reverted the removal and replaced with marks from pytest-order instead.
Conda does not have pytest-order yet :(

I reverted the removal and replaced with marks from pytest-order instead.

Thanks for your help @bnavigator!

Conda does not have pytest-order yet :(

I added the requirement to our own Anaconda channel to fix that in the meantime.


reproduce mAPJ

Hi @cherubicXN ,
Nice work!
Currently I am not able to obtain the mAPJ values in the papers using the pretrained model from you.
The sAP values are the same as in the table, but the mAPJ is much lower (24.6 vs 31.6 on York). Since the mAPJ script is not included in repo, I used the one from LCNN with minor modification (the junctions are in different formats). I was wondering if you can kindly provide the script for mAPJ evaluation. Still have no idea what is wrong and would like to figue it out. Thanks in advance！
BTW， congrats on your promotion, Dr.Xue.!

Hi @yanconglin,
Thanks very much!
Please see the source code (L40-L76) at https://github.com/zhou13/lcnn/blob/master/eval-mAPJ.py. Specifically, I followed the implementation of L-CNN by using the predicted heatmaps for evaluation. This would make a difference.
:)

I did follow LCNN code. Your model outputs both junc_pred and junc_score in the json file, instead of the heatmaps. So I modified the LCNN code the fit your output. Is this the reason?  Then I was wondering how you obtain the "junc_pred and junc_score" .

That's the reason, you may need to modify the code to add the jloc_pred and joff_pred (in L127 and L128) to the output dictionary.
Since I found the mAPJ is not as challenging as sAP, I removed the heatmaps of junction predictions.


Fixed setup:db:status

setup:db:status sees a diff by tring to replace null with ""

Fix will be provided with the next release


feat: Added InputFile setup

InputFile - Easy setup of uploaded files
Description
This PR relates directly to #317 and should give an easy setup for InputFile. In its current state there is no easy way of setting up an InputFile. This PR introduces two methods which makes it possible.

AddInputFileSupport to setup the JavaScript part
UploadFilesAsync to configure the files which will be returned by InputFile and also directly invoking the OnChange event.

Implementation
The implementation is straight forward. We just introduce a bunch of new types which are test doubles of the ones from the framework itself. I decided to go with an extension for IRenderedComponent<InputFile> because users can have multiple InputFiles in their code and they are used to call cut.Find("..."); anyway.
Usage
A typical test would look like this:
[Fact]
public async Task ShouldUploadFile()
{
    this.AddInputFileSupport();
    var cut = RenderComponent<ComponentWithInputFile>();
    var uploadFile = new InputFileContent()
    {
        Content = Encoding.UTF8.GetBytes("Hello Egil"),
        Filename = "MyFile.txt",
        ContentType = "application/test",
    };

    await cut.FindComponent<InputFile>().UploadFilesAsync(uploadFile);

What is open? / discussion
Here are some points I want to discuss:

[ ] Right now, we have to call two methods to make it work. Without AddInputFileSupport we will get JavaScript Interop errors that the call was not set up in strict mode. I didn't want to mock that call (Blazor._internal.InputFile.init) by default.  But we could. Via default we setup the JS call and let the user opt-out via an extension method. That might make more sense, because on average the user does not want to setup InputFile stuff on their own.
[ ] We might want to have that call synchronous to fit better to the current API. Simply speaking we can just await the internal call synchronously.
[ ] The used InputFileContent is always byte[]. I played around with two versions: string and byte[] and went with byte[] because it makes our code easier and pushes the responsibility to the caller instead of us. Text / encoding can be very hard. And especially when people want to upload images or so, byte[] seems the appropriate way.
[ ] It is hard to create a InputFile test in any of our test assemblies because that type was introduced with net5.0. Either we build one from scratch via BuildRenderTree(RenderTreeBuilder builder). If you have any tips, let me know.

Alternatives
I played around with the idea to replace or a given InputFile via our ComponentFactories with a test double. We might make this work as well, but it doesn't seem that much nice when it comes down to implementation details.
Info
This PR is only draft atm and meant as a base for discussions. Once we are aligned on the API design, xmldoc and tests will follow.

Perfect thank you very much for that valuable input ;) That helps a lot. I will update the PR and let you know once I have a presentable version.

Hey @egil. Took some time today to work on that topic. Feel like I opened too much things and want to finish one by one those tasks.
The structure and everything is like it should be. I only have to satisfy some warnings in the test.
I basically incorporated all the feedback you had. Let me know your thoughts.

One open point on my todo-list is documentation. Where do you think this would fit the best?

Added all the feedback plus documentation

I do think we covered now everything. Thanks again

I do think we covered now everything. Thanks again

Indeed. Good work!


Assert on paste own sbbs

receive tx using regular address
copy receiving address from tx details (own sbbs)
paste own sbbs as "send to" address on send screen

assert was reached with false value
assert(
type == TxAddressType::PublicOffline ||
(type == TxAddressType::Regular && _token.toStdString() == std::to_string(_receiverWalletID))
);

checked


[Python] pyarrow.dataset.write_dataset doesn't write empty datasets, even if they had a schema, thus losing it when reading back the dataset

Describe the bug, including details regarding any error messages, version, and platform.
The write_dataset function doesn't write anything if the table is empty. This has the consequence that schema information is lost when reading it back (because it didn't write anything in the first place).
This can be avoided by manually writing an empty table with that schema inside the destination folder in the parquet format. But I expected this to already be the intended behaviour.
To reproduce:
import os
import shutil
import tempfile
import pyarrow as pa
import pyarrow.parquet as pq
import pyarrow.dataset as pds

dest = tempfile.mkdtemp(suffix='.parquet')
schema = pa.schema([('a', pa.int64()), ('b', pa.int64())])
empty_table = schema.empty_table()

pds.write_dataset(empty_table, dest, format='parquet')

ds = pds.dataset(dest)
print(ds.schema)
# -> no output
# I expected ds.schema == pa.schema([('a', pa.int64()), ('b', pa.int64())])

print(os.listdir(dest))
# -> []
# I expected to find an empty parquet file in the folder to avoid losing the schema!

# WORKAROUND
# If I write the empty table with pyarrow.parquet.write_table inside the folder, then the schema is preserved
pq.write_table(empty_table, os.path.join(dest, 'part-0.parquet'))
ds_with_workaround = pds.dataset(dest)
assert ds_with_workaround.schema == schema

# delete folder recursively
shutil.rmtree(dest, ignore_errors=True)

Thank you
Component(s)
Python

Hmmm seems that doesn't write any parquet data is not important for you, but it's expected that dataset to have correspond schema, dir?

Well, what I expected was that if I write a table with a certain schema to a dataset, when reading it back it would keep its schema (and metadata). Instead it just skips writing altogether.
The workaround/solution that I found is to write a parquet file inside the folder. As the parquet file itself supports writing an empty table, keeping schema and metadata information.
The important part for me is that schema and metadata information should be preserved even when the data is empty when reading the dataset back.

Nice catch, maybe we should make it possible to leave a "arrow-schema" or empty file in directory. But it might break the current design, maybe we can support a option for writing an empty file or arrow schema 🤔

I think that it would be breaking if some users are trying to guess if the dataset is empty only by listing the directory... If it isn't the case anymore, and pyarrow would always write a parquet file, once the dataset is loaded, it would still be an empty dataset, just with schema and metadata.
Using some separate metadata/schema file is interesting but it is something that I don't know if it is supported anywhere else in this library. Is it? It's also unnecessary when the data actually has some rows. Moreover, other parquet drivers I guess will always understand a parquet file with 0 rows, but not a schema file?
I think that writing an empty parquet table if the dataset has 0 rows would also be consistent with what pyarrow.parquet.write_table does.
Anyway, I agree that it might break some code that assumes the current (in my opinion wrong) behaviour.
I think that just fixing this in a major release with this behaviour documented in the release notes would be the best option. Maybe an option to opt out and get the legacy behaviour (the current one) would be optimal.
Otherwise, if a breaking change is not an option, a flag to opt in to this behaviour would be nice if possible.
Maybe something like: preserve_schema_if_empty? keep_schema_if_empty? I guess I would always pass this as true but maybe it's just the current needs of the project I'm on.
What do you think? @mapleFU
Thank you very much

@mapleFU is there any news? I've faced the same issue, when business requires at least empty files on S3 bucket, but write_parquet doesn't do it.

Sorry for delaying because I lost the context. @jorisvandenbossche do you think something like a avro schema descr or other helps?


⚠ Bofrost.be has degraded performance

In e1943f4, Bofrost.be (https://www.bofrost.be) experienced degraded performance:

HTTP code: 200
Response time: 2532 ms

Resolved: Bofrost.be performance has improved in 2ffec4e.


Improve type inference by checking of property types

Search Terms

type inference, type annotation, self-reference, index signature
Suggestion
Allow to infer generic type parameters from types of properties
Use Cases
For the following example
type State = {
    a: string;
    b: number;
}

type Handler<K extends keyof State> = {
    name: K,
    parse: (value: string) => State[K],
    serialize: (value: State[K]) => string
}

const handlerA: Handler<'a'> = {
    name: 'a',
    parse(value) { return ''; }, // knows that I should return State['a'] = string
    serialize(value) { return ''; }
}

const handlerB: Handler<'b'> = {
    name: 'b',
    parse(value) { return 1; }, // knows that I should return State['b'] = number
    serialize(value) { return ''; }
}

In this example I should duplicate name of attribute that isn't good.
Also, I tried with self-reference variant:
type State = {
    a: string;
    b: number;
}

type Handler = {
    name: keyof State,
    parse: (value: string) => State[Handler['name']],
    serialize: (value: State[Handler['name']]) => string
}

const handlerA: Handler = {
    name: 'a',
    parse(value) { return ''; }, // correctly allows to return string
    serialize(value) { return ''; }
}

const handlerB: Handler = {
    name: 'b',
    parse(value) { return ''; }, // INCORRECTLY allows to return string
    serialize(value) { return ''; }
}

but in this case value in parse and serialize will have all possible types from State, when I need the specific.

Examples
If this feature will be implemented it will be useful for such constructs (with correct type checking):

const handlerA: Handler = {
    name: 'a',
    parse(value) { return ''; },
    serialize(value) { return ''; }
}

const handlerB: Handler = {
    name: 'b',
    parse(value) { return 1; },
    serialize(value) { return ''; }
}

const handlers: Handler[] = [
    {
        name: 'a',
        parse(value) { return ''; },
        serialize(value) { return ''; }
    },
    {
        name: 'b',
        parse(value) { return 1; },
        serialize(value) { return ''; }
    }
]

Lets check the following
Checklist
My suggestion meets these guidelines:

[*] This wouldn't be a breaking change in existing TypeScript/JavaScript code
[*] This wouldn't change the runtime behavior of existing JavaScript code
[*] This could be implemented without emitting different JS based on the types of the expressions
[*] This isn't a runtime feature (e.g. library functionality, non-ECMAScript syntax with JavaScript output, etc.)
[ ] This feature would agree with the rest of TypeScript's Design Goals.

What you propose wouldn't be type-safe. A simple example would be: handlers[0].name = 'b'
And when a handler is passed along? The compiler couldn't know anymore what actual values are inside.
If writing the duplicate name attribute is a hassle for you, then you can just create a helper function:
function createHandler<K extends keyof State>(handler: Handler<K>): Handler<K> {
  return handler;
}

const handlerA2 = createHandler({
    name: 'a',
    parse(value) { return ''; },
    serialize(value) { return ''; }
});

But you absolutely can't remove the key-type when you want to remain type-safe.

I can see the use case here and I think we've seen proposals for treating something like
const a: Handler<infer> = { ...

but this suggestion doesn't seem like the right approach. This code already means something else and there'd need to be some other mechanism for doing self-inference into an object literal.

OK, thanks for your considerations - they make sense.


xfreerdp not working for non-root users.

Hi,
I am running Ubuntu 14.04 Mate. I have followed the installation guide for Debian located at https://github.com/FreeRDP/FreeRDP/wiki/Compilation.
The issue I am having is a strange one. I can use xfreerdp without any issues as root our by using sudo to run the xfreerdp command. However, if I try to run xfreerdp as a normal user I get this error "xfreerdp: error while loading shared libraries: libxfreerdp-client.so.2: cannot open shared object file: No such file or directory" and I can't seem to figure out what is going on.
Running the command "which xfreerdp" always results in /usr/local/bin/xfreerdp, which I believe to be the correct location, no matter what my user privilege is (root, sudoer, non-sudoer), but for some reason any user that does not have root privileges can not use xfreerdp.
Any pointers would be greatly appreciated.
Thanks!
Scott

Well this is an issue tracker, not a help forum. But I'd bet that a directory in /usr/local/lib is not executable by other persons than root, or that the library itself cannot be read. a ldd /usr/local/bin/xfreerdp.
Go and ask on IRC or use the mailing list for that kind of help.


Adding "dropright"/"dropleft" prop to Dropdown component

Issue description

components: Dropdown
reactstrap version: 4.8.0
import method 'reactstrap/DropDown';
react version 16.2.0
bootstrap version 4

What is happening?
Nesting a dropdown into another dropdown
What should be happening?
There should be a prop option "drop" right as provided by bootstrap as a class named "dropright" to open the dropdown menu on the right of the dropdown button

Instead of adding more props I deprecated dropup and replaced with dropDirection. You can set dropDirection to  "down" (default), "up", "left" or "right". Is still backwards compatible with dropup IF you don't use dropDirection.  See #813


Make BTable and BTableLite Generic components

Describe the bug
The underlying types for TableItem and TableField have generic variants, but to fully utilize them, I believe you have to make BTable and BTableLite generic components.  That way, typescript should be able to handle complex types used as table items correctly.  I may be missing something fundamental here, but it seems this is a direct application of what generic components are intended for.
I've got a (not working) first crack at doing this here: https://github.com/bootstrap-vue-next/bootstrap-vue-next/pull/1681 - It doesn't work so I may be going down the wrong path.
Reproduction
https://github.com/bootstrap-vue-next/bootstrap-vue-next/pull/1681
Used Package Manager
pnpm
Validations

[X] Have tested with the latest version. This is still alpha version and sometime things change rapidly.
[X] Follow our Code of Conduct
[X] Read the Contributing Guide.
[X] Check that there isn't already an issue that reports the same bug to avoid creating a duplicate.
[X] Check that this is a concrete bug. For Q&A, please open a GitHub Discussion instead.
[X] The provided reproduction is a minimal reproducible of the bug.

Hi @dwgray. Are you still working on it?

Typing slot parameters will likely be interesting, considering many dynamic slot fields.

@anrolmar Had some other priorities during the week but should have some time to work on this in the next couple of days.

It's likely not possible to defineSlots for BTable components. TypeScript can't use dynamic keys in type literals
(But this is ancillary to the PR)

It's likely not possible to defineSlots for BTable components. TypeScript can't use dynamic keys in type literals
(But this is ancillary to the PR)

I agree if we can't use defineSlots I don't think we'll be able to get TypeScript to play nicely with slots.
But, I'm closing in on getting something working with generics that correctly handles properties and events.  I'd like to scope this PR to that and take a closer look at options for typing slots in the future.


PR to test travis decoupling

Travis-CI tests were failing for all PRs, test to see if this is successfully decoupled.

closing test PR


unordered lists formatting fix in 41framework.md

Update to - - -- instead of -
Unordered lists in the theme we use don't use the standard markdown encoding.

Fixed with PR #22


⚠ Bofrost.be has degraded performance

In 6508f0f, Bofrost.be (https://www.bofrost.be) experienced degraded performance:

HTTP code: 200
Response time: 801 ms

Resolved: Bofrost.be performance has improved in ca6d91c.


Provider module read-only for visitors

It seems like I'm still able to edit even while not logged in 🤔
Just want to make sure that the behavior is functioning correctly on your end with this branch?

Everything seems to be functioning as expected and the formatting is way more readable! 👍
Not sure what the procedure is for merging but it's ready imho.


Creation failed, path = '/Users/pub-cache/hosted/pub.flutter-io.cn' (OS Error: Permission denied, errno = 13)

From URL: https://flutter.io/get-started/setup_macos.md

Can you provide us more details? What did you do exactly, what were all the logs, and so forth?

I have same problem


Host_IDs_Too_High

What version of fleet are you using (fleet version --full)?
fleet - version 2.1.0
branch: 	master
revision: 	ab948beb718230483c12b84995f79034eb3f0777
build date: 	2019-04-09T18:31:16Z
build user: 	zwass
go version: 	go1.11.5
What operating system are you using?
CentOS Linux release 7.6.1810 (Core)
What did you do?
While doing some testing to have a script delete all offline hosts I may have accidentally sent a random high number to the server with the delete flag instead of a valid host numerical ID. When I use my script with a valid host ID it works as expected. However, after this host ID mix up I noticed my new host IDs are much higher than expected.
What did you expect to see?
New host IDs to increment by one as they are added.
What did you see instead?
New host IDs are very high when I haven't had that many hosts enroll. The old hosts still have their reasonable IDs such as 9, 73,74 and 224. But new ones get really high numbers and they keep increasing extremely fast.
Here are some of my online host IDs
9 11 73 74 75 76 77 171 224 226 227 228 251 254 258 260 264 265 271 274 637 638<PHONE_NUMBER>4 33073 33084 33727 33734 33735 33742<PHONE_NUMBER>65<PHONE_NUMBER>75<PHONE_NUMBER>82<PHONE_NUMBER>95<PHONE_NUMBER>04 343389

And as of now the highest number seen is  3711369

So I found the problem. The database was incrementing by one like it's supposed to when Fleet sends an INSERT query. Fleet was sending a ton of INSERTs because some systems were continuously attempting to enroll but would not show in the database because the enrollment wasn't successful. The enrollment wasn't successful because the --host_identifier flag was set to uuid. I set the --host_identifier to hostname and this resolved the issue. So overall I think it would be good if Fleet didn't send INSERTs when an enrollment isn't successful, therefore the database table won't increment unnecessarily. Also, still not sure why changing the --host_identifier fixed it even when multiple other systems running the same OS and configs could enroll properly before. On a side note, I stopped the incrementing just before the host IDs reach 1 billion! 9965401


fix: interface decoder is favoring float types causing value imprecision for int types

Fix proposal for #433

How is the encoding/json specification? go-json does not incorporate specifications that differ from encoding/json.


[WFLY-6891] Add version 3 of the IIOP subsystem schema and model.

:exclamation: Commits from this branch are used in numerous other topic branches so please do not cherry-pick or rebase. :exclamation:

Retest this please


add maxLength on textInputs

Please, bring your pull requests to my repo. I Will maintain this lib.
https://github.com/ebellumat/react-native-credit-card-input


Long shutting down times

When running /stop on a server, it takes several minutes (More than 15) and it stops in the line:
[Server thread/INFO] [Framework/]: Sending config unload event for mighty_mail.server.toml
We running on the MM version: 1.0.14
Forge version: 47.1.3

Seems to be exactly the same problem as this issue on Configured

I'm having the same issue here, I have a "temporary" way of shutting down the server that works once the issue gets fixed. I use the command /save-all before forcably killing the program. The program will always reach the same line of commands if you were to use /shutdown afterwards. It's probably not the safes way of going about it, but it honestly beats potentially losing items that you have worked for.

@Voltch3r-VII It is currently being investigated. If you would like and if you're using the 1.20.1, you can try out this version of Framework that has extra debugging and a potential fix: https://github.com/MrCrayfish/MrCrayfishFurnitureMod-Refurbished/issues/30#issuecomment-2336927180

@Voltch3r-VII It is currently being investigated. If you would like and if you're using the 1.20.1, you can try out this version of Framework that has extra debugging and a potential fix: MrCrayfish/MrCrayfishFurnitureMod-Refurbished#30 (comment)

Cheers, I'll look into that.

I replaced the Framework-Fabric to version 1.20.1-0.7.8 that you provided, thank you. It has made more progress than the previous iteration, it has spat out a quary about weather 'mighty_mail.server.toml' has been uploaded as shown in the screenshot (I believe this is what it could be asking, I could be wrong)


Replace headers

Signed-off-by: David Dashyan<EMAIL_ADDRESS>

Codecov Report

Merging #2683 into master will not change coverage by %.
The diff coverage is n/a.

@@           Coverage Diff           @@
##           master    #2683   +/-   ##
=======================================
  Coverage   93.32%   93.32%
=======================================
  Files          46       46
  Lines        2712     2712
=======================================
  Hits         2531     2531
  Misses        181      181


[kwokctl] Fix output of dryrun in close file

What type of PR is this?

/kind bug
What this PR does / why we need it:
Which issue(s) this PR fixes:

Fixes #
Special notes for your reviewer:
Does this PR introduce a user-facing change?

[kwokctl] Fix output of dryrun in close file

Additional documentation e.g., KEPs (Kubernetes Enhancement Proposals), usage docs, etc.:

NONE

/cherrypick release-0.5


update BankAccount package

the transfer and withdraw methods should return nothing, actually they return a parameter "amount" that we set when we call the methods, but the return value is unused, unless for the test cases.
In that way the methods returning nothing, the test cases was reformed as well

I don't fully agree with these changes! Neverthess, I will soon change the implementation to make it more understandable. Thank you


Error: OllmGenerateResponse variant discriminator field cannot be omitted

Hey there, I'm currently writing an Ollama API wrapper and I decided to use sunny since it provided the features I needed, but when I added the createdAt field, Sunny complained about the omission of the discriminator field. Removing this field fixes the error but prevents me from being able to store the parsed timestamp, other than this, sunny is great and exactly what I needed!
import sunny, times

type
  OllmGenerateResponse* = object
    model* {.json: ",required".}: string
    createdAtStr {.json: "created_at,required".}: string
    createdAt {.json: "-".}: DateTime
    response* {.json: ",required".}: string
    case done*: bool
      of true:
        totalDuration* {.json: "total_duration,required".}: int64
        loadDuration* {.json: "load_duration,required".}: int64
        promptEvalCount* {.json: "prompt_eval_count,required".}: int64
        promptEvalDuration* {.json: "prompt_eval_duration,required".}: int64
        evalCount* {.json: "eval_count,required".}: int64
        evalDuration* {.json: "eval_duration,required".}: int64
        context* {.json: ",required".}: seq[int]
      else:
        discard

echo OllmGenerateResponse.fromJson("""{"model":"stuehieyr/nandine:latest","created_at":"2024-06-25T22:38:48.566852763Z","response":"Hello! How can I assist you today?\n","done":true,"total_duration":0,"load_duration":0,"prompt_eval_count":0,"prompt_eval_duration":0,"eval_count":0,"eval_duration":0,"context":[]}""")

I forgot to include the exact error, the error is
/home/chronos/.nimble/pkgs2/sunny-0.1.8-4692a8890fa287ff182f347530f455bfbf8b7669/sunny.nim(1127, 9) template/generic instantiation of `fromJson` from here
/home/chronos/.nimble/pkgs2/sunny-0.1.8-4692a8890fa287ff182f347530f455bfbf8b7669/sunny.nim(1037, 22) Error: OllmGenerateResponse variant discriminator field cannot be omitted

Thanks for the heads up, small issue with a quick easy fix.
Fixed and tagged in 0.1.9 https://github.com/guzba/sunny/releases/tag/0.1.9


@SelfValidation methods in base class are not recognised

I have a base class with some general validations that apply to all subclasses and so I would like do the following:
@SelfValidating
public class BaseClass {
    @SelfValidation
    public void appliesToAllSubclasses(ViolationCollector collector) {
    }
}

public class SubClass extends BaseClass {
}

I expected that validating an instance of SubClass would call BaseClass.appliesToAllSubClasses, it doesn't and I get the following message in the logs:
08:16:45.188 [main] ERROR io.dropwizard.validation.selfvalidating.SelfValidatingValidator - The class class SubClass is annotated with @SelfValidating but contains no valid methods that are annotated with @SelfValidation

    @Test
    public void selfValidatingSubclass() {
        BaseClass baseClass = new SubClass();
        Validator validator = Validation.buildDefaultValidatorFactory().getValidator();
        validator.validate(baseClass);
    }

If I annotate SubClass with @SelfValidating as well then I get two log messages rather than one.

I fixed the inheritance problem but I am not sure in which case the problem with two log messages occurs. @dave1e6  Could you give me a test case (maybe based on my PR #2344) that shows that problem?

Closing this as #2344 was merged. If the problem wasn't resolved, please reply with more info. Thanks @manuel-hegner for the implementation.

The issue still remains for a specific corner case. I will look into putting together some tests to reproduce it and possibly submit a PR to fix it (or at least share the tests so someone else can fix it if I can't find the time to patch it in the near term).

If you can write a test for this corner case or describe it well enough I will write the fix, no problem.

I can get you a pretty simple object model to use to reproduce it fairly quickly. I should have some time today to dedicate to this. I'll reply back in a bit.

I've broken down the problematic classes into three simple cases (you really only need two, but my original issue involved 3, so I've left it that way).

A base abstract class that contains the primary validation method.
One or more child classes that implement an extended validation method.

I'm sure this isn't the best design. Ideally I'd like to just hit each class with its own @SelfValidating method and have them all be run down the entire hierarchy. My workaround has each class overriding the base class validate and invoking super.validate.
Anyway, here is a super simplified version of what triggered the issue:
Base Class
package io.isaki.jsandbox.svtest;

import java.util.Objects;

import com.fasterxml.jackson.annotation.JsonAutoDetect;
import com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility;
import com.fasterxml.jackson.annotation.JsonProperty;

import io.dropwizard.validation.selfvalidating.SelfValidation;
import io.dropwizard.validation.selfvalidating.ViolationCollector;

@JsonAutoDetect(
    getterVisibility = Visibility.NONE,
    creatorVisibility = Visibility.NONE,
    isGetterVisibility = Visibility.NONE,
    fieldVisibility = Visibility.NONE,
    setterVisibility = Visibility.NONE)
abstract class AbstractExample {

    @JsonProperty("s")
    private final String s;

    protected AbstractExample() {
        super();
        this.s = null;
    }

    protected AbstractExample(final String s) {
        super();
        this.s = Objects.requireNonNull(s);
    }

    @SelfValidation
    public final void validate(final ViolationCollector collector) {
        if (this.s == null) {
            collector.addViolation("s value cannot be null");
        }

        this.extendedValidation(collector);
    }

    public final String getS() {
        return this.s;
    }

    protected abstract void extendedValidation(final ViolationCollector collector);
}

Implementations
package io.isaki.jsandbox.svtest;

import com.fasterxml.jackson.annotation.JsonProperty;

import io.dropwizard.validation.selfvalidating.SelfValidating;
import io.dropwizard.validation.selfvalidating.ViolationCollector;

@SelfValidating
public final class ImplOne extends AbstractExample {

    @JsonProperty("x")
    private final int x;

    /**
     * Serialization constructor.
     */
    @SuppressWarnings("unused")
    private ImplOne() {
        super();
        this.x = 0;
    }

    public ImplOne(final String s, final int x) {
        super(s);
        if (x < 1) {
            throw new IllegalArgumentException();
        }

        this.x = x;
    }

    public int getX() {
        return this.x;
    }

    @Override
    protected void extendedValidation(final ViolationCollector collector) {
        if (this.x < 1) {
            collector.addViolation("x must be at least 1");
        }
    }
}

package io.isaki.jsandbox.svtest;

import com.fasterxml.jackson.annotation.JsonProperty;

import io.dropwizard.validation.selfvalidating.SelfValidating;
import io.dropwizard.validation.selfvalidating.ViolationCollector;

@SelfValidating
public final class ImplTwo extends AbstractExample {

    @JsonProperty("c")
    private final char c;

    /**
     * Serialization constructor.
     */
    @SuppressWarnings("unused")
    private ImplTwo() {
        super();
        this.c = 0;
    }

    public ImplTwo(final String s, final char c) {
        super(s);
        if (!validateC(c)) {
            throw new IllegalArgumentException();
        }

        this.c = c;
    }

    public char getC() {
        return this.c;
    }

    @Override
    protected void extendedValidation(final ViolationCollector collector) {
        if (!validateC(this.c)) {
            collector.addViolation("x must be at least 1");
        }
    }

    private static boolean validateC(final char c) {
        return c >= 'a' && c <= 'z';
    }
}

Expected Behavior:
Validation should occur on the child classes via the parent class method.
Result:
Exception thrown due to lack of SelfValidation annotation in child classes.

@manuel-hegner
I've done more testing and got some interesting behaviors on DropWizard 1.3.9. There is a definite inconsistency with method/annotation inheritence and some outright bugs (I'm able to get violation to run multiple times).
Base class: Marked with @SelfValidating and has a @SelfValidation method.
Scenario 1:
Child class overrides said method and does not mark it with @SelfValidation. Child class is not marked with @SelfValidating.
Expected behavior: Undecided. This is probably OK, but see Scenario 2.
Result: No validation is invoked.
** Scenario 2:**
Child class overrides said method and marks it with @SelfValidation. Child class is not marked @SelfValidating.
Expected behavior: Given the behavior of Scenario 1, I would expect no validation to occur.
Result: Validation is performed correctly.
** Scenario 3:**
Child class overrides said method and marks it with @SelfValidation. Child class is marked as @SelfValidating.
Expected behavior: Validation is performed correctly.
Result: Validation is performed correctly... twice. This probably a bug. See Scenario 5 for a stranger manifestation of this issue.
** Scenario 4:**
Child class creates a separate validation method, marks it with @SelfValidation. Child class is not marked as @SelfValidating.
Expected behavior: Undecided, like Scenario 1.
Result: Validation is performed correctly.
** Scenario 5:**
Child class creates a separate validation method, marks it will @SelfValidation. Child class is marked as @SelfValidating.
Expected behavior: Either both the parent and child methods should be invoked or just the child (given previous scenarios, which I don't necessarily agree with). I prefer the first.
Result: The child's method is invoked twice. I'm going to go out on a limb and say this is absolutely a bug.
** Scenario 6:**
Child class has no self validation annotations.
Expected behavior: I don't even know at this point. I'd expect no validation to occur, but apparently @SelfValidating must be inherited by the child (see Scenario 4) so maybe I'd expect the parent's method to at least be invoked?
Result: No validation occurs.
** Scenario 7:**
Child class declares that it is @SelfValidating but does not actually have any methods marked with @SelfValidation.
Expected behavior: The parent method should be invoked. Or an exception. Or something.
Result: Nothing happens. No validation. No warnings. Nothing.
I will write up a proposal for what the expected behaviors should be and put together a test that exercises the various scenarios once we all agree.

Proposal:

Parent @SelfValidating
Parent @SelfValidation
Child @SelfValidating
Child @SelfValidation
Desired Behavior

None
Yes
NA
NA
Error on Parent

Yes
No
NA
NA
Error on Parent

Yes
Yes (concrete)
No
No
Validator should use standard annotation validation; additionally it should run the validation method for the parent (or whatever class in the chain)

Yes
Yes (abstract)
No
No
The validation method declared in the parent should be run; the child need not know that it has implemented the validation for the parent class and should not require annotations. Validator should use standard annotation for the child class and of its children for fields declared therein.

Yes
Yes (concrete)
Yes
No
Error on Child

Yes
Yes
No
Yes
Error on Child

Yes
Yes
Yes
Yes, on distinct method
Both parent and child annotated methods should be executed (if parent is abstract, there will be impl somewhere that gets invoked).

Yes
Yes
Yes
Yes, on override/implementation
The overridden/implemented method should be invoked once.

Should I put the proposal in a new issue or here @nickbabcock? If I'm putting it here can you please re-open this ticket? Thanks!


Add regions facet to business support finder spec

https://trello.com/c/FC7XKG6H/257-add-regional-location-as-a-facet-to-the-finance-and-support-for-your-business-finder

Successful (correctly parameterised) test run here:
https://ci.integration.publishing.service.gov.uk/job/publishing-e2e-tests/job/add-region-facet/7/console


Get "http://localhost/api/v1/namespaces/kube-system/configmaps/aws-auth

Below issue is happening quite frequently and it blocks deleting terraform resources created earlier, I have updated to terraform 2.0.0 version but still it is happening. I have referenced all the similar issues created in this forum but none clearly state what is really wrong and how behind the scene this issue occur.
How can I bypass this issue and at least delete the existing cluster by running terraform destroy command? I am thinking of not using this module as it seems quit unstable.
ERRO[0056] Module /Users/bhaidas.masule/git/appsian-cloud/aws-infrastructure-setup/development/us-west-2/dev/eks has finished with an error: 1 error occurred:
	* exit status 1
  prefix=[/Users/bhaidas.masule/git/appsian-cloud/aws-infrastructure-setup/development/us-west-2/dev/eks]
INFO[0056] ╷
│ Error: Get "http://localhost/api/v1/namespaces/kube-system/configmaps/aws-auth": dial tcp [::1]:80: connect: connection refused
│
│   with module.eks.kubernetes_config_map.aws_auth[0],
│   on .terraform/modules/eks/aws_auth.tf line 63, in resource "kubernetes_config_map" "aws_auth":
│   63: resource "kubernetes_config_map" "aws_auth" {

Can you please specify what is 2.0.0 version you mentioned.
AWS EKS module latest version is https://github.com/terraform-aws-modules/terraform-aws-eks/tree/v17.1.0

@y0zg Thanks for reverting back, I mentioned that about version in K8s provider section in required_providers
    kubernetes = {
      source  = "hashicorp/kubernetes"
      version = ">= 2.0"
    }

But I observer after adding config_path in k8s provider section like below, it's not giving me that error anymore, it was tested only once so I don't whether that is correct fix
provider "kubernetes" {
  host                   = data.aws_eks_cluster.cluster.endpoint
  token                  = data.aws_eks_cluster_auth.cluster.token
  cluster_ca_certificate = base64decode(data.aws_eks_cluster.cluster.certificate_authority.0.data)
  config_path = "~/.kube/config-dev"
}

If issue was because of that missing config_path then I would close this ticket.