-
Notifications
You must be signed in to change notification settings - Fork 212
Implement index update rework #785
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Comments
Some preliminary things can be done without switching completely:
|
Yes there is, if we update the hash of the last visited commit in the same database transaction as adding crates to the queue we'd get the same level of consistency we have today. |
I don't think this makes sense in the context on web-hooks because we might not receive the hooks in the order the crates were released. If crates A and B release and we get the webhook for B before A, updating the commit to point to B would mean we could skip A. |
The webhook is just a trigger "check what crates were released between last commit and now", it will just call the exact same update code as the time based trigger does. |
The future container-based setup for docs.rs will have:
which complicates the webhook setup, since the webhook is received by another physical server. |
some notes [from this zulip thread](#t-crates-io > trigger docs.rs rebuilds from crates.io), cc @Mark-Simulacrum @Turbo87 if we want to drop the registry watcher from here we could go with two approaches: to keep in mindwe're not only talking about new releases. All event types we handle are:
For the new/delete & and yank/unyank events order is important. queue between crates.io & docs.rsWe would use a queue system that guarantees order (SQS FIFO?). crates.io would enqueue all changes when it gets them, in order. Docs.rs would then, one by one, handle these. Thinking about scaling, the order is only important on a crate-level, between crates it doesn't matter. The single-queue design might be limited then. simple "ping" for all events, docs.rs fetches sparse index.
There might be race conditions, when we are getting a new ping while we are handling an old one, for the same crate. |
Implementation work needs to be done to add the things proposed in this docs.rs RFC.
The text was updated successfully, but these errors were encountered: