[ 
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]

Reply via email to