From: Taylor R Campbell <git@campbell.mumble.net>
To: Konstantin Ryabitsev <konstantin@linuxfoundation.org>
Cc: "brian m. carlson" <sandals@crustytoothpaste.net>,
"Matěj Cepl" <mcepl@cepl.eu>,
git@vger.kernel.org
Subject: Re: Synchronous replication on push
Date: Mon, 4 Nov 2024 15:50:40 +0000 [thread overview]
Message-ID: <20241104155041.235E260AB3@jupiter.mumble.net> (raw)
In-Reply-To: <20241104-real-marmoset-of-success-9a6c8e@meerkat> (konstantin@linuxfoundation.org)
> Date: Mon, 4 Nov 2024 09:40:06 -0500
> From: Konstantin Ryabitsev <konstantin@linuxfoundation.org>
>
> Alternatively, you can take a look at grokmirror, which is what kernel.org
> uses:
> https://pypi.org/project/grokmirror/
>
> It's pull-based instead of push-based, for several reasons:
>
> 1. We replicate to multiple worldwide frontends, and we expect that some of
> them may be unreachable at the time when we attempt a push
> 2. This allows us to propagate repository deletes
> 3. This allows us to propagate details like descriptions and authors
>
> Grokmirror also has a listener daemon that can trigger a pull, so it's
> possible to have near-instantaneous replication by notifying the remote node
> that a repository has been updated and should be pulled.
Thanks, that looks useful, but it's not quite what I'm looking for.
Part of the goal is essentially the same (qualitative) types of
service guarantee that Github advertises:[*] once the user's `git
push' command has succeeded with nonzero exit status, the objects and
ref updates have been written to multiple backing stores so it would
take a failure of a quorum of those backing stores to lose the data.
In particular, a backend may reject an update, and when this happens
(in the multi-backend case, by enough backends that no quorum is
reached), the user who ran `git push' needs to know that it failed so
they don't, e.g., delete their branch, run git gc, and go on their
merry way having silently lost data.
[*] https://github.blog/engineering/infrastructure/stretching-spokes/
next prev parent reply other threads:[~2024-11-04 15:50 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-11-02 2:06 Synchronous replication on push Taylor R Campbell
2024-11-02 10:09 ` Matěj Cepl
2024-11-02 13:35 ` Taylor R Campbell
2024-11-02 14:49 ` brian m. carlson
2024-11-04 13:35 ` Taylor R Campbell
2024-11-04 14:40 ` Konstantin Ryabitsev
2024-11-04 15:50 ` Taylor R Campbell [this message]
2024-11-04 22:36 ` brian m. carlson
2024-11-04 23:47 ` Jeff King
2024-11-05 1:34 ` Taylor R Campbell
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20241104155041.235E260AB3@jupiter.mumble.net \
--to=git@campbell.mumble.net \
--cc=git@vger.kernel.org \
--cc=konstantin@linuxfoundation.org \
--cc=mcepl@cepl.eu \
--cc=sandals@crustytoothpaste.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).