hbase-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Sergey Shelukhin (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (HBASE-8721) fix for bug that delete can mask puts that happened after the delete was entered
Date Tue, 11 Jun 2013 22:02:21 GMT

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

Sergey Shelukhin commented on HBASE-8721:

bq. But I think the inconsistency issue's root cause is the arguable behaviour that delete
can mask puts that happened after the delete. A more intuitive and more reasonable behaviour
is that a delete can only mask puts happened before it, and has no impact on puts happened
after it.

This would be inconsistent with puts happening after puts being masked by earlier puts, depending
on timestamp; as in my example above. Timestamp's express purpose is the version, by default
if you don't set it, it will be taken from server time. If you are setting explicit timestamps,
you are explicitly telling HBase that it should withhold judgement about versions because
you know what happens logically before and after in your system. If you are using timestamp
otherwise for some convenience, you are misusing it. 
If this version semantic is removed, timestamp becomes simply a long tucked unto a KeyValue
and should be removed, after all, we don't have a string or a boolean also added to KeyValue
so that people could use them for their purposes. HBase already has columns and column families
to do that. Timestamp has very explicit semantics and purpose right now. If you want time-based
behavior then don't set timestamps and HBase will use time-based behavior.

> fix for bug that delete can mask puts that happened after the delete was entered
> --------------------------------------------------------------------------------
>                 Key: HBASE-8721
>                 URL: https://issues.apache.org/jira/browse/HBASE-8721
>             Project: HBase
>          Issue Type: Bug
>          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
> "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

View raw message