atlasdb icon indicating copy to clipboard operation
atlasdb copied to clipboard

[Transactions Table Sweep] Part 4: Futile Timestamps Store

Open jeremyk-91 opened this issue 2 years ago • 0 comments

General

Before this PR: There doesn't exist storage for the set A, which I call the futile timestamps store

After this PR:

==COMMIT_MSG== There exists a store for A based on tickets encoding ==COMMIT_MSG==

Priority: P2

Concerns / possible downsides (what feedback would you like?):

  • Check the treatment of this table for special table sets (in particular, I claim it is hidden but not atomic and not serial-consistency, but is that okay?)
  • Do the constant values for the TicketsCellEncodingStrategy make sense? These were picked from the RFC I think, and there wasn't dissent at the time, but do we have any new reason to believe these are good or bad?

Is documentation needed?: No.

Compatibility

~Does this PR create any API breaks (e.g. at the Java or HTTP layers) - if so, do we have compatibility?:~

~Does this PR change the persisted format of any data - if so, do we have forward and backward compatibility?:~

~The code in this PR may be part of a blue-green deploy. Can upgrades from previous versions safely coexist? (Consider restarts of blue or green nodes.):~

~Does this PR rely on statements being true about other products at a deployment - if so, do we have correct product dependencies on these products (or other ways of verifying that these statements are true)?:~

~Does this PR need a schema migration?~

Testing and Correctness

~What, if any, assumptions are made about the current state of the world? If they change over time, how will we find out?:~

What was existing testing like? What have you done to improve it?: No tests existed for this new concept - they are added as part of this PR.

~If this PR contains complex concurrent or asynchronous code, is it correct? The onus is on the PR writer to demonstrate this.:~

~If this PR involves acquiring locks or other shared resources, how do we ensure that these are always released?:~

Execution

How would I tell this PR works in production? (Metrics, logs, etc.): Not yet: this isn't on a live production code path yet.

Has the safety of all log arguments been decided correctly?: No new logging-args.

Will this change significantly affect our spending on metrics or logs?: No

How would I tell that this PR does not work in production? (monitors, etc.): We'd see broader problems with TTS, or with transactions4.

If this PR does not work as expected, how do I fix that state? Would rollback be straightforward?: Just rollback

If the above plan is more complex than “recall and rollback”, please tag the support PoC here (if it is the end of the week, tag both the current and next PoC):

Scale

Would this PR be expected to pose a risk at scale? Think of the shopping product at our largest stack.: Not in its current form, no.

Would this PR be expected to perform a large number of database calls, and/or expensive database calls (e.g., row range scans, concurrent CAS)?: There are some writes, though these should be cheap ones.

Would this PR ever, with time and scale, become the wrong thing to do - and if so, how would we know that we need to do something differently?: If A becomes unreadable this would be bad, yes. Though this would be very obvious in that we'd see transactions4 be unable to retain enough state in memory.

Development Process

Where should we start reviewing?: FutileTimestampStore

~If this PR is in excess of 500 lines excluding versions lock-files, why does it not make sense to split it?:~

Please tag any other people who should be aware of this PR: @jeremyk-91 @sverma30 @raiju

jeremyk-91 avatar Jul 18 '22 20:07 jeremyk-91