This is an automated email from the ASF dual-hosted git repository.
wchevreuil pushed a commit to branch branch-3
in repository https://gitbox.apache.org/repos/asf/hbase.git
The following commit(s) were added to refs/heads/branch-3 by this push:
new 6ea66645aa4 HBASE-29174 NPE on MemstoreFlusher when flush is triggered
by too many wals after a wal rolling (#6771)
6ea66645aa4 is described below
commit 6ea66645aa469b565261283cbd53fd6c0da864f9
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 1073d841ba4..8997c6433e7 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
@@ -480,6 +480,11 @@ public 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 5cf9853714c..0ab5312e204 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
@@ -149,10 +149,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);