hbase-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "chunhui shen (JIRA)" <j...@apache.org>
Subject [jira] [Updated] (HBASE-6059) Replaying recovered edits would make deleted data exist again
Date Wed, 23 May 2012 09:25:41 GMT

     [ https://issues.apache.org/jira/browse/HBASE-6059?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]

chunhui shen updated HBASE-6059:
--------------------------------

    Attachment: HBASE-6059v5.patch

Find the bug which cause TestShell failed.

Store#rowAtOrBeforeFromStoreFile´╝î
we should do it considering empty store file now´╝î else it will throw NPW
{code}
Store#rowAtOrBeforeFromStoreFile
private void rowAtOrBeforeFromStoreFile(final StoreFile f,
                                          final GetClosestRowBeforeTracker state)
      throws IOException {
    StoreFile.Reader r = f.getReader();
    if (r == null) {
      LOG.warn("StoreFile " + f + " has a null Reader");
      return;
    }
     }
+    if (r.getEntries() == 0) {
+      LOG.warn("StoreFile " + f + " is a empty store file");
+      return;
+    }
    // TODO: Cache these keys rather than make each time?
    byte [] fk = r.getFirstKey();
{code}

Mmodify it in the patchV5 and passed the TestShell now.
                
> Replaying recovered edits would make deleted data exist again
> -------------------------------------------------------------
>
>                 Key: HBASE-6059
>                 URL: https://issues.apache.org/jira/browse/HBASE-6059
>             Project: HBase
>          Issue Type: Bug
>          Components: regionserver
>            Reporter: chunhui shen
>            Assignee: chunhui shen
>         Attachments: HBASE-6059-testcase.patch, HBASE-6059.patch, HBASE-6059v2.patch,
HBASE-6059v3.patch, HBASE-6059v4.patch, HBASE-6059v5.patch
>
>
> When we replay recovered edits, we used the minSeqId of Store, It may cause deleted data
appeared again.
> Let's see how it happens. Suppose the region with two families(cf1,cf2)
> 1.put one data to the region (put r1,cf1:q1,v1)
> 2.move the region from server A to server B.
> 3.delete the data put by step 1(delete r1)
> 4.flush this region.
> 5.make major compaction for this region
> 6.move the region from server B to server A.
> 7.Abort server A
> 8.After the region is online, we could get the deleted data(r1,cf1:q1,v1)
> (When we replay recovered edits, we used the minSeqId of Store, because cf2 has no store
files, so its seqId is 0, so the edit log of put data will be replayed to the region)

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

       

Mime
View raw message