Comments (2)
Hi! Glad to see madsim is being used in Xline.
It is intended to forbid creating system thread in the simulation in order to prevent non-determinism.
We have encountered a similar issue, where a third-party library, moka, created a system thread in the background for cache invalidation. Our solution was to replace it by a BTreeMap in the simulation.
Generally, I would suggest replace third-party libraries by mocks in the simulation, so that we could avoid any potential uncertainty. However, if this library is critical to functionality and you believe the system thread it creates won't break the determinism, I can introduce a new API to temporarily disable this check.
What do you think?
from madsim.
Thanks for the suggestions! That makes sense. I'll try replacing the rocksdb with a mock one in the simulation.
from madsim.
Related Issues (20)
- include original crate's version HOT 11
- docs: more detailed explanation about how and why to patch deps
- feature: support timeout in tonic requests HOT 2
- feature request: support `btree_map` api for Builder
- Enhancing Determinism by Forking Processes
- Improving behaviour to failed socket address parsing
- wrong `tokio::runtime::Runtime::enter` implementation HOT 4
- panic if spawn when task drop HOT 2
- patch `tokio_stream` HOT 1
- Implement `tokio::task::AbortHandle::is_finished` HOT 2
- Tags are missing after release `v0.2.15` HOT 1
- `tokio::time::sleep(Duration::ZERO)` is not simulated properly HOT 1
- Creating multiple runtimes with the same seed yields different random values HOT 2
- Check the result of the function in `check_determinism` HOT 1
- unaligned pointer for rand HOT 1
- Allow toggling off the new-thread-spawned detector HOT 2
- support `tokio::runtime::Handle`
- How to retrieve madsim seed when the test case was canceled by cargo-nextest due to timeout HOT 1
- How to add support for a few more services like AWS DynamoDB and Google Cloud Spanner? HOT 2
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 madsim.