This is an automated email from the ASF dual-hosted git repository.
wchevreuil pushed a commit to branch branch-2.5
in repository https://gitbox.apache.org/repos/asf/hbase.git
The following commit(s) were added to refs/heads/branch-2.5 by this push:
new 2d758385a07 HBASE-29174 NPE on MemstoreFlusher when flush is triggered
by too many wals after a wal rolling (#6771)
2d758385a07 is described below
commit 2d758385a073cf85aa7cf8b05406caee5d828dd7
Author: Wellington Ramos Chevreuil <[email protected]>
AuthorDate: Tue Mar 11 15:03:26 2025 +0000
HBASE-29174 NPE on MemstoreFlusher when flush is triggered by too many wals
after a wal rolling (#6771)
Signed-off-by: Duo Zhang <[email protected]>
(cherry picked from commit 9b960f90ddea1fadb75530127b32942b68b5e3df)
---
.../hadoop/hbase/regionserver/wal/SequenceIdAccounting.java | 5 +++++
.../hadoop/hbase/regionserver/wal/TestSequenceIdAccounting.java | 9 +++++----
2 files changed, 10 insertions(+), 4 deletions(-)
diff --git
a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/wal/SequenceIdAccounting.java
b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/wal/SequenceIdAccounting.java
index dad49cb205e..5e6bf803be4 100644
---
a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/wal/SequenceIdAccounting.java
+++
b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/wal/SequenceIdAccounting.java
@@ -468,6 +468,11 @@ class SequenceIdAccounting {
continue;
}
for (Map.Entry<ImmutableByteArray, Long> me : m.entrySet()) {
+ // FLUSH events produce an entry in the wal with a "fake" METAFAMILY
CF. We need to ignore
+ // these entries here, as there is actual no such store.
+ if (me.getKey().toString().equals("METAFAMILY")) {
+ continue;
+ }
if (me.getValue() <= e.getValue()) {
if (toFlush == null) {
toFlush = new TreeMap(Bytes.BYTES_COMPARATOR);
diff --git
a/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/wal/TestSequenceIdAccounting.java
b/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/wal/TestSequenceIdAccounting.java
index 10cb4f82081..0320bbc5a2c 100644
---
a/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/wal/TestSequenceIdAccounting.java
+++
b/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/wal/TestSequenceIdAccounting.java
@@ -143,10 +143,11 @@ public class TestSequenceIdAccounting {
sida.getOrCreateLowestSequenceIds(ENCODED_REGION_NAME);
Map<byte[], Long> m = new HashMap<>();
m.put(ENCODED_REGION_NAME, HConstants.NO_SEQNUM);
- long sequenceid = 1;
- sida.update(ENCODED_REGION_NAME, FAMILIES, sequenceid, true);
- sida.update(ENCODED_REGION_NAME, FAMILIES, sequenceid++, true);
- sida.update(ENCODED_REGION_NAME, FAMILIES, sequenceid++, true);
+ sida.update(ENCODED_REGION_NAME, META_FAMILY_SET, 1, true);
+ sida.update(ENCODED_REGION_NAME, FAMILIES, 2, true);
+ sida.update(ENCODED_REGION_NAME, FAMILIES, 3, true);
+ sida.update(ENCODED_REGION_NAME, FAMILIES, 4, true);
+ m.put(ENCODED_REGION_NAME, 1L);
assertTrue(sida.findLower(m) == null);
m.put(ENCODED_REGION_NAME, sida.getLowestSequenceId(ENCODED_REGION_NAME));
assertTrue(sida.findLower(m).size() == 1);