You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@bookkeeper.apache.org by si...@apache.org on 2018/12/16 08:20:40 UTC
[bookkeeper] branch master updated: [STATS] [DOC] Add @StatsDoc
annotation for garbage collector stats
This is an automated email from the ASF dual-hosted git repository.
sijie pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/bookkeeper.git
The following commit(s) were added to refs/heads/master by this push:
new b2e099b [STATS] [DOC] Add @StatsDoc annotation for garbage collector stats
b2e099b is described below
commit b2e099bbc7b13f13825fe78ab009ca132cb3a9ba
Author: Sijie Guo <gu...@gmail.com>
AuthorDate: Sun Dec 16 16:20:35 2018 +0800
[STATS] [DOC] Add @StatsDoc annotation for garbage collector stats
Descriptions of the changes in this PR:
*Motivation*
As part of [BP-36](https://github.com/apache/bookkeeper/issues/1785), this PR is to document gc stats.
*Changes*
- convert gc stats to use StatsDoc for documenting metrics
Master Issue: #1785
Reviewers: Jia Zhai <None>, Enrico Olivelli <eo...@gmail.com>
This closes #1875 from sijie/gc_stats
---
.../bookkeeper/bookie/GarbageCollectorThread.java | 81 +++--------
.../bookie/ScanAndCompareGarbageCollector.java | 23 +---
.../bookie/stats/GarbageCollectorStats.java | 151 +++++++++++++++++++++
.../org/apache/bookkeeper/meta/GcLedgersTest.java | 26 +---
4 files changed, 181 insertions(+), 100 deletions(-)
diff --git a/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/GarbageCollectorThread.java b/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/GarbageCollectorThread.java
index ca02651..0065926 100644
--- a/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/GarbageCollectorThread.java
+++ b/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/GarbageCollectorThread.java
@@ -21,14 +21,6 @@
package org.apache.bookkeeper.bookie;
-import static org.apache.bookkeeper.bookie.BookKeeperServerStats.ACTIVE_ENTRY_LOG_COUNT;
-import static org.apache.bookkeeper.bookie.BookKeeperServerStats.ACTIVE_ENTRY_LOG_SPACE_BYTES;
-import static org.apache.bookkeeper.bookie.BookKeeperServerStats.MAJOR_COMPACTION_COUNT;
-import static org.apache.bookkeeper.bookie.BookKeeperServerStats.MINOR_COMPACTION_COUNT;
-import static org.apache.bookkeeper.bookie.BookKeeperServerStats.RECLAIMED_COMPACTION_SPACE_BYTES;
-import static org.apache.bookkeeper.bookie.BookKeeperServerStats.RECLAIMED_DELETION_SPACE_BYTES;
-import static org.apache.bookkeeper.bookie.BookKeeperServerStats.THREAD_RUNTIME;
-
import com.google.common.annotations.VisibleForTesting;
import io.netty.util.concurrent.DefaultThreadFactory;
@@ -46,11 +38,9 @@ import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.atomic.AtomicLong;
import org.apache.bookkeeper.bookie.GarbageCollector.GarbageCleaner;
+import org.apache.bookkeeper.bookie.stats.GarbageCollectorStats;
import org.apache.bookkeeper.conf.ServerConfiguration;
import org.apache.bookkeeper.meta.LedgerManager;
-import org.apache.bookkeeper.stats.Counter;
-import org.apache.bookkeeper.stats.Gauge;
-import org.apache.bookkeeper.stats.OpStatsLogger;
import org.apache.bookkeeper.stats.StatsLogger;
import org.apache.bookkeeper.util.MathUtils;
import org.apache.bookkeeper.util.SafeRunnable;
@@ -92,12 +82,7 @@ public class GarbageCollectorThread extends SafeRunnable {
final AbstractLogCompactor compactor;
// Stats loggers for garbage collection operations
- final StatsLogger statsLogger;
- private final Counter minorCompactionCounter;
- private final Counter majorCompactionCounter;
- private final Counter reclaimedSpaceViaDeletes;
- private final Counter reclaimedSpaceViaCompaction;
- private final OpStatsLogger gcThreadRuntime;
+ private final GarbageCollectorStats gcStats;
private volatile long totalEntryLogSize;
private volatile int numActiveEntryLogs;
@@ -124,7 +109,7 @@ public class GarbageCollectorThread extends SafeRunnable {
// Boolean to disable minor compaction, when disk is full
final AtomicBoolean suspendMinorCompaction = new AtomicBoolean(false);
- final GarbageCollector garbageCollector;
+ final ScanAndCompareGarbageCollector garbageCollector;
final GarbageCleaner garbageCleaner;
final ServerConfiguration conf;
@@ -162,52 +147,28 @@ public class GarbageCollectorThread extends SafeRunnable {
this.ledgerStorage = ledgerStorage;
this.gcWaitTime = conf.getGcWaitTime();
+ this.numActiveEntryLogs = 0;
+ this.totalEntryLogSize = 0L;
+ this.garbageCollector = new ScanAndCompareGarbageCollector(ledgerManager, ledgerStorage, conf, statsLogger);
+ this.gcStats = new GarbageCollectorStats(
+ statsLogger,
+ () -> numActiveEntryLogs,
+ () -> totalEntryLogSize,
+ () -> garbageCollector.getNumActiveLedgers()
+ );
+
this.garbageCleaner = ledgerId -> {
try {
if (LOG.isDebugEnabled()) {
LOG.debug("delete ledger : " + ledgerId);
}
+ gcStats.getDeletedLedgerCounter().inc();
ledgerStorage.deleteLedger(ledgerId);
} catch (IOException e) {
LOG.error("Exception when deleting the ledger index file on the Bookie: ", e);
}
};
- // Stat state initialization
- this.statsLogger = statsLogger;
-
- this.minorCompactionCounter = statsLogger.getCounter(MINOR_COMPACTION_COUNT);
- this.majorCompactionCounter = statsLogger.getCounter(MAJOR_COMPACTION_COUNT);
- this.reclaimedSpaceViaCompaction = statsLogger.getCounter(RECLAIMED_COMPACTION_SPACE_BYTES);
- this.reclaimedSpaceViaDeletes = statsLogger.getCounter(RECLAIMED_DELETION_SPACE_BYTES);
- this.gcThreadRuntime = statsLogger.getOpStatsLogger(THREAD_RUNTIME);
- this.numActiveEntryLogs = 0;
- statsLogger.registerGauge(ACTIVE_ENTRY_LOG_COUNT, new Gauge<Integer>() {
- @Override
- public Integer getDefaultValue() {
- return 0;
- }
-
- @Override
- public Integer getSample() {
- return numActiveEntryLogs;
- }
- });
- this.totalEntryLogSize = 0L;
- statsLogger.registerGauge(ACTIVE_ENTRY_LOG_SPACE_BYTES, new Gauge<Long>() {
- @Override
- public Long getDefaultValue() {
- return 0L;
- }
-
- @Override
- public Long getSample() {
- return totalEntryLogSize;
- }
- });
-
- this.garbageCollector = new ScanAndCompareGarbageCollector(ledgerManager, ledgerStorage, conf, statsLogger);
-
// compaction parameters
minorCompactionThreshold = conf.getMinorCompactionThreshold();
minorCompactionInterval = conf.getMinorCompactionInterval() * SECOND;
@@ -389,7 +350,7 @@ public class GarbageCollectorThread extends SafeRunnable {
lastMajorCompactionTime = System.currentTimeMillis();
// and also move minor compaction time
lastMinorCompactionTime = lastMajorCompactionTime;
- majorCompactionCounter.inc();
+ gcStats.getMajorCompactionCounter().inc();
majorCompacting.set(false);
} else if (enableMinorCompaction && (!suspendMinor)
&& (force || curTime - lastMinorCompactionTime > minorCompactionInterval)) {
@@ -398,7 +359,7 @@ public class GarbageCollectorThread extends SafeRunnable {
minorCompacting.set(true);
doCompactEntryLogs(minorCompactionThreshold);
lastMinorCompactionTime = System.currentTimeMillis();
- minorCompactionCounter.inc();
+ gcStats.getMinorCompactionCounter().inc();
minorCompacting.set(false);
}
@@ -408,7 +369,7 @@ public class GarbageCollectorThread extends SafeRunnable {
.currentThread().getName());
}
}
- this.gcThreadRuntime.registerSuccessfulEvent(
+ gcStats.getGcThreadRuntime().registerSuccessfulEvent(
MathUtils.nowInNano() - threadStart, TimeUnit.NANOSECONDS);
}
@@ -434,7 +395,7 @@ public class GarbageCollectorThread extends SafeRunnable {
// We can remove this entry log file now.
LOG.info("Deleting entryLogId " + entryLogId + " as it has no active ledgers!");
removeEntryLog(entryLogId);
- this.reclaimedSpaceViaDeletes.add(meta.getTotalSize());
+ gcStats.getReclaimedSpaceViaDeletes().add(meta.getTotalSize());
}
totalEntryLogSizeAcc.getAndAdd(meta.getRemainingSize());
@@ -492,7 +453,7 @@ public class GarbageCollectorThread extends SafeRunnable {
long priorRemainingSize = meta.getRemainingSize();
compactEntryLog(meta);
- this.reclaimedSpaceViaCompaction.add(meta.getTotalSize() - priorRemainingSize);
+ gcStats.getReclaimedSpaceViaCompaction().add(meta.getTotalSize() - priorRemainingSize);
if (!running) { // if gc thread is not running, stop compaction
return;
@@ -621,8 +582,8 @@ public class GarbageCollectorThread extends SafeRunnable {
.minorCompacting(minorCompacting.get())
.lastMajorCompactionTime(lastMajorCompactionTime)
.lastMinorCompactionTime(lastMinorCompactionTime)
- .majorCompactionCounter(majorCompactionCounter.get())
- .minorCompactionCounter(minorCompactionCounter.get())
+ .majorCompactionCounter(gcStats.getMajorCompactionCounter().get())
+ .minorCompactionCounter(gcStats.getMinorCompactionCounter().get())
.build();
}
}
diff --git a/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/ScanAndCompareGarbageCollector.java b/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/ScanAndCompareGarbageCollector.java
index 6af5d15..24c5c97 100644
--- a/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/ScanAndCompareGarbageCollector.java
+++ b/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/ScanAndCompareGarbageCollector.java
@@ -21,8 +21,6 @@
package org.apache.bookkeeper.bookie;
-import static org.apache.bookkeeper.bookie.BookKeeperServerStats.ACTIVE_LEDGER_COUNT;
-import static org.apache.bookkeeper.bookie.BookKeeperServerStats.DELETED_LEDGER_COUNT;
import static org.apache.bookkeeper.common.concurrent.FutureUtils.result;
import com.google.common.collect.Sets;
@@ -42,8 +40,6 @@ import org.apache.bookkeeper.meta.LedgerManager.LedgerRangeIterator;
import org.apache.bookkeeper.meta.ZkLedgerUnderreplicationManager;
import org.apache.bookkeeper.meta.zk.ZKMetadataDriverBase;
import org.apache.bookkeeper.net.BookieSocketAddress;
-import org.apache.bookkeeper.stats.Counter;
-import org.apache.bookkeeper.stats.Gauge;
import org.apache.bookkeeper.stats.StatsLogger;
import org.apache.bookkeeper.util.ZkUtils;
import org.apache.bookkeeper.zookeeper.ZooKeeperClient;
@@ -69,7 +65,7 @@ import org.slf4j.LoggerFactory;
*
* <p>TODO: eliminate the direct usage of zookeeper here {@link https://github.com/apache/bookkeeper/issues/1331}
*/
-public class ScanAndCompareGarbageCollector implements GarbageCollector{
+public class ScanAndCompareGarbageCollector implements GarbageCollector {
static final Logger LOG = LoggerFactory.getLogger(ScanAndCompareGarbageCollector.class);
static final int MAX_CONCURRENT_ZK_REQUESTS = 1000;
@@ -86,7 +82,6 @@ public class ScanAndCompareGarbageCollector implements GarbageCollector{
private final String zkLedgersRootPath;
private final boolean verifyMetadataOnGc;
private int activeLedgerCounter;
- private Counter deletedLedgerCounter;
public ScanAndCompareGarbageCollector(LedgerManager ledgerManager, CompactableLedgerStorage ledgerStorage,
ServerConfiguration conf, StatsLogger statsLogger) throws IOException {
@@ -106,20 +101,11 @@ public class ScanAndCompareGarbageCollector implements GarbageCollector{
verifyMetadataOnGc = conf.getVerifyMetadataOnGC();
- this.deletedLedgerCounter = statsLogger.getCounter(DELETED_LEDGER_COUNT);
-
this.activeLedgerCounter = 0;
- statsLogger.registerGauge(ACTIVE_LEDGER_COUNT, new Gauge<Integer>() {
- @Override
- public Integer getDefaultValue() {
- return 0;
- }
+ }
- @Override
- public Integer getSample() {
- return activeLedgerCounter;
- }
- });
+ public int getNumActiveLedgers() {
+ return activeLedgerCounter;
}
@Override
@@ -190,7 +176,6 @@ public class ScanAndCompareGarbageCollector implements GarbageCollector{
continue;
}
}
- deletedLedgerCounter.inc();
garbageCleaner.clean(bkLid);
}
}
diff --git a/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/stats/GarbageCollectorStats.java b/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/stats/GarbageCollectorStats.java
new file mode 100644
index 0000000..1c94756
--- /dev/null
+++ b/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/stats/GarbageCollectorStats.java
@@ -0,0 +1,151 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.bookkeeper.bookie.stats;
+
+import static org.apache.bookkeeper.bookie.BookKeeperServerStats.ACTIVE_ENTRY_LOG_COUNT;
+import static org.apache.bookkeeper.bookie.BookKeeperServerStats.ACTIVE_ENTRY_LOG_SPACE_BYTES;
+import static org.apache.bookkeeper.bookie.BookKeeperServerStats.ACTIVE_LEDGER_COUNT;
+import static org.apache.bookkeeper.bookie.BookKeeperServerStats.BOOKIE_SCOPE;
+import static org.apache.bookkeeper.bookie.BookKeeperServerStats.CATEGORY_SERVER;
+import static org.apache.bookkeeper.bookie.BookKeeperServerStats.DELETED_LEDGER_COUNT;
+import static org.apache.bookkeeper.bookie.BookKeeperServerStats.MAJOR_COMPACTION_COUNT;
+import static org.apache.bookkeeper.bookie.BookKeeperServerStats.MINOR_COMPACTION_COUNT;
+import static org.apache.bookkeeper.bookie.BookKeeperServerStats.RECLAIMED_COMPACTION_SPACE_BYTES;
+import static org.apache.bookkeeper.bookie.BookKeeperServerStats.RECLAIMED_DELETION_SPACE_BYTES;
+import static org.apache.bookkeeper.bookie.BookKeeperServerStats.THREAD_RUNTIME;
+
+import java.util.function.Supplier;
+import lombok.Getter;
+import org.apache.bookkeeper.stats.Counter;
+import org.apache.bookkeeper.stats.Gauge;
+import org.apache.bookkeeper.stats.OpStatsLogger;
+import org.apache.bookkeeper.stats.StatsLogger;
+import org.apache.bookkeeper.stats.annotations.StatsDoc;
+
+/**
+ * A umbrella class for gc stats.
+ */
+@StatsDoc(
+ name = BOOKIE_SCOPE,
+ category = CATEGORY_SERVER,
+ help = "Garbage Collector related stats"
+)
+@Getter
+public class GarbageCollectorStats {
+
+ final StatsLogger statsLogger;
+ @StatsDoc(
+ name = MINOR_COMPACTION_COUNT,
+ help = "Number of minor compactions"
+ )
+ private final Counter minorCompactionCounter;
+ @StatsDoc(
+ name = MAJOR_COMPACTION_COUNT,
+ help = "Number of major compactions"
+ )
+ private final Counter majorCompactionCounter;
+ @StatsDoc(
+ name = RECLAIMED_DELETION_SPACE_BYTES,
+ help = "Number of disk space bytes reclaimed via deleting entry log files"
+ )
+ private final Counter reclaimedSpaceViaDeletes;
+ @StatsDoc(
+ name = RECLAIMED_COMPACTION_SPACE_BYTES,
+ help = "Number of disk space bytes reclaimed via compacting entry log files"
+ )
+ private final Counter reclaimedSpaceViaCompaction;
+ @StatsDoc(
+ name = DELETED_LEDGER_COUNT,
+ help = "Number of ledgers deleted by garbage collection"
+ )
+ private final Counter deletedLedgerCounter;
+ @StatsDoc(
+ name = THREAD_RUNTIME,
+ help = "Operation stats of garbage collections"
+ )
+ private final OpStatsLogger gcThreadRuntime;
+ @StatsDoc(
+ name = ACTIVE_ENTRY_LOG_COUNT,
+ help = "Current number of active entry log files"
+ )
+ private final Gauge<Integer> activeEntryLogCountGauge;
+ @StatsDoc(
+ name = ACTIVE_ENTRY_LOG_SPACE_BYTES,
+ help = "Current number of active entry log space bytes"
+ )
+ private final Gauge<Long> activeEntryLogSpaceBytesGauge;
+ @StatsDoc(
+ name = ACTIVE_LEDGER_COUNT,
+ help = "Current number of active ledgers"
+ )
+ private final Gauge<Integer> activeLedgerCountGauge;
+
+ public GarbageCollectorStats(StatsLogger statsLogger,
+ Supplier<Integer> activeEntryLogCountSupplier,
+ Supplier<Long> activeEntryLogSpaceBytesSupplier,
+ Supplier<Integer> activeLedgerCountSupplier) {
+ this.statsLogger = statsLogger;
+
+ this.minorCompactionCounter = statsLogger.getCounter(MINOR_COMPACTION_COUNT);
+ this.majorCompactionCounter = statsLogger.getCounter(MAJOR_COMPACTION_COUNT);
+ this.reclaimedSpaceViaCompaction = statsLogger.getCounter(RECLAIMED_COMPACTION_SPACE_BYTES);
+ this.reclaimedSpaceViaDeletes = statsLogger.getCounter(RECLAIMED_DELETION_SPACE_BYTES);
+ this.gcThreadRuntime = statsLogger.getOpStatsLogger(THREAD_RUNTIME);
+ this.deletedLedgerCounter = statsLogger.getCounter(DELETED_LEDGER_COUNT);
+
+ this.activeEntryLogCountGauge = new Gauge<Integer>() {
+ @Override
+ public Integer getDefaultValue() {
+ return 0;
+ }
+
+ @Override
+ public Integer getSample() {
+ return activeEntryLogCountSupplier.get();
+ }
+ };
+ statsLogger.registerGauge(ACTIVE_ENTRY_LOG_COUNT, activeEntryLogCountGauge);
+ this.activeEntryLogSpaceBytesGauge = new Gauge<Long>() {
+ @Override
+ public Long getDefaultValue() {
+ return 0L;
+ }
+
+ @Override
+ public Long getSample() {
+ return activeEntryLogSpaceBytesSupplier.get();
+ }
+ };
+ statsLogger.registerGauge(ACTIVE_ENTRY_LOG_SPACE_BYTES, activeEntryLogSpaceBytesGauge);
+ this.activeLedgerCountGauge = new Gauge<Integer>() {
+ @Override
+ public Integer getDefaultValue() {
+ return 0;
+ }
+
+ @Override
+ public Integer getSample() {
+ return activeLedgerCountSupplier.get();
+ }
+ };
+ statsLogger.registerGauge(ACTIVE_LEDGER_COUNT, activeLedgerCountGauge);
+ }
+
+}
diff --git a/bookkeeper-server/src/test/java/org/apache/bookkeeper/meta/GcLedgersTest.java b/bookkeeper-server/src/test/java/org/apache/bookkeeper/meta/GcLedgersTest.java
index d273565..828956d 100644
--- a/bookkeeper-server/src/test/java/org/apache/bookkeeper/meta/GcLedgersTest.java
+++ b/bookkeeper-server/src/test/java/org/apache/bookkeeper/meta/GcLedgersTest.java
@@ -21,8 +21,6 @@
package org.apache.bookkeeper.meta;
-import static org.apache.bookkeeper.bookie.BookKeeperServerStats.ACTIVE_LEDGER_COUNT;
-import static org.apache.bookkeeper.bookie.BookKeeperServerStats.DELETED_LEDGER_COUNT;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
@@ -173,7 +171,7 @@ public class GcLedgersTest extends LedgerManagerTestCase {
final CountDownLatch endLatch = new CountDownLatch(2);
final CompactableLedgerStorage mockLedgerStorage = new MockLedgerStorage();
TestStatsProvider stats = new TestStatsProvider();
- final GarbageCollector garbageCollector = new ScanAndCompareGarbageCollector(getLedgerManager(),
+ final ScanAndCompareGarbageCollector garbageCollector = new ScanAndCompareGarbageCollector(getLedgerManager(),
mockLedgerStorage, baseConf, stats.getStatsLogger("gc"));
Thread gcThread = new Thread() {
@Override
@@ -236,11 +234,8 @@ public class GcLedgersTest extends LedgerManagerTestCase {
assertTrue(activeLedgers.containsKey(ledger));
}
assertTrue(
- "Wrong DELETED_LEDGER_COUNT",
- stats.getCounter("gc." + DELETED_LEDGER_COUNT).get() == removedLedgers.size());
- assertTrue(
"Wrong ACTIVE_LEDGER_COUNT",
- stats.getGauge("gc." + ACTIVE_LEDGER_COUNT).getSample().intValue() == createdLedgers.size());
+ garbageCollector.getNumActiveLedgers() == createdLedgers.size());
}
@Test
@@ -253,7 +248,7 @@ public class GcLedgersTest extends LedgerManagerTestCase {
MockLedgerStorage mockLedgerStorage = new MockLedgerStorage();
TestStatsProvider stats = new TestStatsProvider();
- final GarbageCollector garbageCollector = new ScanAndCompareGarbageCollector(getLedgerManager(),
+ final ScanAndCompareGarbageCollector garbageCollector = new ScanAndCompareGarbageCollector(getLedgerManager(),
mockLedgerStorage, baseConf, stats.getStatsLogger("gc"));
GarbageCollector.GarbageCleaner cleaner = new GarbageCollector.GarbageCleaner() {
@Override
@@ -272,36 +267,25 @@ public class GcLedgersTest extends LedgerManagerTestCase {
garbageCollector.gc(cleaner);
assertNull("Should have cleaned nothing", cleaned.poll());
assertTrue(
- "Wrong DELETED_LEDGER_COUNT",
- stats.getCounter("gc." + DELETED_LEDGER_COUNT).get() == 0);
- assertTrue(
"Wrong ACTIVE_LEDGER_COUNT",
- stats.getGauge(
- "gc." + ACTIVE_LEDGER_COUNT).getSample().intValue() == numLedgers);
+ garbageCollector.getNumActiveLedgers() == numLedgers);
long last = createdLedgers.last();
removeLedger(last);
garbageCollector.gc(cleaner);
assertNotNull("Should have cleaned something", cleaned.peek());
assertEquals("Should have cleaned last ledger" + last, (long) last, (long) cleaned.poll());
- assertTrue(
- "Wrong DELETED_LEDGER_COUNT",
- stats.getCounter("gc." + DELETED_LEDGER_COUNT).get() == 1);
long first = createdLedgers.first();
removeLedger(first);
garbageCollector.gc(cleaner);
assertNotNull("Should have cleaned something", cleaned.peek());
assertEquals("Should have cleaned first ledger" + first, (long) first, (long) cleaned.poll());
- assertTrue(
- "Wrong DELETED_LEDGER_COUNT",
- stats.getCounter("gc." + DELETED_LEDGER_COUNT).get() == 2);
garbageCollector.gc(cleaner);
assertTrue(
"Wrong ACTIVE_LEDGER_COUNT",
- stats.getGauge(
- "gc." + ACTIVE_LEDGER_COUNT).getSample().intValue() == (numLedgers - 2));
+ garbageCollector.getNumActiveLedgers() == (numLedgers - 2));
}