The previous system allowed the same RID to be fetched from multiple nodes concurrently, which caused issues, especially when cloning. Worker code assumes that there is only one fetch per repository going on at any given time. This change ensures that. We keep a global fetch queue, instead of having a queue per session. We also enqueue fetches if a session is at capacity. Finally, we allow multiple fetch requests to receive results for the same fetch. |
||
|---|---|---|
| .. | ||
| src | ||
| Cargo.toml | ||
| Dockerfile | ||