WASM examples broken if the user switches tabs

I think this PR broke the examples for some reason.

the examples work fine on native
on wasm, the connection gets timed out pretty quickly for some reason

UPDATE:

it looks like the update is that the client tasks stop running when the page is alt-tabbed, so the connection times out if the user alttabs for too long!
the second problem is that the server seems to be stuck in a weird state where it doesn't accept webtransport connections anymore.

On client we get:
Failed to establish a connection to https://<IP_ADDRESS>:5000/: net::ERR_QUIC_PROTOCOL_ERROR.QUIC_NETWORK_IDLE_TIMEOUT (No recent network activity after 9003077us. Timeout:9s).
failed to connect to server: Error(JsValue(WebTransportError: Opening handshake failed.Error: Opening handshake failed.))

POSSIBLE SOLUTIONS:

run in background thread using webworkers?

@cBournhonesque quick update: browser seems to stop io tasks regardless of whether or not the client runs in a webworker or not, so the appropriate solution should be adjusting timeout i think

(only tested on brave, but should be the same for other major browsers when ram saving is active)

when ram saving mode is disabled, this issue does not seem to occur, so im certain that this is indeed the root cause

@cBournhonesque apparently the thread does not actually get stopped entirely but instead just throttled. Might be possible to figure out if that happens and temporarily stop sending and receiving packets.
Disabling ram saver seems to work on brave, cant say with other browsers. Requires more testing ig.

It's very unclear what the real issue is from reading this.
Can someone confirm:

Who causes the disconnection? Does the server terminate the client, does the client terminate themselves, does the browser terminate the session, etc.?

Regarding the "Keep Alive" strategy:

I don't think this is possible. Unlike websockets which are browser-scoped, WebTransport is tab-scoped. That means when you switch tabs, WebTransport fully stops. The KeepAlive strategy only works for websockets.
However, could we instead modify the constraint to allow messages an infinite amount of time to return a response, to prevent timeout?

Other strategies:

Would automatic re-connection be possible?
Has anyone tried a web worker to keep it alive? This seems like it would work, since the script will run independently of the main thread, allowing it to continue executing even when the user switches tabs.

If you have audio playing on your tab it won't get suspended. It would actually be quite fine for a game to apply this workaround.
Automatic reconnection at the WebTransport layer and all that is not possible since the browser doesn't really give us control over those details of the connection that would enable it: specifically, timeouts. It is the browser that would terminate the WebTransport session, and this will happen regardless of whether tab is paused or not, so we can't hook into it.
It is totally possible to implement the reconnect at the app level though. Would require a certain layer of logic on top of the transport, like a custom handshake to identify the connecting party - but that is possible. The lack of control over the RTT0 in the browsers API is a bit unfortunate here - but if it was there it would be not as bad latency-wise.

If you have audio playing on your tab it won't get suspended. It would actually be quite fine for a game to apply this workaround.
Automatic reconnection at the WebTransport layer and all that is not possible since the browser doesn't really give us control over those details of the connection that would enable it: specifically, timeouts. It is the browser that would terminate the WebTransport session, and this will happen regardless of whether tab is paused or not, so we can't hook into it.
It is totally possible to implement the reconnect at the app level though. Would require a certain layer of logic on top of the transport, like a custom handshake to identify the connecting party - but that is possible. The lack of control over the RTT0 in the browsers API is a bit unfortunate here - but if it was there it would be not as bad latency-wise.

I do think this should be brought up to W3C or a WT working group, but regardless...
Is the reconnect logic a possible workaround possible today? Any chance we could add it to the simple box example?
Sounds like a limitation that won't resolve itself in the next year, since it's limited by API adjustments and a working group.

The real solution is adding audio to the game... :D

The real solution is adding audio to the game... :D

What is the user mutes their browser tab?

@simbleau I don't really understand the problem clearly myself.
My current understand from reading the messages above are:

this is less of an issue with WebSocket because the websocket session is browser-wide, but the tab can still be throttled which could cause issues
for WebTransport the session is per-tab, and gets suspended/ended by the browser when the client switches tabs; so setting an infinite timeout on the server side doesn't fix the issue?

As for the reconnecting logic:
I've started adding more networking-related state to the library, primarily so that we have more runtime-control over the networking configuration (so that a disconnected client can select a different server, etc.): https://github.com/cBournhonesque/lightyear/blob/main/lightyear/src/client/networking.rs#L279
This could be adapted to support reconnections. So the idea would be that when a user switches tabs, the server times them out; but when they reconnect, the server recognizes that it's the same ClientId and resumes their position in the game?

Maybe this is a joke, but I don't consider this a serious solution.

It is though. There are npm packages that play an audio stream of barely audible noise precisely to do just this.

I'll play devil's advocate though ... what if the user mutes their browser tab? Would it still work?

No, it won't. Users have to comply with the workaround if they want to remain connected, and if not - well, it is always up to them. Browsers don't have a good way to keep a tab alive. There's https://www.w3.org/TR/screen-wake-lock/ but it is fora different purpose.
The easiest way for the user to keep the tab active is if it plays audio. The less easy way is for them to add the origin to the list of websites that never go inactive, and the most difficult way is to disable who whole Chromium / Firefox feature - which is nonetheless doable.
That said, there's also background sync, so, maybe you don't actually need the WebTransport session... This does not seem like a portable solution fit for this kind of crate though. Maybe for a more comprehensive networking solution specialized on  web apps/games.

A small, important clarification:

@MOZGIII said It is the browser that disconnects the WebTransport session when you switch tabs, not the server.

Re: web sockets- Yes, that's right. bevy_rtc doesn't have this issue because it uses WebRTC with signaling built over web sockets. Those web sockets never go idle because, regardless of whether the client app is frozen, the server continues to send KeepAlive packets to the web socket.
Re: reconnecting - it's unclear to me, too. I lean on you two to figure this out. I'm guessing when you connect there's a refresh token the client can be told about for "fast reconnecting," However I'd be fine with a total teardown/re-connect. As long as there's some way to reconnect...

What about web workers?

Maybe this is a joke, but I don't consider this a serious solution.

It is though. There are npm packages that play an audio stream of barely audible noise precisely to do just this.

I call that a hack, not a solution.
Perhaps we need to file a case under W3C, actually, to address this.
Because even for games, that's a shitty solution. I mute tabs often, especially games. Communicating the technical problem involved there isn't even possible for, eg. Children and childrens games.

Filed w3c/webtransport#600

I call that a hack, not a solution.

It is absolutely a hack. As you said, W3C has to deal with it, the would probably be a new Wake Lock Web API for this. This is a lot of work however, and definitely not something that is available today - so the workarounds and hacks are still meaningful to discuss here.
After all - it a hack solves the issue it is usually classified as a "good enough" solution and most people can move on the next thing.
UPD:

Filed w3c/webtransport#600

This is great, let's see what they say! I have doubts they'll give us something, as this is a Chrominum thing and is standartized afaik.
I've been going though the source to figure out where it's implemented, so far found this - might be a good place to explore for others too.

Re: reconnecting - it's unclear to me, too. I lean on you two to figure this out. I'm guessing when you connect there's a refresh token the client can be told about for "fast reconnecting," However I'd be fine with a total teardown/re-connect. As long as there's some way to reconnect...

I was talking about the 0RTT QUIC handshakes - they allow establishing a new QUIC connection reusing some of the key material data from the previously-established-but-now-closed QUIC connection to save a few exchanges in the handshake. This is not resuming the old connection though - it is creating a new connection, so re-connection.
With re-connection, it all depends of how the application handles the new connection. If it has a persistent identifier for the client and correlates the context with the said identifier rather than the connection - so that the connections are context-less besides providing the reference to the said persistent identifier - it is very trivial to implement reconnections, assuming the apps supports "connecting mid-game" or otherwise allowing newly connected clients in whatever is going on. This is usually done in games through the initial world-state replication on connection - but in this case an additional support for replicating updates for the previously connected persistent identity (just over a new connection) would be required.
So, the application-level support for seamless reconnection would likely be a "real" solution, as it would not rely on transient state like WebTransport session to be intact in the first place.
I would say though this is a job either for a specific application/game to implement, or a really high-level networking framework, that takes opinionated control over away more things that lightyear in particular currently does.
That said, the solution would most likely have to transport-agnostic, as this is in now way a WebTransport-specific issue - as a typical transport state is transient.

QUIC (the HTTP3/WebTransport underlying protocol) has keep-alive for idle connections as well. See https://datatracker.ietf.org/doc/html/rfc9308#name-session-resumption-versus-k
Web API for WebTransport may just expose the configuration parameters for idle connections management - but overall this is still worse than the solution above, albeit less of a hack than playing audio.
Note that this, however, would not solve the issue - well, at least maybe not entirely.
If the app code is frozen, the queues won't be drained and get overfilled. The browsers will either crash the WebTransport [[Session]] or evict the older datagrams from the queue - meaning the protocol will be disrupted, and the app code will have to recover from this, which is either way likely be resetting the replication state and requesting either whole world state as for the initial connection - or a list of state updates since the last known world state; the latter only works great if you have a deterministic game, or when the desyncs are not a particularly bad problem - like for the online cooperative archvis apps, where there's no need for an authoritative conflict resolution like in games.

@MOZGIII said It is the browser that disconnects the WebTransport session when you switch tabs, not the server.

There are a number of scenarios here that could happen. I have not investigated it in practice, but it is true that the browser causes the connection to disconnect - potentially by not enabling the keep alive settings. But this is unclear, and might be that the server actually sends the goaway frame.

What about web workers?

Thinking about this - if you can extract the whole networked game state maintenance loop into the Web Worker together with the WebTransport - sure, that would work (well, except WebWorkers are deactivated too at certain times, so maybe a ServiceWorker instead, but this can be determined later down the line). That way you can ensure the data the server communicates is not lost and processed to the best of the client's ability while the rendering is unavailable. But moving only WebTransport out would cause the same issue I described at https://github.com/cBournhonesque/lightyear/issues/144#issuecomment-2062607360 (second part).

At the https://github.com/w3c/webtransport/issues/600 they are saying it's an implementation bug, which is what I was very much suspecting thus my attempts to find the tab deactivation code in the Chromium source. From what I recall from reading WebTransport though - it shouldn't be an issue with the tab deactivation. What is most likely the issue though is that the client and server can't agree on the idle timeouts - which may or may not be caused by Chrome side, but based on the lack of the settings to tweak the idle timeout in the spec - it could.
That said, double-check your server side - you could just enable the idle connection keep alive from the server side.
Unfortunately, there is still a problem of data loss that has to be solved (world state reinit or state diff sync), because the datagrams will be dropped from the recv queue if the app can't keep up with them, and the frozen app definitely can't.

Ok so, we need confirmation from a Chromium filed issue this is a bug. Otherwise we aren't sure if it's a lightyear/xwt bug.
Secondly, I'll propose we document the workaround: Disable RAM saving mode with an issue to track the Chromium bug.
Lastly, anyone want to add a reconnection example? I think it would be helpful in any case.

I am very confident this is not an xwt bug, can't be sure of lightyear. I integrate xwt differently in my app, i.e. I am spawning the IO loop into a promise (i.e. async loop). lightyear integrates via bevy's async IO pool, which seems wring to me. Maybe this is the reason why it hangs actually.

I am very confident this is not an xwt bug, can't be sure of lightyear. I integrate xwt differently in my app, i.e. I am spawning the IO loop into a promise (i.e. wasm_bindgen_future async loop spawn). lightyear integrates via bevy's async IO pool, which seems wrong to me. Maybe this is the reason why it hangs actually. I'll soon be working on the guidance on how to better integrate xwt - once I am finished with the research. Stay tuned.

I'm guessing your project suffers the same issue, regardless?
The IoTaskPool seems uncontroversial to me.
But... (and I'm very unsure of how Lightyear works) if all that is needed is to simply run an async future, we could easily offload the tasking to a webworker, which is good news.

There is still a bit of latency generated by sending the data over a webworker.
Working with them in rust is a pain too, so maybe making a js prototype to confirm this is a good idea first?

I'm guessing your project suffers the same issue, regardless?

Actually, I haven't noticed that - but it doesn't mean it's not happening. The web deployment is borked atm, so I can't test properly.

The bevy IoTaskPool seems uncontroversial to me.

Not sure, but bevy IO task pool might be tied to frame generation (i.e. game loop ticking), which might be tied to the request animation frame, which, on a high level reasoning, is justified to be frozen when you switch tabs...

There is still a bit of latency generated by sending the data over a webworker.

Interesting, there is definitely a ton of overhead. Recv would look like this: the native sending datagram to a queue, then sending it to wasm at webworker, then wasm copying it into its own memory - then decoding, then, as we need to send it to main game, copying it out for postMessage to native, then actually sending the data via postMessage cross contexts, then copying it in the from game main's native to game main's wasm - and then finally handling it.
A lot of steps, a lot of copying, but all can happen lightning fast on the modern system - well, that is within 10 ms if I had to estimate. But it might actually be permissively costly for a low-latency game. It could be 100 times quicker if there were just copies and so serialization / deserialization steps - but there are...

It seems this must be a bug in lightyear, not Chrome. As w3c pointed out, the behavior doesn't exist with other apps.
Here's a test app, which runs fine in Chrome and Firefox: https://webrtc.internaut.com/wt/
Perhaps it's the async polling, like @MOZGIII suggested?

@simbleau seems likely in this case, yes. rAF does not run when the tab is "unloaded" thus stopping packet polling via the iotaskpool. a solution based on promises / web- or serviceworkers would be idea if this is confirmed.

Would actually be really easy to confirm. If this behavior happens with WebSocket Transport too, then we have our culprit i think :P

I haven't actually tried anything more than the examples for lightyear. I'm waiting on #253 to really dive into using WT. Hopefully someone can confirm who has experience with Lightyear.

Would actually be really easy to confirm. If this behavior happens with WebSocket Transport too, then we have our culprit i think :P

I now have examples for xwt itself - so another way would be to run those and check if they also demonstrate the same behaviour.

@MOZGIII it works

@cBournhonesque so RAF is indeed the culprit...

@cBournhonesque so RAF is indeed the culprit...

What is RAF?

Do we have a hypothetical solution or just have identified the problem?

I tried using wasm_bindgen_futures instead of BevyIoTaskPool (https://github.com/cBournhonesque/lightyear/pull/352) since the xwt example seems to be doing that: https://github.com/MOZGIII/xwt/blob/master/examples/microapp/client/src/main.rs#L14
but I still get disconnected on tab changes..

the bevy system with netcode runs again, sees that the last packet received was >10sec ago and triggers a timeout.

Could we just disable the timeout in the bevy system

It is already configurable: https://github.com/cBournhonesque/lightyear/blob/30fe00a204bdff1f96cb9c04db9a664359a515b6/lightyear/src/client/config.rs#L25-L25
It's just that having a very high value (20+ seconds) doesn't seem ideal. If a client disconnects suddenly (closes the tab), you would have to wait 20 seconds before the server is aware of the disconnection.
I also created an issue on bevy to potentially make the scheduler keep running bevy systems even if the tab is in the background: https://github.com/bevyengine/bevy/issues/13368

Another possibility is bevy might be doing something to actively put itself (its wasm instance) on hold on tab switches.

Can anyone make a simple / minimal guide on how to reproduce this issue?

I'm trying to make a simple example (without networking): https://github.com/bevyengine/bevy/pull/13370
You can look at the counter log to see if the systems were running when the tab was in the background or not.

Well, yes, for RAF that's expected. But why does it still break when the code is run using wasm_bindgen_futures?

Ah, I read the issue. I am not sure you'd want that - to run bevy systems in the background... Might be better to extract the systems that need to run while in background into their own threads (or Promises, but not bevy tasks). That's what my architectural approach to this would be, at least.
Anyhow, if you need to run bevy systems specifically it could be solved by using/compositing multiple schedulers - in a way that you run some systems on RAF and some with fixed intervals. That would also make bevy tasks function. This could be something that's offered by bevy out of the box - but I'd recommend first experimenting with this locally, as whatever bevy upstream implements might still be suboptimal for lightyear's use case...

@MOZGIII i generally agree with this sentiment.
currently waiting for a reply on https://discord.com/channels/691052431525675048/750833140746158140/1240028202739437588

Sorry I'm a bit slow... is this a good summary?
Potential solutions:
A) add audio as a quick way to get unblocked. Bevy systems will still run unthrottled.
B) set the netcode timeout to a very long time as a quick way to get unblocked. The io tasks shouldn't timeout anymore since they still run in the background when spawned via wasm_bindgen_futures, if I understand correctly? or we can put the io tasks in a WebWorker if they are still throttled.
The issue is that the bevy systems will still be throttled on the client so:

the server would keep sending updates for every entity all the time, since we keep sending updates until we receive an ack.
when the main thread is unthrottled, the client would have to process all the received packets at once. (+ the buffer would overflow so some packets would be lost, etc.)
Basically what @MOZGIII said here

C)

keep bevy systems running in the main thread, which is throttled
spawn the io-related tasks in a WebWorker (which would run in the background in an unthrottled manner even if the user switches tabs). The task would:

send packets to the server. In practice there would be no packets from the game, since the game is throttled/paused. So instead we can just try to keep sending keep-alives. This is the hard part.
receive packets from the io (webtransport) and store them in a buffer (bounded-channel).

Same issues as in B).
D) Handle disconnection/reconnection in your game.

disconnect the client but without despawning its controlled entities
when the client joins the tab again (can be detected via winit events), reconnect the client. We replicate the entire world to the client again. The game needs to detect that the new connection corresponds to the same client (maybe by keeping track of the ClientId in the ConnectToken.

It's already possible to disconnect/reconnect; so I guess this would be the best solution?
E) have some other way to force bevy systems to still run in an unthrottled manner.
Relevant issue: https://github.com/bevyengine/bevy/issues/13368
Looks it would probably be by putting the entire bevy app inside a webworker?

I am thinking currently that having a separate, non-bevy world and ECS for game logic that it network-replicated is a good idea. It is definitely an option to add to the list above, because that thing can in theory run in a WebWorker and handle not only the packet buffering, but full processing of them.
The issue with this is that WebWorker to window communications can be permissively slow in terms of latency - in the 10s of milliseconds just to send a message. This is not great for any game - might be ok for some, but even there users could notice easily that the game is not very responsive. For other games that would be a hard blocker, I mean waay worse than freezes on tab switches.

So, for this crate, I'd suggest either building a portable core that can be used in any way - depending on the app needs, or supporting either one of in-WebWorker or in-main-Windows ways of running the networking, or explicitly both.

It is already configurable:
https://github.com/cBournhonesque/lightyear/blob/30fe00a204bdff1f96cb9c04db9a664359a515b6/lightyear/src/client/config.rs#L25-L25
(for when the client generates the ConnectToken in Authentication::Manual, it's a bit confusing..)
and
https://github.com/cBournhonesque/lightyear/blob/30fe00a204bdff1f96cb9c04db9a664359a515b6/lightyear/src/server/config.rs#L18
It's just that having a very high value (20+ seconds) doesn't seem ideal. If a client disconnects suddenly (closes the tab), you would have to wait 20 seconds before the server is aware of the disconnection.
I also created an issue on bevy to potentially make the scheduler keep running bevy systems even if the tab is in the background: bevyengine/bevy#13368

Actually, there is an Bevy API for window focus.
https://docs.rs/bevy/latest/bevy/window/struct.WindowFocused.html
It's unclear if WindowFocused would be a triggered event on tab switches. It should be.
I'd assume the best solution to disconnect if and only if the last message was over ~20 seconds ago, but we've polled the message queue actively within that time.

Sorry, going to summarize my incoherent thoughts above in a much more digestible manner here:
Steps:

Add a Startup system which will add an event listener to the visibilitychange DOM event, which will run a closure to send a message to the server that the tab has become inactive.
The server will respond to these requests, to switch timeouts to a longer timeout.
When the client comes back, it may experience a buffer overflow. Allow configuration such that if a buffer overflow ever occurs, it disconnects automatically with the reason "buffer overflow".
User can add application layer logic to attempt re-connection automatically on such an event.

may experience a buffer overflow

Small correction on the nature of WebTransport:

If we use streams then we'll get a stream error if the browser's internal receive queue has overflown. If not - the xwt code will be able to spit up stream chunks without a buffer overflow over multiple reads.
If datagrams are used, the datagrams will be dropped (not sure in which order, but I'd assume the oldest will be evicted) - and the xwt code will be able to return the ones that the browser is still kept.

Also, I don't think you can change the client (browser) timeout, can you?

I don't think it makes sense to add another timer - just allow reconnecting asap, with the new session evicting the old session. A simple algorithm sketch to do that would be for the client could generate a random number every time it starts, and present that number to the server upon connecting, and reconnecting. The server, if sees that the same number is already used by another presently connected session upon connection would just assume that session is dead and would drop soon due to timeout, and force-kill it, then transfer server-side resources of that old session to the newly connecting session. thus effectively using the new connection as a signal for the old session force-disconnect, instead of relying on timeouts.
The keep-alive internal and idle timeout on the server side then can just be set to a reasonable, high values for the usual operation without the need to switch the mat runtime. Not sure if those are even tweakable on the client side, pretty sure there's no way: https://w3c.github.io/webtransport/#dictdef-webtransportoptions

Likewise, I don't see any bevy changes happening anytime soon, especially one with the complexity of running systems in web workers.

Regarding this: bevy is actually very modular, and so it would be relatively easy to implement a custom even loop for web if the need be. Easiest way is to even not build it from scratch, and just vendor and patch the winit one a bit to test things up, if that proves to be the issue.

From the source, it looks like WindowOccluded event would be fired when the visibilitychange listener triggers - so it might be possible to just read that - however, that requries a precondition of bevy systems ticking in the first place.


Creating config dir recursively in message/config #16822.

Q
A

Is bugfix?
yes

New feature?
no

Breaks BC?
no

Tests pass?
yes

Fixed issues
#16822

Merged. Thank you!


1.0.6 seems to break dismiss when touching outside of popover

1.0.6 seems to break dismiss when touching outside of popover. I had to revert to version 1.0.5

@wgrand Hm… I am unable to repro this. Still occurring for you with latest code?
Thanks
Paul

I upgraded back to 1.0.6 and I no longer seem to experience the issue. I might have had something set up differently on my end.


Does not (yet) work on Lost Judgment (and I assume Judgment)

Would LOVE to use this mod again,
know I'm asking you to necro fix an old mod, but it's so gold I think it's worth it.
Thank you!

I believe this was deprecated in favor of YAMP, but both were just proof of concepts and not high-priority projects.

:O WOAH

I have not tested it on either, but from what I know it does work on Judgment, just not on Lost Judgment.


serde_xml::from_str yields error on Rust nightly and newest crate versions

    let m: Map = match serde_xml::from_str(&s) {
        Err(e) => panic!("{}", e),
        Ok(d) => d,
    };

breaks with newest cargo update to serde v0.8.0 and now produces the error the trait bound til::mps::Map: serde::de::Deserialize is not satisfied [E0277].
[dependencies]
serde = "*"
serde_macros = "*"
serde_xml = "*"
rustc --version
rustc 1.12.0-nightly (feeca9457 2016-07-26)

please, please do NOT use "*" imports. Never ever.
The issue you are seeing is exactly due to the "*" imports.
I have not yet updated serde_xml to serde 0.8, so there's no way that could ever work.

You are right, I missed that serde_xml was running on serde v0.7.15, thank you for the general advice and quick answer.

I added serde-xml 0.8 to crates.io


Type inference

Coverage decreased (-0.06%) to 99.945% when pulling 15466aba7524f3b59b121b2e103e5e3378763e14 on type-inference into c07a3887a6af26b2ed1eb3c50b101e210d3d8b40 on master.


Add payment due date to invoice

This:

adds a payment_due_date field to the invoice
calculates and populates the field when an invoice is created
includes the value in the API response body

The calculated value is the earliest between the delivery date - 14 days and the quote acceptance date + 30 days

Codecov Report

Merging #510 into develop will increase coverage by <.01%.
The diff coverage is 100%.

@@             Coverage Diff             @@
##           develop     #510      +/-   ##
===========================================
+ Coverage    96.57%   96.57%   +<.01%
===========================================
  Files          122      122
  Lines         3738     3742       +4
  Branches       341      340       -1
===========================================
+ Hits          3610     3614       +4
  Misses          87       87
  Partials        41       41

Impacted Files
Coverage Δ

datahub/omis/invoice/serializers.py
100% <ø> (ø)
:arrow_up:

datahub/omis/invoice/utils.py
100% <100%> (ø)
:arrow_up:

datahub/omis/invoice/constants.py
100% <100%> (ø)
:arrow_up:

datahub/omis/invoice/manager.py
100% <100%> (ø)
:arrow_up:

datahub/omis/order/views.py
100% <0%> (ø)
:arrow_up:

datahub/omis/order/manager.py
100% <0%> (ø)
:arrow_up:

Continue to review full report at Codecov.

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


load balancing with locality

? What is this?
We already have this feature https://preliminary.istio.io/help/ops/traffic-management/locality-load-balancing/

I think this was for additional testing? Which Liam added already so I'll close this


request for code

Hello Gary, I am really impressive to your paper . When I found your repos, I realized that the related blogs are quite interesting and useful from my side. Many thanks for your generous sharing!
Also, I want to ask if you are willing to share the source code of this paper. I understand that if there is some limitation from university, the source code cannot be published. However, if you would like to share some related work about it in blogs, I would really appreciate it.
Best,
Ziwei

Hi, thanks. If you are referring to this repo - gdelt_gkg - there is no paper associated with it, and all the code relating to retrieving GDELT GKG data that I was sharing on my blog is here.


improvement(eslint-config-fluid): Disable problematic rules

Disables the following rules:

unicorn/no-useless-undefined (globally)

This rule reports false positives with alarming frequency. Additionally, there are cases where explicitly specifying undefined can serve as useful documentation (even when it is the default value).

unicorn/consistent-function-scoping (React)

Conflicts with best practices around using React hooks (scoping is important).

Also fixes an existing issue where disabling of rule recommendations from unicorn were being disabled in the wrong config (minimal, rather than recommended).

I expected to see a change in the react printed config. Is that expected?

Good catch. The unicorn/recommended rules were being pulled in via recommended, but I was trying to disable them in minimal. I went ahead and moved a couple other disabled unicorn rules from minimal to recommended to fix them as well.


Modifying behaviour of special derivatives

I recently learned of about this package in the SciML slack channel, and I like it a lot. However, I have one question:
The documentation states that the derivative of $u/|u|$ is deliberately set to NaN.
I am coming to a similar problem from the perspective of RBF kernels, in which case it is necessary to consider this from the "right side" derivative perspective, such that $\tfrac{d^2}{dxdy} \sqrt{(x-y)^2}^2 = -2$ and $\tfrac{d^2}{dxdy} \sqrt{(x-y)^2} = 0$. Due to the mentioned behaviour, this returns NaN when using this package.
I was wondering if there was an option to deliberately modify this behaviour?

I am open to adding such an option. Let me look at the code to see what would be the best way to allow users to define this.

Maybe you could do this by wrapping the function in a conditional
ifelse x-y == 0 ? -2 : $\tfrac{d^2}{dxdy} \sqrt{(x-y)^2}^2$
FD doesn't support conditionals yet and it will be a while before it does.

Interesting, that could certainly be a way to do it (not just with FD, but probably with any choice of AD framework). It at least lets me do something on my end now.
However, using the conditional approach might need a lot of special casing or type piracy. For added context, the problem appears when using the Euclidean distance from Distances.jl (which is exactly $\sqrt((x-y)^2)$) in some of the stationary kernels. This came up in https://github.com/JuliaGaussianProcesses/KernelFunctions.jl/issues/517.
KernelFunctions already defines a special ChainRules.jl  rule for this distances, but also making it possible to use more recent/ faster AD frameworks would be fantastic.
I will play around with the idea above, and beyond that, happy to try to help on this package, if I can.

It seems that allowing users to define custom derivative rules would increase the range of problems FD can be applied to. If you have any insight about how to do this then let's continue this discussion.


chore: bdd-nh-1595257373 to 0.0.1

chore: Promote bdd-nh-1595257373 to version 0.0.1

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

Needs approval from an approver in each of these files:

OWNERS

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


Button to disable spliting

The only issue i have with this script is the splinting.

Ive disabled splitting in my fork for the master branch, although the beta branch has splitting mostly disabled(quickly glanced over at the code, looks really promising as an alternative method of searching and avoidance)

I merged the beta branch back in master, no more splitting.

Hey dombeef, could you update you're version so that it works with latest agar.io? I'd like to use the zoom out feature.

Oh hey, apostolique's bot now works again! Thats odd, it didnt work earlier when the update to block certain custom scripts came out.
Ill try to see what is causing my fork to be blocked, im a bit busy at the moment, with finals and all, but i should be able to try a few hours here and there, ill be mostly free for the end of this week to try to get it working.
You could always try to edit in the zoom out feature into the new master branch, it shouldnt be too hard to do.

There was an update to block scripts? I didn't get the memo.

dombeef, actually Apostolique updated his script, I think you can just copy paste the zoom out feature into Apos version?

Apostolique, it was more about them trying to block scripts that were cheating(technically our bots would fall under that name since it gives us unhuman like reflexes as well as seeing other masses, scaling, and seeing the wall borders(maybe more like the forks had those extras thrown in), but more specifically, there were plugins that would change the adspace in the game to their own ads(so the creators of agario wouldnt get any money from clicked ads, only the script developers would) which the creators of agario really wanted to stop, so they did something(still have no idea what they did to block certain scripts)

Apostolique, it was mainly to block scripts that overlayed their own ads over the sites ads, as well as some scripts that added features like zooming out and showing all mass(the scripts that replaced ads all seemed to be used to unfairly play the game, so it may show why the old bot was blocked(as well as yours, yet somehow it randomly started working again :P)
And i9w, why cant you just do it if you think its easy? I'm busy trying to get the old bot code working(just for the heck of it, as well as trying to keep the code still running, both it and the new code are great methods of avoidance, although the newer one starts to lag on my computer after a few minutes of playing/many people on the screen/ high ping from the server)  in my free time, which ive been busy lately.

@Apostolique they made some sort of change so that scripts like agario.org don't work anymore. If you try to play it either won't connect to a server or it just shows a white screen.

I see. Still,l I'm pretty sure if they updated their code, it would work again.

dombeef, I'm just using a chrome extension currently to zoom out, as it's the only one working. Without it the game is pretty much bugged, where you can't see cells split killing you only after they do.


Feature request: Add --exact option

It will use npm i --save-exact to save dependencies.

@th0r There you go! https://github.com/siddharthkp/auto-install/pull/27
Published.


Fix error with converting large integers to float

Error when checking if a floating-point value is a whole number or float. Is there a math expression to determine if a number is whole or not? That would also fix issues with .is_integer() not being able to be called on ints (despite the fact that self.value is a float).
Code where error happened:
return float(self.value).is_integer()

Error:
OverflowError: int too large to convert to float

Commit: https://github.com/johneastman/boomerang/commit/5ba614b8cec9d5c4a02084ae2f8d1bf4eab53e89


cloudflare_ruleset - split into multiple, smaller, resources

Current Terraform and Cloudflare provider version
terraform 1.7.5
provider 4.26.0
Description
The cloudflare_ruleset resource is huge by terraform standards and is very complex/difficult to terraform, and the documentation is also very long.
I would like to see this resource split into multiple, smaller, resources.
I appreciate the API may currently prevent this?  However, if that is the case then I'd suggest the API itself needs to also allow the splitting up of API endpoints.
Use cases
Using such a large resource is prone to coding issues and is hard to debug. It is also hard to decipher the documentation.
It is also difficult to ascertain which parameter values to use in the resource to terraform the required cloudflare configuration.
Potential Terraform configuration
This is just one example of how we could have separate resources for the custom firewall rules.
This would allow each rule to be configured separately, and then those rules allocated to the ruleset in the correct order.
resource "custom_firewall_rule" "one" {
  name       = "example1"
  action     = "block"
  enabled    = true
  expression = ("my example expression")
}

resource "custom_firewall_rule" "two" {
  name       = "example2"
  action     = "block"
  enabled    = true
  expression = ("my example expression")
}

resource "custom_firewall_ruleset" "example" {
  rules = [
    custom_firewall_rule.one.id,
    custom_firewall_rule.two.id,
  ]
}

This simplifies the terraforming, as a lot of the config currently required is already "hardcoded" into the provider resource itself, eg there is no need to specify a phase of http_request_firewall_custom.
There would need to be separate resources for each current phase.
In general it is just much more terraform friendly.
References
No response

Should this be immediately closed.  How about leaving it open to be voted on by the community to help to see where this lies in the community's priority?

this is not the place where we track potential longer term initiatives. it is for actionable enhancements that have a clear path forward. this is something we know does not fit into that category due to past internal discussions.
fwiw, in the future, we won't be accepting feature requests via GitHub as it is not the backlog teams use for prioritising their work stream.

I added a workaround using multiple repositories here: https://github.com/cloudflare/terraform-provider-cloudflare/issues/3027#issuecomment-2138260815


Add PHP AJAX jQuery Tutorial Book

What does this PR do?
Add resource(s) | Remove resource(s) | Add info | Improve repo
For resources
Description
Why is this valuable (or not)?
How do we know it's really free?
For book lists, is it a book? For course lists, is it a course? etc.
Checklist:

[x] Read our contributing guidelines.
[x] Search for duplicates.
[x] Include author(s) and platform where appropriate.
[x] Put lists in alphabetical order, correct spacing.
[x] Add needed indications (PDF, access notes, under construction).
[x] Used an informative name for this pull request.

Follow-up

Check the status of GitHub Actions and resolve any reported warnings!

Is this co-authored by Oleh and Desrizal? Saw this on the cover and wasn't totally sure. If not, everything looks good! 👍

Is this co-authored by Oleh and Desrizal? Saw this on the cover and wasn't totally sure. If not, everything looks good! 👍

Oleh word is indonesian that refered to "By"

Oleh word is indonesian that refered to "By"

😅 Good to know! Thanks for the reply.

Oleh word is indonesian that refered to "By"

😅 Good to know! Thanks for the reply.

Anytime , Buddy.


displacy container type element supported

Now, DOM element can also be passed to refer to Displacy container.

Thanks! Didn't really consider this use case before, but definitely makes sense if displaCy is meant to be part of a JS app or "pipeline".


@mixin \Eloquent is hardcoded and facades are optionals

Problem
Each model receive a mixin with Eloquent facade, but sometimes facades are disabled (like Lumen) or just commented on Laravel app.php.
Proposed solution, add this to config.php:
    // default
    'eloquent_mixins' => [
        '\Eloquent'
    ]

Another option, for a case without facades
    'eloquent_mixins' => [
        \Illuminate\Database\Eloquent\Model::class,
        \Illuminate\Database\Eloquent\Builder:class
    ]

Then this option can change phpblockdoc on models
 * @mixin \Eloquent

Alternative solution for Lumen
Add a hack to AppServiceProvider.php:boot() like says @ihipop on https://github.com/barryvdh/laravel-ide-helper/issues/611#issuecomment-361163745
Alternative solution for Laravel (facades disabled)
namespace App\Providers;

use Illuminate\Foundation\AliasLoader;
use Illuminate\Support\ServiceProvider;

class AppServiceProvider extends ServiceProvider
{
    public function boot(): void
    {
        if ($this->app->environment() !== 'production') {
            AliasLoader::getInstance()->alias('Eloquent', \Illuminate\Database\Eloquent\Model::class);
        }
    }

    public function register(): void
    {
        if ($this->app->environment() !== 'production') {
            $this->app->register(\Barryvdh\LaravelIdeHelper\IdeHelperServiceProvider::class);
        }
    }
}

Related with #611 and #756 (finishing words)

Why should the package default to Facades at all, when they're optional but the actual classes which can be referenced are always there?
I mean, why make it configurable / more complex when we could just always refer to the destination classes anyway.
Seems to me that the decision to use Facades here just brings problems to the table anyway.

Hi @mfn,
For perfomance and better code reasons, we don't use aliases, like Lumen.
On this case, I think, we need change @mixin \Eloquent because is not available.

Yes, as I said, the aliases are optional so why should this package ever depend on it.

It's there a way to disable the insertion of @mixin \Eloquent in my model's DocBlock?
If I run php artisan ide-helper:models -W, * @mixin \Eloquent is added:
<?php

namespace App\Entities;

use Illuminate\Database\Eloquent\Model;

use Illuminate\Database\Eloquent\Relations\HasMany;
use Illuminate\Database\Eloquent\Relations\BelongsTo;

/**
 *
 *
 * @property int $id
 * @property string|null $name
 * [...]
 * @mixin \Eloquent
 */
class Company extends Model
{
    // ...
}

It shouldn't be added by default, but only when the config is set to true: https://github.com/barryvdh/laravel-ide-helper/blob/4b459d3e828fedb0fa5455fe6d25af17130635cb/config/ide-helper.php#L87
Did you publish your config and made changes?

It shouldn't be added by default, but only when the config is set to true:

@barryvdh this is a different settings 😅

when using the ide-helper:models --write, @mixin \Eloquent is added hardcoded to each model => https://github.com/barryvdh/laravel-ide-helper/blob/4b459d3e828fedb0fa5455fe6d25af17130635cb/src/Console/ModelsCommand.php#L788-L791
the write_eloquent_model_mixins setting writes it to the vendor Model.php directly (including other mixins for Query and Eloquent Builder) => https://github.com/barryvdh/laravel-ide-helper/pull/700

So in short, currently there's no way to prevent this.
Before adding a new config I would suggest to see if we can detect if the Facade alias exists and, if not, don't write the mixin there.

(adapted the labels as this is rather an enhancement)

Sound a like reasonable enhancement to have. I am surprised there still no PR for it.


The bug in the apollo nextjs client

Details in the support thread: https://support.apollographql.com/hc/requests/11317

Thank you - no further detail needed here, I'm in the loop :)

Thanks @IkeMurami - we're deleting this issue now to prevent confusion and will handle this through the support ticket.  Much appreciated 🙏🏻


Remove unnecessary client connector actions from CBR & HBR ballerina samples

Added following separate PR for this issue #3177 and closing this


Recoginize bare test import

This should be a valid test:
import test from 'node:test'
test('foo', () => {})

however, to get this to be recognized by the plugin in my project, I had to do this:
import {test} from 'node:test'
test('foo', () => {})

I figured this out looking at #11 and #23.

Duplicates https://github.com/connor4312/nodejs-testing/issues/42


Pre-release for v2.0.0-beta0

Job d2l-zh/PR-1026/2 is complete.
Check the results at http://preview.d2l.ai/d2l-zh/PR-1026/

Job d2l-zh/PR-1026/8 is complete.
Check the results at http://preview.d2l.ai/d2l-zh/PR-1026/

Job d2l-zh/PR-1026/3 is complete.
Check the results at http://preview.d2l.ai/d2l-zh/PR-1026/

Job d2l-zh/PR-1026/9 is complete.
Check the results at http://preview.d2l.ai/d2l-zh/PR-1026/

cc @xiaotinghe, @goldmermaid, and @mli
Thanks for the hard work!


hidden column issues

We have a filter that hides columns. All works well until stickyheader initializes. Then the fixed header is only as wide as the "visible" columns while the tableFloatingHeader (behind) retains the original display.
The result is the fixed header and body are smaller than the container and the underlying thead is visible behind - it is this that is setting the container width and basically breaking it.
Ive tried to re-initialize it by calling jQuery('#tblMatrix').stickyTableHeaders({ fixedOffset: SNT.pageSetup.setTableHeader() });
No luck.

Okay found a solution, this works:
jQuery('#tblMatrix').stickyTableHeaders('destroy');
jQuery('#tblMatrix').stickyTableHeaders({ fixedOffset: SNT.pageSetup.setTableHeader() });
So why does this not? Is the syntax incorrect?
jQuery(window).trigger('resize.stickyTableHeaders');

confirm something weird happens when there are hidden columns.


Fix orphaned event checksum data for Redis

Fix #2143
Update the deleteEvent function to perform an extra lookup for the
checksum value associated with the event to be deleted and remove the
lingering data. The additional lookup is necessary since there are three
different types of Events(correlation,contract,and redisEvent) being
used within the Redis implementation of the DBClient and the one being
used for common lookups(contract) does not have the checksum information
so it is lost during serialization. The approach is the most direct and
non-invasive solution. Other attempts to clean-up and reduce the
divergence of the types being used resulted in unrelated Blackbox test
failures.
Signed-off-by: Anthony M. Bonafide<EMAIL_ADDRESS>

This commit was acherry-picked off of master. This fix has been applied to master(Geneva)

Codecov Report

Merging #2181 into fuji will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##             fuji    #2181   +/-   ##
=======================================
  Coverage   44.06%   44.06%
=======================================
  Files         186      186
  Lines       11682    11682
=======================================
  Hits         5148     5148
  Misses       6235     6235
  Partials      299      299

Continue to review full report at Codecov.

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


RFC: optionally create .iso images in addition to / instead of .tar.gz

I've been recently investigating how to get a phoenix-framework project booted on rumpkernel, and exrm seemed the perfect choice.
however, directly to convert a .tar.gz with genisoimage is impossible, so it's always a chore.
it would be nice if we could just make it a config option!

@igalic I'm interested, what do you need on the exrm side for that?

@bitwalker right now, exrm creates the tar.gz
i'd like it to create an .iso (too|instead)

@igalic Right, however what is the cross platform way of creating an iso? I think this is a better fit for an exrm plugin, rather than a built-in feature.

aah, that would make sense…!

@igalic I'm going to close this for now, but if you find you need something from exrm in order to support this feature as a plugin, please open a new one with what you need!


Static tab title...

Hi Guys.
I have an profile with ssh.exe which connects to one of my linux boxes. All works fine but i would like to adjust it a little bit.
My problem is that when i connect to that linux box then tab title is automatically changed to 'OpenSSH SSH client". I would like to to keep it as i named it "My linux box".
I tried to use:
        "name" : "My linux box",
        "tabTitle" : "My Linux Box",

in profile config but tab title still changes.
Is there any way of getting rid off dynamically changed tab titles or setting up static tab title which never changes?
Thank you.

Thanks for the suggestion! This is actually already being tracked by #2645, and is in PR in #2750.
/dup #2645

Thank you guys.
By the way... impressive piece of work that terminal is...
May i ask one more thing out of the topic?
I like to understand what i use best i can.
One thing which i cannot figure out is that why when you specify paths in  "commandline" parameter, to separate folders u need you use / and not \ like in rest of Windows system?
Thanks for any clues in that matter.

@4k3or3et You can definitely use \ as a path separator, but because the file is a JSON file, you need to make sure to escape it properly 😉 \ is the escape character for JSON files, so you need to use "\" whenever you want a single \.


Manage multiple AzureWebJobsStorage

At the moment the Durable Function Monitor manages one instance of Azure Storage, via Env Var: AzureWebJobsStorage.
Would it be possible to have more than one Azure Storage connection?
Configuration can be achieved (for example) via comma separated values of connection strings
So in the UI, it should be added a combo box  that makes possible to choose between different storages configured,
(and for each storage we can have multiple Task Hub choices)

Hey @MarcoTranfaglia ,
DfMon InProc does supports multiple Storage accounts, via DFM_ALTERNATIVE_CONNECTION_STRING_XXX config settings. Note though, that those alternative connection strings can only be access key-based (not identity-based).
DfMon Isolated does not support those, and is unlikely to ever support. After all, you can always run multiple DfMon instances on the same App Service Plan - and that would eliminate the cost concern (if that is the concern). If there're any other concerns - please, share.
DfMon as a VsCode ext automatically shows you all Task Hubs in all Storage accounts visible to you, so that is also an option.

@MarcoTranfaglia , does that answer your question?

So, why not using one single instance of DfMon InProc?

Hi @scale-tone InProcess worker mode is in path of  deprecation : https://azure.microsoft.com/fr-fr/updates/retirement-support-for-the-inprocess-model-for-net-apps-in-azure-functions-ends-10-november-2026
I'm in same situation than Marco, should be far more user friendly if you have 1 DfMon for all function.
Is there any technical issue with multiple Storage accounts in Isolated mode ?

So, why not using one single instance of DfMon InProc?

I have the same scenario, one dfm instance to monitor multiple taskhubs on different storage accounts. For security purposes, these accounts have their access keys disabled.


Add icons support

It would look nice to add icons to some bubbles, probably nerdfonts' icons, but with support for the users that don't use nerdfonts.

Added icon for branch bubble

Closed because this seems to be a progressive update.


feat: Changes related to Stage 1 - TF backend compatibility check for Vision Transformer on small datasets

This PR caters to address Stage 1: tf.keras backwards compatibility check of the Issue Keras.io examples conversion gameplan #18468 for vitsmall_ds.py example with some essential modification to make script executable error free for tensorflow backend.
Here is the git diff with original file -
diff --git a/examples/vision/vit_small_ds.py b/examples/vision/vit_small_ds.py
index 7fd77de..31be894 100644
--- a/examples/vision/vit_small_ds.py
+++ b/examples/vision/vit_small_ds.py
@@ -5,6 +5,7 @@ Date created: 2022/01/07
 Last modified: 2022/01/10
 Description: Training a ViT from scratch on smaller datasets with shifted patch tokenization and locality self-attention.
 Accelerator: GPU
+Keras 3 Conversion initiated by: [Pavan Kumar Singh](https://github.com/pksX01)
 """
 """
 ## Introduction
@@ -33,26 +34,20 @@ The main ideas are:
 This example implements the ideas of the paper. A large part of this
 example is inspired from
 [Image classification with Vision Transformer](https://keras.io/examples/vision/image_classification_with_vision_transformer/).
-
-_Note_: This example requires TensorFlow 2.6 or higher, as well as
-[TensorFlow Addons](https://www.tensorflow.org/addons), which can be
-installed using the following command:
-
-```python
-pip install -qq -U tensorflow-addons
-```
 """
 """
 ## Setup
 """

+import os
+os.environ["KERAS_BACKEND"] = "tensorflow"
+
 import math
 import numpy as np
 import tensorflow as tf
-from tensorflow import keras
-import tensorflow_addons as tfa
+import keras
 import matplotlib.pyplot as plt
-from tensorflow.keras import layers
+from keras import layers

 # Setting seed for reproducibiltiy
 SEED = 42
@@ -354,7 +349,7 @@ at a later stage.
 """

-class MultiHeadAttentionLSA(tf.keras.layers.MultiHeadAttention):
+class MultiHeadAttentionLSA(keras.layers.MultiHeadAttention):
     def __init__(self, **kwargs):
         super().__init__(**kwargs)
         # The trainable temperature term. The initial value is
@@ -498,7 +493,7 @@ def run_experiment(model):
         warmup_steps=warmup_steps,
     )

-    optimizer = tfa.optimizers.AdamW(
+    optimizer = keras.optimizers.AdamW(
         learning_rate=LEARNING_RATE, weight_decay=WEIGHT_DECAY
     )

@@ -547,7 +542,4 @@ supplementary of the paper.

 I would like to thank [Jarvislabs.ai](https://jarvislabs.ai/) for
 generously helping with GPU credits.
-
-You can use the trained model hosted on [Hugging Face Hub](https://huggingface.co/keras-io/vit_small_ds_v2)
-and try the demo on [Hugging Face Spaces](https://huggingface.co/spaces/keras-io/vit-small-ds).
 """

Codecov Report
All modified and coverable lines are covered by tests :white_check_mark:

Comparison is base (10252a9) 63.86% compared to head (56bde42) 55.96%.
Report is 5 commits behind head on master.

Additional details and impacted files
@@            Coverage Diff             @@
##           master   #18884      +/-   ##
==========================================
- Coverage   63.86%   55.96%   -7.91%
==========================================
  Files         336      336
  Lines       34848    34854       +6
  Branches     6855     6851       -4
==========================================
- Hits        22255    19505    -2750
- Misses      11121    13881    +2760
+ Partials     1472     1468       -4

Flag
Coverage Δ

keras
55.96% <ø> (-7.91%)
:arrow_down:

keras-numpy
55.96% <ø> (?)

keras-torch
?

Flags with carried forward coverage won't be shown. Click here to find out more.

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.

Thanks for the PR! The code changes look good. Please reopen the PR on https://github.com/keras-team/keras-io -- we have moved example handling there. Keras 3 examples were only hosted on keras-team/keras temporarily while keras.io was still focused on Keras 2.
I have updated the instructions in the "call for contributions" pinned issue.


ARP: AntoineAflalo.SoundSwitch version <IP_ADDRESS>061

[ ] Have you signed the Contributor License Agreement?
[ ] Have you checked that there aren't other open pull requests for the same manifest update/change?
[ ] Have you validated your manifest locally with winget validate --manifest <path>?
[ ] Have you tested your manifest locally with winget install --manifest <path>?
[ ] Does your manifest conform to the 1.0 schema?

Note: <path> is the name of the directory containing the manifest you're submitting.

Microsoft Reviewers: Open in CodeFlow

https://github.com/microsoft/winget-pkgs/pull/26452#issuecomment-912909528


Correct way of checking for role?

I've been using this method of checking for role Auth::user()->hasRole('admin'), throughout my layout and view files.
It was only until I installed Laravel Debugbar that I realise there were multiple repeated database queries. For instance, 19 statements were executed, 18 of which were duplicated, 1 unique
Most of them were:
select `roles`.*, `role_user`.`user_id` as `pivot_user_id`, `role_user`.`role_id` as `pivot_role_id` from `roles` inner join `role_user` on `roles`.`id` = `role_user`.`role_id` where `role_user`.`user_id` = '1'

Removing hasRole() has helped to reduce the queries.
So I guess probably shouldn't be doing checks this way.
What is the correct way of checking for roles?
I found Blade Templates directives to be a cleaner solution, but it doesn't seem to help reduce the queries.

were you able to solve this issue by any chance?

I think that could be fixed by using View::share on boot(). So the auth user's role is queried just once

@PaoloFalomo No. Each time you check for roles or permissions one or more query is/are made. One workaround I can think of is to do it once, store the result in a variable as boolean and use that instead.

@jaspalt take a look at this https://laravel.com/docs/5.4/views#passing-data-to-views to pass a variable to each view like suggested by @resting

Hey @PaoloFalomo,
I'm using view composer and I need to link to admin dashboard.
So to check if the auth user has the role admin from the view composer, how do I go on about doing that?
view()->composer(['partials.sidebar','partials.nav_authenticated'], function($view){
            $view->with('user',auth()->user());
        });

how do you solve this problem?


Bump all versions

Repairnator is no more compliant with first release: lots of arguments have changed and the scripts cannot be used anymore with the 1.0. So I proposed to bump everything to version 2.0 right now. So contrary to what I said, next release of the scanner would be 2.0. WDYT @fermadeiral ?

Can we merge this after being sure the scanner is ok? I'm asking this because I'm afraid the scanner is still not ok, and then even the scanner will not be ready in 2.0.

Pull Request Test Coverage Report for Build 1597

0 of 0 (NaN%) changed or added relevant lines in 0 files are covered.
38 unchanged lines in 2 files lost coverage.
Overall coverage decreased (-0.8%) to 48.783%

Files with Coverage Reduction
New Missed Lines
%

repairnator/repairnator-realtime/src/main/java/fr/inria/spirals/repairnator/realtime/RTScanner.java
9
32.24%

repairnator/repairnator-realtime/src/main/java/fr/inria/spirals/repairnator/realtime/serializer/BlacklistedSerializer.java
29
8.82%

Totals

Change from base Build 1596:
-0.8%

Covered Lines:
2305

Relevant Lines:
4725

💛  - Coveralls


Button to copy webhook payload

It's common to want to copy the webhook payload, especially for saving test cases. I'd love a "copy" button that saves the payload to my clipboard.

I had the same thought! I agree, it'll be really useful.


Incorporating decorator to automate subscribe/unsubscribe ngRedux.connect

I had created a decorator that allowed a component to automatically subscribe and unsubscribe from the Redux application store on the Angular2 life cycle hooks.
https://github.com/ng-cookbook/angular2-redux-complex-ui/blob/master/src/app/decorators/app-store-subscriber.ts
Would it make sense to incorporate a similar directive into this library (using the ngRedux.connect method)?

Hi @dfbaskin,
we have something similar in the works and pending approval. please see https://github.com/angular-redux/ng2-redux/pull/83 for a preview

Thanks!


Enhancing Node-RED Logging: Introducing Host Output Logging Capability

Description
At present, the logging mechanism for Node-RED projects directs all logs to the 'driver', which can be accessed through the FlowFuse Project logs interface. In environments where Kubernetes clusters are deployed and are integrated with monitoring solutions (such as log forwarding to OTEL/ FluentBit for pods, and then to traces/metrics/etc. to backends like Prometheus/Jaeger/, etc.), there is a valuable opportunity to streamline monitoring practices.
Enabling Node-RED projects to output their logs directly to the pod's console will facilitate a more unified approach to monitoring by leveraging existing log aggregation configurations.

https://github.com/FlowFuse/flowfuse/issues/3324

Thank you @hardillb - closing this one


How to build for the electron 3.0.6?

I have a project made by electron 3.0.6 and node 8.x,but iohook is not support for electron 3.0.6. I need a help to tell me how to complie the project to support electron 3.0.6 or some other methods to make this project to support  electron 3.0.6. if you need some help , i will do my best to help you , thanks.

Hi there, I'm currently uploading v0.2.1 with electron 3.0 compat ! Stay tuned.

Hi,
Appreciate the quick turnaround earlier, thanks.
I just installed v0.2.1 and it doesn't run for me. The build works but running in Electron v3.0.6 causes it to bail out.
dyld: lazy symbol binding failed: Symbol not found: __ZN2v811HandleScope12CreateHandleEPNS_8internal10HeapObjectEPNS1_6ObjectE
Referenced from: node_modules/segfault-handler/build/Release/segfault-handler.node
Expected in: flat namespace
Node: v10.12.0
NPM: v6.4.1
Electron: v3.0.6
iohook: v0.2.1

Could you try with node 9? Not sure if node 10 is really working now...

(I'm running on 3.0.6 on my machine)

I'm afraid we can't really. We were on Node LTS (v8) which was fine for osx-mouse, but we need to move to v10 to get a feature only released in v10. On 30 October v10 will become the LTS version of Node so will be the standard.
Do you know what would be required to support v10?

Just saw https://github.com/ddopson/node-segfault-handler/issues/51
I just cloned iohook and noted the dep of "segfault-handler": "^1.0.0". This should be enough to get 1.0.1, but it obviously wasn't getting it — when I tried to build it complained about v8-debug.h not found. When I changed it to "^1.0.1" I was able to build — looks promising.
Could you make that change please?

@alexgreenland i'll look into that this afternoon. Thanks.

@alexgreenland Hi, i'm closing this issue and opening another one about node10


clc_list_log

Checks

[ ] Your YAML file has required fields as listed in Specs
[ ] All checks have passed yaml-lint passed
[ ] You agree to contribute your work under MIT license

Reviewed, closing.


-r / --region switch fails if not set

Describe the bug
StrainTool fails if -r / --region switch fails if not set in command line
To Reproduce
Steps to reproduce the behavior:

run command 'StrainTool ' without setting "-r"
check for error 'NameError: name 'region' is not defined'

Expected behavior
No error
Screenshots
Desktop (please complete the following information):

OS: [Linux]
Python: [2.7]
GMT: [e.g. 5.2.1]
StrainTool: [v1.0-rc3]

Additional context
Add any other context about the problem here.

To fix:
replace the check if args.region with if 'region' in args:. This behavior is caused by suppressing default values for certain options, via the default=argparse.SUPPRESS option in parser.add_argument.

Fixed in branch dev


index.php keeps refreshing

This bug is currently unrepeatable on my end, I cannot get this bug to happen again, even by following the direct steps for installation. If someone can produce this bug again and provide some instructions, I will be happy to fix it immediately.
This bug currently occurs on my FatCow webhost server. After installing Glifcos, setting up the plugin correctly, and visiting the index.php, it will keep refreshing forever and ever.

Issue closed. Appears to be specific to some webhosts, please change your php.ini if you do experience this error.


SH2ee: incorrect directx front buffer

Hello,
SH2ee is an open source project to play Silent Hill 2 on modern computer, the devs maintain a Wine compatibility.
Since DXVK 2.2, an issue appears: when you want to quit the game, quit menu superimposed with main menu, main menu does not disappear to let the place to quit menu :

I opened an issue on SH2ee Github here:
https://github.com/elishacloud/Silent-Hill-2-Enhancements/issues/942
The SH2ee devs think it is related to directx front buffer
I make several tests and can not reproduce this issue with DXVK =< 2.1

try different Wine versions: issue still present
DXVK off: no issue
DXVK 2.3.1: issue still present
DXVK 2.3: issue still present
DXVK 2.2: issue still present
DXVK 2.1 and less: no issue

Thank you for your help.
my config:
Manjaro 23.1.3 Vulcan
Kernel: x86_64 Linux 6.6.19-1-MANJARO
Proc: AMD Ryzen 9 5900HX
GPU: AMD Radeon RX 6600M
Drivers: Mesa 24.0.2
Resolution: 1920x1080
32 Go RAM
DE: Xfce4

I joined Wine log.
this is the log messages when I try to reproduce the issue:
warn:  D3D9Surface::QueryInterface: Unknown interface query
warn:  00000000-1c77-4d40-b0cf-98fefdffffff
NoTex Character
warn:  D3D9Surface::QueryInterface: Unknown interface query
warn:  22222222-1c77-4d40-b0cf-98fefdffffff
warn:  D3D9Surface::QueryInterface: Unknown interface query
warn:  11111111-1c77-4d40-b0cf-98fefdffffff

SH2ee_wine.log

Hi there.
Would it be possible for you to make a apitrace?

Voilà:
https://mega.nz/file/T1BHQSgA#2IWFi2eFschViZY4kvdgM340YCNhqJe9q14sUxIcC3Q

Thank you. Though it seems the issue is baked in to the trace as it shows with dxvk 2.1 too and wined3d.

Do you need another trace? Others information?

No need. I managed to get my hands on a retail copy of the game.
I've bisected the issue to start with commit https://github.com/doitsujin/dxvk/commit/5443a2f9f581e2cc578579605bf028089a675ef9

Apitraces of both the native game and dxvk on Windows
https://drive.proton.me/urls/YY20V9BS74#btRWEjecHSgc

This definitely appears to be an issue with the Enhanced Edition and/or d3d9.


Test sg with btn

this PR

monkey patches bore with our custom h for correct processing of attributes
adds testing styleguides
adds expect for assertions instead of chai

this is failing because of https://github.com/skatejs/bore/issues/11

can you pls re-review @hopkins-tk ASAP ? thx


Lobot/HiWonder Server Control board v1.5

the example for the lewansoul_lx16a_controller was missing the module in the setup.py. After getting it to load, I realized that the board is recognized as a hid device and not a serial device. Could this be due to the changes in the board since you last update?
Thanks in advance

Am I not sure what you're talking about, but the way board is recognized depends on USB drivers and have nothing to do with this library.

@JENkt4k I think you'd have to use an external serial adapter on the UART port of the board. Until he adds hid library support to this tool. Like the Xarm library does. https://pypi.org/project/xarm/

@JENkt4k Bit of a necro, but I resolved this by using the bus linker board rather than the larger board


Problems with gene names

Hi :)
I used Cellxgene VIP, it's great thx all:)
But I 've a little problems, the names of the genes do not appear, I have to indicate the Ensembl numbers. If I indicate names generic (for exemple STAT5A), it does not work I have to indicate ENSG000....
The h5ad file I'm using is on my computer, downloading directly from the server. It works perfectly with cellxgene (the name of the genes is present), but as soon as I launch cellxgen-VIP I have to enter the numbers Ensembl to find my genes.. which is very problematic for me..
Do you have any idea why this is not working?
thank you very much for your time
PS: excuse my English :p

Could you provide the version of the anndata. VIP currently only support anndata <0.8. And if you load your data, adata.var_name is used as gene identifier in the cellxgene and cellxgeneVIP. Please let me know if this helps.

It's work, I just add --var-names feature_name
thx :)


Track references to init methods

Find all Refs on __init__ methods does not track calls via constructing the object.
We should ensure that references are there.

Judging by our tests, we don't do this on purpose right now.

We're closing old issues with no recent activity. If this is still important, please open a new issue.


On index.html have dropdown of currently signed up users to select from to advance to hazard input form

Good stackoverflow to use as a resource
https://stackoverflow.com/questions/50081904/issue-dynamically-populating-dropdown-using-node-and-handlebars


Integrate Z indexing support for symbols

Upstream in https://github.com/mapbox/mapbox-gl-native/pull/12783, integration for changing order of z index landed for symbolLayer. We need to hook into this configuration and expose a z-index configuration on our end that conforms to the selected configuration.

You mean the sort-by-y-position vs sort-by-datasource-order option?

This will be integrated thorugh sort by datasource order (this also means this feature is limited to symbols and available for fill, circle or line). Every time a property is updated we will have the ability to sort the data.
WIP that depends on v6.6.0 of the maps sdk:

Will ship with v6.6.0, issue on hold with https://github.com/mapbox/mapbox-plugins-android/issues/681

landed with #718


ActiveRecord::StatementInvalid - PG::Error: ERROR:  prepared statement "a1" already exists

Hi I'm trying to run stringer in production mode but i get this error on http://localhost:5000/feeds/new , i don't have this problem in development mode
$ cat .env
RACK_ENV=production
PORT=5000
STRINGER_DATABASE=stringer_live
STRINGER_DATABASE_USERNAME=stringer

$ foreman start

20:43:48 web.1     | D, [2013-06-01T20:43:48.523834 #368] DEBUG -- :    (0.7ms)  SELECT COUNT(*) FROM "users"
20:43:48 web.1     | D, [2013-06-01T20:43:48.841149 #368] DEBUG -- :   User Load (1.8ms)  SELECT "users".* FROM "users" WHERE "users"."id" = $1 LIMIT 1  [["id", 1]]
20:43:48 web.1     | D, [2013-06-01T20:43:48.841332 #368] DEBUG -- : PG::Error: ERROR:  prepared statement "a1" already exists
20:43:48 web.1     | : SELECT  "users".* FROM "users"  WHERE "users"."id" = $1 LIMIT 1
20:43:48 web.1     | ActiveRecord::StatementInvalid - PG::Error: ERROR:  prepared statement "a1" already exists
20:43:48 web.1     | : SELECT  "users".* FROM "users"  WHERE "users"."id" = $1 LIMIT 1:

@grigio and @jiehanzheng do you have a copy of those instructions, neither of those links works anymore.

The VPS.md file was moved here: https://github.com/swanson/stringer/blob/master/docs/VPS.md


Add package changelogs

Adds code to load package changelogs from the repository information. All entries are then displayed on each individual app page and the most recent changelog entry is included in the RSS feed.

LGTM

Fixes #5


Update all_platforms.py - set C6 feather to CDC on for WipperSnapper

Hey @brentru I've added a couple of build options to the C6 feather wippersnapper build target:
esp32:esp32:adafruit_feather_esp32c6:UploadSpeed=921600,CDCOnBoot=cdc,CPUFreq=160,FlashFreq=80,FlashMode=qio,PartitionScheme=min_spiffs

Dropped upload speed, added DebugLevel=info


add appendvec.scan_accounts

Problem
stop mmapping storages
Summary of Changes
add scan_accounts api, which allows use of StoredAccountMeta without lifetime issues. More callers will be updated later.
Fixes #

Codecov Report
All modified and coverable lines are covered by tests :white_check_mark:

Project coverage is 81.8%. Comparing base (f121f73) to head (04dd246).
Report is 6 commits behind head on master.

Additional details and impacted files
@@            Coverage Diff            @@
##           master     #902     +/-   ##
=========================================
- Coverage    81.9%    81.8%   -0.1%
=========================================
  Files         853      853
  Lines      231779   231834     +55
=========================================
+ Hits       189829   189869     +40
- Misses      41950    41965     +15


Table of the results sorting and missing issues

Hi,
Realbrowserlocusts is sorting the results by name, I want the results to stay as the flow of the scenario.
so how can I get the control to make them stay as the flow of the scenario?
there are 2 columns stay empty always, the columns are: Content Size (bytes) and # reqs/sec
so how can locust fill them in the table of the results
https://user-images.githubusercontent.com/4623568/71320630-eefa7900-24be-11ea-824e-53b8ca2d08bf.png
Thanks,

Hi! Is this really related to realbrowserlocusts? Sorry, there is currently no way to sort results by flow of scenario, this is a known limitation.

Missing content size is an issue with realbrowserlocusts. I dont know what the missing # reqs/s is about though...


Please set the version so it's possible to use in Yocto

We need version tags to be able to know that we use the desired version.

Thank you!


Remove nightly features

An attempt at #64
There is still some room for improvement but at least it compiles now.

I would've done the same as you. I cannot see any pitfalls there. It is possible that the current nightly has certain optimizations that are missing in stable (maybe?). What happens if you run the benchmarks in nightly with the current changes?

Ohh I just saw your new comment. Those look better but I'm amazed by how such change could affect things so drastically. Can you run cargo clippy to see if we are doing some unnecessary boxing according to the lints? Otherwise we are good to go.

Ohh I just saw your new comment. Those look better but I'm amazed by how such change could affect things so drastically. Can you run cargo clippy to see if we are doing some unnecessary boxing according to the lints? Otherwise we are good to go.

No complaints from clippy about that there was one place in step_beta_reduction where a Box<Term> argument was unnecessary but I already did fix that.


HNC: compile the plugin for Mac

Todo: add the appropriate flags to the makefile, and then update cloudbuild.yaml to rebuild the plugin for multiple OSes.

/good-first-issue

Since we want to have this, let me try to contribute this!

This is now fixed on the trunk. I'll backport to 0.5.2.

/remove-good-first-issue
/assign @adrianludwin

Fixed by #1049
/close

/reopen
/assign @tcnksm
Hi Taichi, can you please verify that HNC v0.5.2 RC1 works for you - both the YAML files but also the Darwin plugin? I don't have any ability to test on MacOS. Thanks!

Hi Taichi, can you please verify that HNC v0.5.2 RC1 works for you - both the YAML files but also the Darwin plugin? I don't have any ability to test on MacOS. Thanks!

Ok. Let me confirm those.
Darwin plugin
I've executed the following command by following the release note instruction.
$ HNC_VERSION=v0.5.2-rc1
$ HNC_PLATFORM=darwin_amd64
$ $ curl -L https://github.com/kubernetes-sigs/multi-tenancy/releases/download/hnc-{HNC_VERSION}/kubectl-hns_${HNC_PLATFORM} -o ./kubectl-hns
$ chmod +x ./kubectl-hns

And run the following command to confirm help message is shown.
$ kubectl hns

Generated YAML
I've applied to our lab GKE cluster (1.15) by following the release note instruction.
$ HNC_VERSION=v0.5.2-rc1
$ kubectl apply -f https://github.com/kubernetes-sigs/multi-tenancy/releases/download/hnc-${HNC_VERSION}/hnc-manager.yaml

And run the following commands to confirm timeoutSeconds configuration is properly configured.
$ kubectl get validatingwebhookconfiguration hnc-validating-webhook-configuration -o yaml

Great, thanks! I'll call that "confirmed" and we'll release 0.5.2 in a day or two (there's one more change I'd like to get in).
/close


Fix setting material on first object

When a usemtl line is parsed before an object has been started, a new object is created but the declared material is not set on it.

Looks about right, thanks!


[do not merge this yet] issue template with workflow

At first I thought I would just make issue template, then thought this template is needed for very specific people with specific purpose. So I added the link to generate issue template in contribution.md. I think this place makes sense, but if it is inconvenient for contributors to click on step deeper, we probably can put this on index.md as a section.
Currently it has both change (make default issue template using.githubfolder and instruction on contribution.md I will delete one of them once we decide which one is better.
Asking @rfriberg  for any thought :)

Nice!  Looking at the currently open issues, it seems like only a few would use this checklist.  So, let's use the link method for now.  But can you move it into index.html so it's a little more obvious?
We also might want to add a prompt at the top of the template for "Description of change: " or something like that.
I think this is going to be really helpful! Thanks @hanbyul-here !


[Bug] Game/Server crash when moving around

Pre-Issue Checklist

[X] I have checked that I am on the latest version of Terra.
[X] I have searched the github issue tracker for similar issues, including
closed ones.
[X] I have made sure that this is not a bug with another mod or plugin, and it
is Terra that is causing the issue.
[X] I have checked that this is an issue with Terra and not an issue with the
pack I am using.]

[X] I have attached a copy of the latest.log file
[X] I have filled out and provided all the appropriate information.

Environment

Name
Value

Terra Version
6.1.1

Platform / Platform Version
Fabric 1.14.8

Any External Plugins or Mods
N/A

Terra Packs In Use
Default

Terra Addons In Use
N/A

Issue Description
Server crashes when moving around / generating chunks on a Terra world. The issue is identical in single player. It can happen in as quick as 1 minute or up to 10-15 minutes.

Steps to reproduce

Start a new world.
Enter creative mode and fly around.
Wait for a crash.

Expected behavior
It should not be crashing (obviously).

Actual behavior
The game/server crashes.

Full stacktrace

Exception Stacktrace
---- Minecraft Crash Report ----
// I let you down. Sorry :(
Time: 25/6/22, 12:11 am
Description: Accessing LegacyRandomSource from multiple threads
java.lang.IllegalStateException: Accessing LegacyRandomSource from multiple threads
at net.minecraft.class_5798.method_33564(class_5798.java:84)
at net.minecraft.class_5820.method_43156(class_5820.java:49)
at net.minecraft.class_6566.method_43048(class_6566.java:27)
at net.minecraft.class_3218.method_18203(class_3218.java:459)
at net.minecraft.class_3215.method_14161(class_3215.java:379)
at net.minecraft.class_3215.method_12127(class_3215.java:323)
at net.minecraft.class_3218.method_18765(class_3218.java:318)
at net.minecraft.server.MinecraftServer.method_3813(MinecraftServer.java:875)
at net.minecraft.class_3176.method_3813(class_3176.java:289)
at net.minecraft.server.MinecraftServer.method_3748(MinecraftServer.java:819)
at net.minecraft.server.MinecraftServer.method_29741(MinecraftServer.java:665)
at net.minecraft.server.MinecraftServer.method_29739(MinecraftServer.java:258)
at java.base/java.lang.Thread.run(Thread.java:833)
A detailed walkthrough of the error, its code path and all known details is as follows:
-- Head --
Thread: Server thread
Stacktrace:
at net.minecraft.class_5798.method_33564(class_5798.java:84)
at net.minecraft.class_5820.method_43156(class_5820.java:49)
at net.minecraft.class_6566.method_43048(class_6566.java:27)
at net.minecraft.class_3218.method_18203(class_3218.java:459)
at net.minecraft.class_3215.method_14161(class_3215.java:379)
at net.minecraft.class_3215.method_12127(class_3215.java:323)
at net.minecraft.class_3218.method_18765(class_3218.java:318)
-- Thread dumps --
Details:
Thread dumps: Server thread:
at java.base/java.lang.Thread.getStackTrace(Thread.java:1610)
at net.minecraft.class_5798.method_39936(class_5798.java:92)
at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:179)
at java.base/java.util.Spliterators$ArraySpliterator.forEachRemaining(Spliterators.java:992)
at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509)
at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:921)
at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:682)
at net.minecraft.class_5798.method_33564(class_5798.java:82)
at net.minecraft.class_5820.method_43156(class_5820.java:49)
at net.minecraft.class_6566.method_43048(class_6566.java:27)
at net.minecraft.class_3218.method_18203(class_3218.java:459)
at net.minecraft.class_3215.method_14161(class_3215.java:379)
at net.minecraft.class_3215.method_12127(class_3215.java:323)
at net.minecraft.class_3218.method_18765(class_3218.java:318)
at net.minecraft.server.MinecraftServer.method_3813(MinecraftServer.java:875)
at net.minecraft.class_3176.method_3813(class_3176.java:289)
at net.minecraft.server.MinecraftServer.method_3748(MinecraftServer.java:819)
at net.minecraft.server.MinecraftServer.method_29741(MinecraftServer.java:665)
at net.minecraft.server.MinecraftServer.method_29739(MinecraftServer.java:258)
at java.base/java.lang.Thread.run(Thread.java:833)
Stacktrace:
at net.minecraft.class_5798.method_33564(class_5798.java:84)
at net.minecraft.class_5820.method_43156(class_5820.java:49)
at net.minecraft.class_6566.method_43048(class_6566.java:27)
at net.minecraft.class_3218.method_18203(class_3218.java:459)
at net.minecraft.class_3215.method_14161(class_3215.java:379)
at net.minecraft.class_3215.method_12127(class_3215.java:323)
at net.minecraft.class_3218.method_18765(class_3218.java:318)
at net.minecraft.server.MinecraftServer.method_3813(MinecraftServer.java:875)
at net.minecraft.class_3176.method_3813(class_3176.java:289)
at net.minecraft.server.MinecraftServer.method_3748(MinecraftServer.java:819)
at net.minecraft.server.MinecraftServer.method_29741(MinecraftServer.java:665)
at net.minecraft.server.MinecraftServer.method_29739(MinecraftServer.java:258)
at java.base/java.lang.Thread.run(Thread.java:833)
-- Affected level --
Details:
All players: 1 total; [class_3222['xSaVage_'/71, l='ServerLevel[world]', x=667.55, y=125.46, z=-3661.34]]
Chunk stats: 4313
Level dimension: minecraft:overworld
Level spawn location: World: (0,65,0), Section: (at 0,1,0 in 0,4,0; chunk contains blocks 0,-64,0 to 15,319,15), Region: (0,0; contains chunks 0,0 to 31,31, blocks 0,-64,0 to 511,319,511)
Level time: 10441 game time, 10441 day time
Level name: world
Level game mode: Game mode: survival (ID 0). Hardcore: false. Cheats: false
Level weather: Rain time: 135940 (now: false), thunder time: 105778 (now: false)
Known server brands: fabric
Level was modded: true
Level storage version: 0x04ABD - Anvil
Stacktrace:
at net.minecraft.server.MinecraftServer.method_3813(MinecraftServer.java:875)
at net.minecraft.class_3176.method_3813(class_3176.java:289)
at net.minecraft.server.MinecraftServer.method_3748(MinecraftServer.java:819)
at net.minecraft.server.MinecraftServer.method_29741(MinecraftServer.java:665)
at net.minecraft.server.MinecraftServer.method_29739(MinecraftServer.java:258)
at java.base/java.lang.Thread.run(Thread.java:833)
-- System Details --
Details:
Minecraft Version: 1.19
Minecraft Version ID: 1.19
Operating System: Windows 10 (amd64) version 10.0
Java Version: 17.0.3, Eclipse Adoptium
Java VM Version: OpenJDK 64-Bit Server VM (mixed mode, sharing), Eclipse Adoptium
Memory: 621915512 bytes (593 MiB) /<PHONE_NUMBER> bytes (3148 MiB) up to<PHONE_NUMBER> bytes (8192 MiB)
CPUs: 24
Processor Vendor: AuthenticAMD
Processor Name: AMD Ryzen 9 5900X 12-Core Processor
Identifier: AuthenticAMD Family 25 Model 33 Stepping 0
Microarchitecture: Zen 3
Frequency (GHz): 3.70
Number of physical packages: 1
Number of physical CPUs: 12
Number of logical CPUs: 24
Graphics card #0 name: NVIDIA GeForce RTX 2060 SUPER
Graphics card #0 vendor: NVIDIA (0x10de)
Graphics card #0 VRAM (MB): 4095.00
Graphics card #0 deviceId: 0x1f06
Graphics card #0 versionInfo: DriverVersion=<IP_ADDRESS>0
Memory slot #0 capacity (MB): 16384.00
Memory slot #0 clockSpeed (GHz): 3.20
Memory slot #0 type: DDR4
Memory slot #1 capacity (MB): 16384.00
Memory slot #1 clockSpeed (GHz): 3.20
Memory slot #1 type: DDR4
Virtual memory max (MB): 37796.40
Virtual memory used (MB): 24479.94
Swap memory total (MB): 5120.00
Swap memory used (MB): 0.00
JVM Flags: 1 total; -Xmx8G
Server Running: true
Player Count: 1 / 20; [class_3222['xSaVage_'/71, l='ServerLevel[world]', x=667.55, y=125.46, z=-3661.34]]
Data Packs: vanilla
World Generation: Stable
Is Modded: Definitely; Server brand changed to 'fabric'
Type: Dedicated Server (map_server.txt)

Additional details
I was playing around for about an hour when I first installed the mod, mostly staying around the spawn area before it crashed the first time. It only seems to happen when generating new chunks. I also tried it on my home server in a VM with the same result.

latest.log

Can confirm this on Paper/Purpur 1.19 too

This has been fixed on Fabric in 34b1aca556fe54f1b630b97b9b1d131746e33887. I've not been able to replicate this on Paper/Purpur, are you using the latest builds?
I'll be keeping this open until 6.2 is released and this has been figured out on Bukkit.

Yep, i'm using the latest builds.
I noticed that this was more likely to happen when there are several people on the server, with only one player connected it rarely happens

Reopening since this is still present on Bukkit servers (we are unable to fix it ourselves there)
Paper issue: PaperMC/Paper/issues/8116


The need to drain initial bundle() should be clearly documented

When using watchify programmatically, the README (and pretty much any documentation available online...I spent nearly 3 hours looking so trust me when I any) does not mention that you must call bundle() and then drain that stream before watching will actually begin.
Everything I've seen says you need this:
var browserify = require('browserify'),
    watchify = require('watchify');

var b = watchify(browserify({
    entries: ['./file.js'],
    cache: {},
    packageCache: {},
    fullPaths: true,
}));

b.on('update', function() {

	// b.bundle() ... and then save
});

But you actually need:
var browserify = require('browserify'),
    watchify = require('watchify');

var b = watchify(browserify({
    entries: ['./file.js'],
    cache: {},
    packageCache: {},
    fullPaths: true,
}));

b.on('update', function() {

	// b.bundle() ... and then save
});

// this is REQUIRED
b.bundle().on('data', function() {});

And b.bundle() alone will not suffice (although it lulls you into complacency because if you put a console log into the _watcher function in watchify it seems that chokidar is called for the file). You need to consume this bundle's stream completely before any file events will arrive.
The explanation to why this is is beyond me (does node queue events until that particular stream is finished? if so, why? isn't the whole point of the streams API that it's async?), but I think this should be clearly documented somewhere. I've spent nearly 4 hours trying to resolve this, so hopefully this will save someone else 4 hours in the future.

The 'data' listener isn't required if you write to a file:
function writer () { b.bundle().pipe(fs.createWriteStream('bundle.js'))
b.on('update', writer)
writer()

I don't quite get the use-case where you wouldn't write to a file. Do you more mean that it's not obvious that listening for 'update' only kicks in after the first bundle?

After spending so much time on this, it makes sense that watchify could only start firing updates after the first bundle (because it needs to collect dependencies) - but why not say this explicitly? You don't have to understand the internals of browserify to use it. It wouldn't be clear without knowing them that calling b.require() or b.add() doesn't do anything but append the file to an array (at the least, I assumed it would fire the 'file' event and watchify would catch this and start listening for fs events).
But now that I know that, why you have to do something with that initial bundle's stream is really non-obvious to me.
Maybe this use case isn't very common, but I think it's an easy mistake to make. I can see someone (as I did) taking the following steps:

To use watchify the docs say I need an instance of watchify and browserify - Initialize browserify and watchify
Now that I have the instance, I follow the common Node pattern of listening for an event - Listen for 'update' event

And then if they figure out that they must bundle it first, what intuition would tell them that they must do something with that initial bundle? Wouldn't your first instinct be to just add a w.bundle()?
The fact that this silently fails really compounds this problem. You can't see why (or event what's failing) just adding a w.bundle() doesn't work by adding console.log()s or using a debugger.


Log SQL command

When I've used Application Insights with ASP.NET applications, the SQL dependency logs include the actual SQL command/query that was sent to SQL Server.  When using this package for a WCF service I see SQL dependencies being logged, but the command property only contains the server and database my app is hitting and not the actual SQL command/query.  I get timing and frequency data, but that information isn't helpful without knowing what the source was. Is there a way to enable this or is this something that needs developed for this package?

WCF nuget package is responsible only for request  and exception collection which is specific for WCF. Dependency collection is done the same way as in Web and comes with Dependency nuget package. Command name collection depends on whether you use StatusMonitor or not.
Some details here: https://github.com/Microsoft/ApplicationInsights-Announcements/issues/9

My WCF service does reference Microsoft.ApplicationInsights.DependencyCollector and it targets .NET 4.6.1, so I thought the CommandText should be logged automatically from my experience in ASP.NET applications. I thought my issue had something to do with using this package and being a WCF service but it must be something else.  I'll do some more research and direct further questions to the announcement thread you referenced for the Microsoft.ApplicationInsights.DependencyCollector package.

Wcf nuget package depends on Application Insights Windows Server nuget. Application Insights Windows Server depends on Microsoft.ApplicationInsights.DependencyCollector . The last one automatically collects dependencies for 4.6. But command text is available only if you also have StatusMonitor. You do not have to onboard your application using StatusMonitor. You just need to

host your application in IIS (we need the process to be w3wp.exe)
install status monitor on the same box with your application
restart IIS after StatusMonitor is installed. (StatusMonitor does not have to be started after that)

StatusMonitor brings in a profiler so we can collect more information. Without it collection is based on .Net framework instrumentation which does not give us command text.


Add index entries to multiset connection_indexes_ in linear fashion

...  to avoid seek and shuffeling of data when accessed from multiple threads
On a bag with 300k index entries this reduces index parsing from 4mins to 1s which is then on-par with rosbag's initial implementation.
fyi: @betwo

Thanks for the ping, looks great!


Add OCaml as a programming language

I'm submitting this on the web, didn't clone the repo anywhere yet. Haven't added the image referenced; apologies — will try and remember to come back to this, unless somebody else wants to source an image and bump the PR 😓

Closing because this change is already in main (https://github.com/anze3db/fedidevs/commit/35a62ae29f99c2b3717ec9a522c7c74061cae96b). Thank you again!