[
https://issues.apache.org/jira/browse/CASSANDRA-20014?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17896968#comment-17896968
]
Chris Lohfink commented on CASSANDRA-20014:
-------------------------------------------
My thought was also more along lines of 2 different coordinators
T1: Client1 sends {color:#4c9aff}A=1{color} to Node1
T2: Client1 sends a {color:#de350b}Tombstone[A]{color} to Node2
T3: Node2's nowInSec = 101 in tombstone DeletionTime.
{color:#de350b}Tombstone[A]@101{color} is saved (doesn't matter if replicas get
it or not for this case)
T4: Node1 stores a hint at 105 for Node2 for {color:#4c9aff}A=1@103{color},
using its local time 103 (due to your patch, which reduces this from 105 to
103)
T5: gcgs+101 passes, and node2 purges {color:#de350b}Tombstone[A]@101{color}.
This happens at Node1 local time gcgs+101
T6: Node1 sends {color:#4c9aff}A=1@103{color} hint to node2, which is
problematic because it arrives after gcgs+103 and wasn’t TTL’d yet.
Your patch definitely helps and decreases window and I am +1 on it. Just
thinking that there still (maybe?) are cases HOWEVER, we don't really make
linearizable guarantees so I think this is technically Ok? as its just the
writes occurring out of order kinda. Weird thing is more that depending on
nodes in query you would get different results.
> Discard hints based on write time, not timeout time
> ---------------------------------------------------
>
> Key: CASSANDRA-20014
> URL: https://issues.apache.org/jira/browse/CASSANDRA-20014
> Project: Cassandra
> Issue Type: Bug
> Components: Consistency/Hints
> Reporter: Blake Eggleston
> Assignee: Matt Byrd
> Priority: Normal
>
> Hints are created after a write timeout are created with the timeout time as
> the hint creation time. In the case of slow hint delivery, this can create a
> window of time where a write is applied after gcgs would have elapsed for
> tombstones written after the original write, and the tombstone has been
> purged, causing data resurrection. We should use the time the client request
> thread started working on the request as the hint creation time.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]