Details
-
Bug
-
Status: Closed
-
Critical
-
Resolution: Fixed
-
hbase-11339
-
None
-
Reviewed
Description
when zookeeper is down during a major compaction or a sweep tool run in progress, we switch to a minor.
try { zk = MobZookeeper.newInstance(this.conf, compactionName); } catch (KeeperException e) { LOG.error("Cannot connect to the zookeeper, ready to perform the minor compaction instead", e); // change the major compaction into a minor one compaction.getRequest().setIsMajor(false); return super.compact(compaction); }
but the "request start" (HRegion.reportCompactionRequestStart) is "major" and increments the major-compactions counter
while the "request end" (HRegion.reportCompactionRequestEnd) is "minor" and decrements the minor-compactions counter
triggering the assert newValue >= 0, since we are decrementing the wrong counter