This is an automated email from the ASF dual-hosted git repository.

kturner pushed a commit to branch elasticity
in repository https://gitbox.apache.org/repos/asf/accumulo.git


The following commit(s) were added to refs/heads/elasticity by this push:
     new 8a30262e28 fixes NPE with system compactions (#4263)
8a30262e28 is described below

commit 8a30262e2878bd0d4c3374c06052fc670abba191
Author: Keith Turner <ktur...@apache.org>
AuthorDate: Wed Feb 14 18:37:30 2024 -0500

    fixes NPE with system compactions (#4263)
---
 .../accumulo/core/metadata/schema/CompactionMetadata.java    | 12 +++++++++---
 1 file changed, 9 insertions(+), 3 deletions(-)

diff --git 
a/core/src/main/java/org/apache/accumulo/core/metadata/schema/CompactionMetadata.java
 
b/core/src/main/java/org/apache/accumulo/core/metadata/schema/CompactionMetadata.java
index e3cd1f3347..3d0536d593 100644
--- 
a/core/src/main/java/org/apache/accumulo/core/metadata/schema/CompactionMetadata.java
+++ 
b/core/src/main/java/org/apache/accumulo/core/metadata/schema/CompactionMetadata.java
@@ -54,7 +54,12 @@ public class CompactionMetadata {
     this.priority = priority;
     this.cgid = Objects.requireNonNull(ceid);
     this.propagateDeletes = propagateDeletes;
-    this.fateId = fateId;
+    if (kind == CompactionKind.SYSTEM) {
+      // its ok if this is null for system compactions because its not used.
+      this.fateId = fateId;
+    } else {
+      this.fateId = Objects.requireNonNull(fateId);
+    }
   }
 
   public Set<StoredTabletFile> getJobFiles() {
@@ -112,7 +117,7 @@ public class CompactionMetadata {
     jData.groupId = cgid.toString();
     jData.priority = priority;
     jData.propDels = propagateDeletes;
-    jData.fateId = fateId.canonical();
+    jData.fateId = fateId == null ? null : fateId.canonical();
     return GSON.get().toJson(jData);
   }
 
@@ -122,7 +127,8 @@ public class CompactionMetadata {
     return new 
CompactionMetadata(jData.inputs.stream().map(StoredTabletFile::new).collect(toSet()),
         StoredTabletFile.of(jData.tmp).getTabletFile(), jData.compactor,
         CompactionKind.valueOf(jData.kind), jData.priority,
-        CompactorGroupIdImpl.groupId(jData.groupId), jData.propDels, 
FateId.from(jData.fateId));
+        CompactorGroupIdImpl.groupId(jData.groupId), jData.propDels,
+        jData.fateId == null ? null : FateId.from(jData.fateId));
   }
 
   @Override

Reply via email to