[ https://issues.apache.org/jira/browse/HBASE-17674?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Duo Zhang updated HBASE-17674: ------------------------------ Fix Version/s: (was: 2.0) 2.0.0 > Major compaction may be cancelled in CompactionChecker > ------------------------------------------------------ > > Key: HBASE-17674 > URL: https://issues.apache.org/jira/browse/HBASE-17674 > Project: HBase > Issue Type: Bug > Components: Compaction > Affects Versions: 2.0.0, 1.3.0, 1.2.4, 0.98.24 > Reporter: Guangxu Cheng > Assignee: Guangxu Cheng > Fix For: 2.0.0, 1.4.0 > > Attachments: HBASE-17674-master-v1.patch > > > CompactionChecker will periodically check whether a region should perform a > major compaction. > If a region should perform a major compact, a request is submitted. But > before the request is submitted, the variable forceMajor is not set to true > by calling triggerMajorCompaction. > When filtering a storefile, the large storefile may cause the request to be > canceled or became minor compact. > {code:title=HRegionServer.java|borderStyle=solid} > @Override > protected void chore() { > for (Region r : this.instance.onlineRegions.values()) { > if (r == null) > continue; > for (Store s : r.getStores()) { > try { > long multiplier = s.getCompactionCheckMultiplier(); > assert multiplier > 0; > if (iteration % multiplier != 0) continue; > if (s.needsCompaction()) { > // Queue a compaction. Will recognize if major is needed. > this.instance.compactSplitThread.requestSystemCompaction(r, s, > getName() > + " requests compaction"); > } else if (s.isMajorCompaction()) { > if (majorCompactPriority == DEFAULT_PRIORITY > || majorCompactPriority > > ((HRegion)r).getCompactPriority()) { > this.instance.compactSplitThread.requestCompaction(r, s, > getName() > + " requests major compaction; use default priority", > null); > } else { > this.instance.compactSplitThread.requestCompaction(r, s, > getName() > + " requests major compaction; use configured priority", > this.majorCompactPriority, null, null); > } > } > } catch (IOException e) { > LOG.warn("Failed major compaction check on " + r, e); > } > } > } > iteration = (iteration == Long.MAX_VALUE) ? 0 : (iteration + 1); > } > {code} -- This message was sent by Atlassian JIRA (v6.3.15#6346)