[ 
https://issues.apache.org/jira/browse/HBASE-8721?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13690464#comment-13690464
 ] 

Andrew Purtell commented on HBASE-8721:
---------------------------------------

[[email protected]] Did that once before. Looking at votes, we have: Lars 
(-1), Sergey (-0), me (-0). If we tease this apart, we get HBASE-8770, where 
looks like we have a way forward on addressing this part:

Feng:
{quote}
User can always read the put by 4>. It's more natural and intuitive:
1> put a kv (timestamp = T0), and flush;
2> delete that kv using a DeleteColumn type kv with timestamp T0 (or any 
timestamp >= T0), and flush;
3> a major compact occurs [or not];
4> put that kv again (timestamp = T0);
5> read that kv;
===>
a) if a major compact occurs at step 3>, then step 5> will get the put written 
at step 4>
b) if no major compact occurs at step 3>, then step 5> get nothing
{quote}

But for the other part of the argument, expressed by Hangjun:

{quote}
tiemstamp is a logical version, which is often the same as the 
"happened-before" relationship inside hbase, but not necessarily have to be. 
User could assign any semantics to it since it has been exposed and user could 
set it explicitly. [...] Conceptually decoupling the timestamp and the 
"happened-before" relationship inside hbase should give users more flexibility 
to decide how to use it.
{quote}

the discussion consensus reads to me as: users submitting their own timestamps 
have to actually produce happened-before relationships by issuing ops with 
_different_ timestamps, and not rely on HBase to also remember op arrival order 
internally for breaking ties when the ops have the same logical "time". 

We have a standing firm -1 on changing that part. What do you think? Would you 
+1 it? Under what circumstances would Lars change his -1 to a +1? I don't see 
that but don't presume to speak for him.

                
> Deletes can mask puts that happen after the delete
> --------------------------------------------------
>
>                 Key: HBASE-8721
>                 URL: https://issues.apache.org/jira/browse/HBASE-8721
>             Project: HBase
>          Issue Type: Improvement
>          Components: regionserver
>            Reporter: Feng Honghua
>         Attachments: HBASE-8721-0.94-V0.patch
>
>
> this fix aims for bug mentioned in http://hbase.apache.org/book.html 5.8.2.1:
> "Deletes mask puts, even puts that happened after the delete was entered. 
> Remember that a delete writes a tombstone, which only disappears after then 
> next major compaction has run. Suppose you do a delete of everything <= T. 
> After this you do a new put with a timestamp <= T. This put, even if it 
> happened after the delete, will be masked by the delete tombstone. Performing 
> the put will not fail, but when you do a get you will notice the put did have 
> no effect. It will start working again after the major compaction has run. 
> These issues should not be a problem if you use always-increasing versions 
> for new puts to a row. But they can occur even if you do not care about time: 
> just do delete and put immediately after each other, and there is some chance 
> they happen within the same millisecond."

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to