Comments (7)
I found and fixed one root cause of this error in 0.15.3 (related to auto-clearing of ref fields when an entity is deleted). Please give it a try and let me know if it works for you. Thanks!
from becsy.
Hey Alex, thanks for the kind words and sorry about the bug. For context, log counting is used by the stats subsystem, which is not mission-critical. I'd still expect the exception to crash the process, though, since it can prevent some other work that follow the calls from completing -- if that's not happening I'd take a look at your exception propagation logic when calling execute
.
You can work around the issue by using the perf
build, which excludes the stats subsystem altogether.
To debug this, we'll need more information. I pushed v0.15.1, with improved error messages that will at least tell us which log this is happening for -- it should cut down the search space a lot. Could you please rebuild with the new version and let me know when you see the error again? Thanks!
from becsy.
Thanks for the quick response and the context about the stats subsystem!
I've bumped becsy to v0.15.1 and will get back to you asap with any additional information
from becsy.
Okay back with an improved error message:
Should commit log maxWritesPerFrame before counting. Please report a bug
Also, I have confirmed it should be running in perf mode when we see this FYI (using @lastolivegames/becsy/perf
).. may be possible that the dependency alias isn't being applied properly though when I build
EDIT: I've confirmed we are using the perf build now. Thank you
from becsy.
Yeah, the perf build couldn't possibly produce that error -- the error message isn't even present in the distro file.
This identifies the write log as the culprit. A few more questions to eliminate some scenarios:
- Does this error happen at startup, in operation, or at finalization (if you use
world.terminate
)? - Do you use custom executors, or just call
world.execute
? - Is it possible you're discarding / ignoring any exceptions emitted while executing? (For example, calling async functions without awaiting the promise.)
from becsy.
I also released 0.15.2, which fixes some internal spots where Becsy was failing to properly block on nominally async functions (though their implementation was in fact synchronous). This could've discarded some exceptions depending on environment and exception capture strategies. I doubt it's the cause of the issue here but who knows...
from becsy.
That's awesome, thank you! Bumping to 0.15.3 now.
-
Does this error happen at startup, in operation, or at finalization (if you use world.terminate)?
The error was certainly happening on execute. To be honest I'm not totally sure at what time though. As I mentioned it's running on a remote machine where I don't have a lot of visibility into the problem. So far it's actually yet to cause any problems locally, was just generating noise! -
Do you use custom executors, or just call world.execute?
Just world.execute. I was actually unaware of the custom executors features, that's neat. -
Is it possible you're discarding / ignoring any exceptions emitted while executing? (For example, calling async functions without awaiting the promise.)
Absolutely, after your message I've tried to track down the main places where this could be happening (there's a few of them though).
from becsy.
Related Issues (20)
- Question: Tracking / accessing entities by their id HOT 5
- Attach returns system box instead of system HOT 3
- Stricter types for `Query` and `QueryBuilder`? HOT 8
- System support for deferring work to be done on next execute HOT 3
- How to use dictionary and other reference type in the component? HOT 1
- Graph.findCycles() does not always find cycles HOT 2
- Terminating the world and creating a new one with the same components results in an error HOT 5
- can this be use in Phaser 3? HOT 3
- Ability to run a `dispose` method on systems in a system group HOT 3
- Command pattern for Systems HOT 7
- World.terminate() never resolves HOT 3
- ChainAlert: npm package release (0.13.1) has no matching tag in this repo
- Cannot read properties of undefined (reading 'trackedWrites') HOT 4
- Ability to refer to entities by identifiers stored in an external data structure HOT 6
- Is there an API to see if Becsy is currently running in accessRecentlyDeletedData mode? HOT 3
- Injecting dependencies into Systems HOT 2
- Example demo, teypscript version reports error, cannot find attribute `track` on `QueryBuilder` HOT 1
- why use sparse set rather than archetype? HOT 1
- Hello, are you still updating? HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from becsy.