Document fully_consistent nuances on CockroachDB#529
Open
ivanauth wants to merge 1 commit intoauthzed:mainfrom
Open
Document fully_consistent nuances on CockroachDB#529ivanauth wants to merge 1 commit intoauthzed:mainfrom
ivanauth wants to merge 1 commit intoauthzed:mainfrom
Conversation
miparnisari
reviewed
Mar 29, 2026
| </Callout> | ||
|
|
||
| <Callout type="warning"> | ||
| **CockroachDB users:** `fully_consistent` does not guarantee read-after-write consistency on CockroachDB. |
Contributor
There was a problem hiding this comment.
line 103 ends with "If you need read-after-write consistency, consider using a [ZedToken]"
can we merge this callout with that one?
miparnisari
reviewed
Mar 29, 2026
Comment on lines
+112
to
+114
| SpiceDB selects a revision using CockroachDB's `cluster_logical_timestamp()` at request time. | ||
| Because CockroachDB is a distributed database, this timestamp can differ from other nodes by up to the cluster's configured [`max_offset`][max-offset] (default: 500ms). | ||
| If the node handling the read picks a timestamp older than the one assigned to a recent write on a different node, the read will not see that write even though the data has been committed. |
Contributor
There was a problem hiding this comment.
Suggested change
| SpiceDB selects a revision using CockroachDB's `cluster_logical_timestamp()` at request time. | |
| Because CockroachDB is a distributed database, this timestamp can differ from other nodes by up to the cluster's configured [`max_offset`][max-offset] (default: 500ms). | |
| If the node handling the read picks a timestamp older than the one assigned to a recent write on a different node, the read will not see that write even though the data has been committed. | |
| At request time, SpiceDB directs the query towards one node in the CockroachDB cluster, and then runs [`cluster_logical_timestamp()`](https://www.cockroachlabs.com/docs/stable/functions-and-operators#system-info-functions). | |
| However, because CockroachDB is a distributed database, this timestamp can differ from other nodes by up to the cluster's configured [`max_offset`][max-offset] (default: 500ms). | |
| If the node handling the read picks a timestamp older than the one assigned to a recent write on a different node, the read will not see that write even though the data has been committed. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes #525
Adds callouts to the consistency and CockroachDB datastore pages
explaining that
fully_consistentdoes not guarantee read-after-writeon CockroachDB due to
cluster_logical_timestamp()clock skew acrossnodes.