[ https://issues.apache.org/jira/browse/HBASE-16578?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15569091#comment-15569091 ]
Ted Yu commented on HBASE-16578: -------------------------------- {code} - public void testScannerAfterCompactions() throws Exception { {code} The original test is superseded by the new test ? nit: you can call f.createReader() in the same loop where readersToClose is populated. > Mob data loss after mob compaction and normal compcation > -------------------------------------------------------- > > Key: HBASE-16578 > URL: https://issues.apache.org/jira/browse/HBASE-16578 > Project: HBase > Issue Type: Bug > Components: mob > Affects Versions: 2.0.0 > Reporter: huaxiang sun > Assignee: Jingcheng Du > Attachments: HBASE-16578.patch, TestMobCompaction.java, > TestMobCompaction.java > > > StoreFileScanners on MOB cells rely on the scannerOrder to find the latest > cells after mob compaction. The value of scannerOrder is assigned by the > order of maxSeqId of StoreFile, and this maxSeqId is valued only after the > reader of the StoreFile is created. > In {{Compactor.compact}}, the compacted store files are cloned and their > readers are not created. And in {{StoreFileScanner.getScannersForStoreFiles}} > the StoreFiles are sorted before the readers are created and at that time the > maxSeqId for each file is -1 (the default value). This will lead to a chaos > in scanners in the following normal compaction. Some older cells might be > chosen during the normal compaction. > We need to create readers either before the sorting in the method > {{StoreFileScanner.getScannersForStoreFiles}}, or create readers just after > the store files are cloned in {{Compactor.compact}}. -- This message was sent by Atlassian JIRA (v6.3.4#6332)