> As the repair is only guaranteed for a majority of replicas, I assume I
can discover somewhere which replicas are up to date like this?

I’m not quite sure what you mean. Do you mean which nodes have participated in 
a paxos repair? This information isn’t maintained, but anyway would not imply 
the node is up to date. A node participating in a paxos repair ensures _a 
majority of other nodes_ are up-to-date with _its_ knowledge, give or take. By 
performing this on a majority of nodes, we ensure a majority of replicas has a 
lower bound on the knowledge of a majority, and we effectively invalidate any 
in-progress operations on any minority that did not participate.

> Do I understand correctly, that if I take a backup from such a replica,
it is guaranteed to contain the full state up to a certain timestamp t?

No, you would need to also perform regular repair afterwards. If you perform a 
regular repair, by default it will now be preceded by a paxos repair (which is 
typically very quick), so this will in fact hold, but paxos repair won’t 
enforce it.

> Does the replica also end up with a complete and continuous log of all
writes until t? If not, does a merge of all logs in the majority contain a
complete log?

A majority. There is also no log that gets replicated for LWTs in Cassandra. 
There is only ever at most one transaction that is in flight (and that may 
complete) and whose result has not been persisted to some majority, for any 
key. Paxos repair + repair means the result of the implied log are replicated 
to all participants.

From: Henrik Ingo <henrik.i...@datastax.com>
Date: Saturday, 4 December 2021 at 23:12
To: dev@cassandra.apache.org <dev@cassandra.apache.org>
Subject: Paxos repairs in CEP-14
Could someone elaborate on this section

****

*Paxos Repair*
We will introduce a new repair mechanism, that can be run with or without
regular repair. This mechanism will:

   - Track, per-replica, transactions that have been witnessed as initiated
   but have not been seen to complete
   - For a majority of replicas complete (either by invalidating,
   completing, or witnessing something newer) all operations they have
   witnessed as incomplete prior to the intiation of repair
   - Globally invalidate all promises issued prior to the most recent paxos
   repair

****

Specific questions:

Assuming a table only using these LWT:s

* As the repair is only guaranteed for a majority of replicas, I assume I
can discover somewhere which replicas are up to date like this?

* Do I understand correctly, that if I take a backup from such a replica,
it is guaranteed to contain the full state up to a certain timestamp t?
(And in addition may or may not contain mutations higher than t, which of
course could overwrite the value the same key had at t.)

* Does the replica also end up with a complete and continuous log of all
writes until t? If not, does a merge of all logs in the majority contain a
complete log? In particular, I'm trying to parse the significance of "or
witnessing something newer"? (Use case for this last question could be
point in time restore, aka continuous backup, or also streaming writes to a
downstream system.)

henrik
--

Henrik Ingo

+358 40 569 7354 <358405697354>

[image: Visit us online.] <https://www.datastax.com/>  [image: Visit us on
Twitter.] <https://twitter.com/DataStaxEng>  [image: Visit us on YouTube.]
<https://urldefense.proofpoint.com/v2/url?u=https-3A__www.youtube.com_channel_UCqA6zOSMpQ55vvguq4Y0jAg&d=DwMFaQ&c=adz96Xi0w1RHqtPMowiL2g&r=IFj3MdIKYLLXIUhYdUGB0cTzTlxyCb7_VUmICBaYilU&m=bmIfaie9O3fWJAu6lESvWj3HajV4VFwgwgVuKmxKZmE&s=16sY48_kvIb7sRQORknZrr3V8iLTfemFKbMVNZhdwgw&e=>
  [image: Visit my LinkedIn profile.] <https://www.linkedin.com/in/heingo/>

Reply via email to