Remix.run Logo
1a527dd5 4 days ago

Be still my beating heart. I have lived to see this day.

Genuinely, we've wanted this for ages and we got half way there with strong consistency.

ncruces 4 days ago | parent | next [-]

Might finally be possible to do this on S3: https://pkg.go.dev/github.com/ncruces/go-gcp/gmutex

phrotoma 3 days ago | parent [-]

Huh. Does this mean that the AWS terraform provider could implement state locking without the need for a DDB table the way the GCP provider does?

arianvanp 3 days ago | parent [-]

Correct

phrotoma 2 days ago | parent [-]

Holy crap that is fantastic!

paulddraper 4 days ago | parent | prev [-]

So....given CAP, which one did they give up

moralestapia 4 days ago | parent | next [-]

A tiny bit of availability, unnoticeable at web scale.

nimih 3 days ago | parent | prev | next [-]

Based on my general experience with S3, they jettisoned A years ago (or maybe never had it).

the_arun 4 days ago | parent | prev | next [-]

I thought they have implemented Optimistic locking now to coordinate concurrent writes. How does it change anything in CAP?

paulddraper 3 days ago | parent [-]

The C stands for Consistency.

johnrob 4 days ago | parent | prev [-]

I’d wager that the algorithm is slightly eager to throw a consistency error if it’s unable to verify across partitions. Since the caller is naturally ready for this error, it’s likely not a problem. So in short it’s the P :)

alanyilunli 4 days ago | parent | next [-]

Shouldn't that be the A then? Since the network partition is still there but availability is non-guaranteed.

johnrob 4 days ago | parent [-]

Yes, definitely. Good point (I was knee jerk assuming the A is always chosen and the real “choice” is between C and P).

btown 4 days ago | parent | next [-]

https://tqdev.com/2024-the-p-in-cap-is-for-performance is a really interesting take on this as a response to https://blog.dtornow.com/the-cap-theorem.-the-bad-the-bad-th... - essentially, the only way to get CA is if you're willing to say that every request will succeed eventually, but it might take an unbounded amount of time for partitions to heal, and you have to be willing to wait indefinitely for that to happen. Which can indeed make sense for asynchronous messaging, but not for real-time applications as we think about them in the modern day. In practice, if you're talking about CAP for high-performance systems, you're choosing either CP or AP.

rhaen 4 days ago | parent | prev [-]

Well, P isn't really much of a choice, I don't think you can opt out of acts of god.

fwip 4 days ago | parent [-]

You can design to minimize P, though. For instance, if you have all the services running on the same physical box, and make people enter the room to use it instead of over the Internet, "partition" becomes much less likely. (This example is a bit silly.)

But you're right, if you take a broad view of P, the choice is really between consistency and availability.

paulddraper a day ago | parent [-]

Yes. P is kinda fundamental to your setup.

For example, running S3 locally or not.

4 days ago | parent | prev [-]
[deleted]