You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by st...@apache.org on 2021/03/19 23:17:59 UTC
[hbase] branch branch-1 updated: HBASE-25679 Size of log queue
metric is incorrect (#3072)
This is an automated email from the ASF dual-hosted git repository.
stack pushed a commit to branch branch-1
in repository https://gitbox.apache.org/repos/asf/hbase.git
The following commit(s) were added to refs/heads/branch-1 by this push:
new bea87b3 HBASE-25679 Size of log queue metric is incorrect (#3072)
bea87b3 is described below
commit bea87b30ec47d2b8e527034c332ecdefdb4259ff
Author: shahrs87 <sh...@gmail.com>
AuthorDate: Fri Mar 19 16:17:35 2021 -0700
HBASE-25679 Size of log queue metric is incorrect (#3072)
Co-authored-by: Rushabh <ru...@salesforce.com>
Signed-off-by: stack <st...@apache.org>
---
.../regionserver/ReplicationSourceLogQueue.java | 4 +++
.../replication/regionserver/WALEntryStream.java | 1 -
.../regionserver/TestWALEntryStream.java | 29 +++++++++++++++++++++-
3 files changed, 32 insertions(+), 2 deletions(-)
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceLogQueue.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceLogQueue.java
index 1cc8cb9..c3c20cb 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceLogQueue.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceLogQueue.java
@@ -181,4 +181,8 @@ public class ReplicationSourceLogQueue {
}
return oldestWalTimestamp;
}
+
+ public MetricsSource getMetrics() {
+ return metrics;
+ }
}
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/replication/regionserver/WALEntryStream.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/replication/regionserver/WALEntryStream.java
index c667881..3995c00 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/replication/regionserver/WALEntryStream.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/replication/regionserver/WALEntryStream.java
@@ -271,7 +271,6 @@ public class WALEntryStream implements Iterator<Entry>, Closeable, Iterable<Entr
logQueue.remove(walGroupId);
setCurrentPath(null);
setPosition(0);
- metrics.decrSizeOfLogQueue();
}
private void readNextEntryAndSetPosition() throws IOException {
diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/replication/regionserver/TestWALEntryStream.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/replication/regionserver/TestWALEntryStream.java
index 0b01c5f..03c8d8a 100644
--- a/hbase-server/src/test/java/org/apache/hadoop/hbase/replication/regionserver/TestWALEntryStream.java
+++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/replication/regionserver/TestWALEntryStream.java
@@ -143,7 +143,10 @@ public class TestWALEntryStream {
@Before
public void setUp() throws Exception {
- logQueue = new ReplicationSourceLogQueue(conf, new MetricsSource("2"));
+ MetricsSource source = new MetricsSource("2");
+ // Source with the same id is shared and carries values from the last run
+ source.clear();
+ logQueue = new ReplicationSourceLogQueue(conf, source);
List<WALActionsListener> listeners = new ArrayList<WALActionsListener>();
pathWatcher = new PathWatcher();
listeners.add(pathWatcher);
@@ -811,4 +814,28 @@ public class TestWALEntryStream {
}
writer.close();
}
+
+ /**
+ * Tests size of log queue is incremented and decremented properly.
+ */
+ @Test
+ public void testSizeOfLogQueue() throws Exception {
+ // There should be always 1 log which is current wal.
+ assertEquals(1, logQueue.getMetrics().getSizeOfLogQueue());
+ appendToLog();
+ log.rollWriter();
+ // After rolling there will be 2 wals in the queue
+ assertEquals(2, logQueue.getMetrics().getSizeOfLogQueue());
+
+ try (WALEntryStream entryStream =
+ new WALEntryStream(logQueue, fs, conf, logQueue.getMetrics(), fakeWalGroupId)) {
+ // There's one edit in the log, read it.
+ assertTrue(entryStream.hasNext());
+ WAL.Entry entry = entryStream.next();
+ assertNotNull(entry);
+ assertFalse(entryStream.hasNext());
+ }
+ // After removing one wal, size of log queue will be 1 again.
+ assertEquals(1, logQueue.getMetrics().getSizeOfLogQueue());
+ }
}