Comments (3)
I also had this issue of having automerge-repo
processes not stopping with NodeJS. For each Repo
I have created, I need to do the following to close down all intervals & sockets:
// Create your `Repo`
const adapter = new BrowserWebSocketClientAdapter(`ws://localhost:${PORT}`);
const repo = new Repo({
network: [ adapter ],
// ...
})
// I disconnect `Repo` from the server:
adapter.disconnect()
adapter.peerId = undefined; // if not done, it will reconnect automatically.
adapter.socket?.close();
// stop each handle
Object.values(repo.handles).forEach((handle) => {
// @ts-ignore `stop` has been added manually through a patch
handle.stop();
});
For context, here's DocHandle
's stop
method that I had to add through a patch:
stop() {
this.#machine.stop();
}
Provided guidance and strong PoV on the right technical strategy, very happy to contribute the changes needed.
from automerge-repo.
@dmaretskyi @pvh it would be great to have your insights on this.
from automerge-repo.
ah yeah, this is just unfinished work i haven't felt enough pain from to fix yet.
a repo.stop() would be a good short-term workaround but really we probably also want something like repo.allSynced()
or something as well.
broadly speaking the design here is something along the lines of "for short-lived processes there should be a way to gracefully exit when a task is done" and i think the "when a task is done" is going to be the more involved part.
from automerge-repo.
Related Issues (20)
- NodeFSStorageAdapter lock exception on large number of updates. HOT 2
- An unavailable document may just not be found yet
- WebSocket Ready flag should only be set after Open event HOT 2
- Get latest changes as a document instead of a binary HOT 5
- Virus detected in github head! Windows Defender Trojan:Script/Wacatac.H!ml HOT 4
- WebSocket client disconnection HOT 1
- Access to RawString through automerge-repo? HOT 1
- pnpm run dev, pnpm run dev:demo not working HOT 3
- Error: recursive use of an object detected which would lead to unsafe aliasing in rust HOT 4
- network sync protocol leaks documentIds to peers HOT 2
- [Svelte] Counter works but Text doesn't HOT 2
- On Peers in Automerge-Repo: Design HOT 2
- When a change event is emitted by the handle the `handle.docSync()` is still the old value HOT 5
- Large enough messages block the main thread for a long time, which can lead to socket timeouts on blocked clients HOT 3
- svelte: provide a way to await the document becoming ready HOT 1
- Repo and WebSocket provider send two responses for a "request" - the first unavailable, the second a sync HOT 1
- Share policy prevents fetching document from sync server
- repo.clone error message suggests using "handle.waitForReady", which doesn't exist
- Add a way to properly close and cleanup automerge-repo HOT 1
- Inactive `DocHandle`s are not evicted from `handleCache`
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 automerge-repo.