Comments (2)
It's pretty hard to produce a real error, but I roughly looked at the code, and I found:
- Panamax just serves static files, so new additions won't affect anything existing.
- Panamax syncs in 2 stages, index first and then crates, the index updating is merely a git pull and ff checkout, it should be safe in almost every case.
- The race condition exists after index updating and before all crates are downloaded. When new crates are being downloaded, it's possible that the client gets 404 or even half-downloaded files because the index already got updated hence the client assumes the crate exists on the server side, but I guess re-run
cargo
can resolve most problems.
Given the situation I guess the fix won't be very straightforward, but otho the issue is not very significant either.
I'm thinking of combining the serving and syncing functions into one process, so they can talk to each other and lock/pause the other one when needed, it could be the simplest way.
from panamax.
Related Issues (20)
- Adjust the vendor directories being tracked (over time) HOT 2
- A way to serve the documentation for crates.io?
- Please add selective syncing HOT 4
- Unable to complete downloading crates HOT 3
- Crate whitelisting HOT 1
- Cargo vendor failed using mirror repository
- could not resolve host:panamax.internal HOT 6
- [feature request] panamax publish my-mirror
- on Docker - error creating server listener: Address family not supported by protocol HOT 1
- not a git repository error
- how to masquerade as crates.io HOT 1
- [Enquiry] How big the full mirror is? HOT 3
- How do I download WASI and WASM targets ?
- [BUG] inconsistent state may occur HOT 4
- Mirroring Vendored Crates HOT 1
- No config.json HOT 5
- Unable to `cargo search` against panamax mirror HOT 2
- [Question] Use S3/minio to host /mirror? HOT 3
- Request: release a new version containing the fix for filtering unix platforms 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 panamax.