You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@hbase.apache.org by "stack (JIRA)" <ji...@apache.org> on 2013/08/12 02:22:48 UTC

[jira] [Commented] (HBASE-8741) Scope sequenceid to the region rather than regionserver (WAS: Mutations on Regions in recovery mode might have same sequenceIDs)

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

stack commented on HBASE-8741:
------------------------------

New patch does not seem to be up on rb (easier to review on rb).  Any chance of someone else reviewing this?

What does it mean 'the WAL is going away'?  See below:

+        if (!wal.startCacheFlush(this.getRegionInfo().getEncodedNameAsBytes())) {
           status.setStatus("Flush will not be started for [" + this.getRegionInfo().getEncodedName()
-              + "] - WAL is going away");
-          return false;
+            + "] - WAL is going away");

Why the bad formatting?

+      if (t1 == 0 || t2 == 0) {
+     // one of them doesn't have a valid timestamp.
+        // fall back on the original path compare method.

It makes your patch look bad.

The log file comparator looks fragile expecting the ts on the end.  What if the format gets changed (it will happen elsewhere in this file -- should be a comment at least).

I am 1/4 way through.  More comments to follow.



                
> Scope sequenceid to the region rather than regionserver (WAS: Mutations on Regions in recovery mode might have same sequenceIDs)
> --------------------------------------------------------------------------------------------------------------------------------
>
>                 Key: HBASE-8741
>                 URL: https://issues.apache.org/jira/browse/HBASE-8741
>             Project: HBase
>          Issue Type: Bug
>          Components: MTTR
>    Affects Versions: 0.95.1
>            Reporter: Himanshu Vashishtha
>            Assignee: Himanshu Vashishtha
>             Fix For: 0.98.0, 0.95.2
>
>         Attachments: HBASE-8741-v0.patch, HBASE-8741-v2.patch, HBASE-8741-v3.patch, HBASE-8741-v4-again.patch, HBASE-8741-v4-again.patch, HBASE-8741-v4.patch, HBASE-8741-v5-again.patch, HBASE-8741-v5.patch
>
>
> Currently, when opening a region, we find the maximum sequence ID from all its HFiles and then set the LogSequenceId of the log (in case the later is at a small value). This works good in recovered.edits case as we are not writing to the region until we have replayed all of its previous edits. 
> With distributed log replay, if we want to enable writes while a region is under recovery, we need to make sure that the logSequenceId > maximum logSequenceId of the old regionserver. Otherwise, we might have a situation where new edits have same (or smaller) sequenceIds. 
> We can store region level information in the WALTrailer, than this scenario could be avoided by:
> a) reading the trailer of the "last completed" file, i.e., last wal file which has a trailer and,
> b) completely reading the last wal file (this file would not have the trailer, so it needs to be read completely).
> In future, if we switch to multi wal file, we could read the trailer for all completed WAL files, and reading the remaining incomplete files.

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