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

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

commit 3792630c867b2affb4f16efc9f537a04ca66cf3e
Merge: b8869fb72e d973179452
Author: Daniel Roberts <ddani...@gmail.com>
AuthorDate: Thu Dec 28 04:08:36 2023 +0000

    Merge branch '2.1'

 .../accumulo/server/metadata/ServerAmpleImpl.java      | 18 ++++++++++++++----
 .../accumulo/test/functional/GarbageCollectorIT.java   | 18 +++++++++++++++---
 2 files changed, 29 insertions(+), 7 deletions(-)

diff --cc 
server/base/src/main/java/org/apache/accumulo/server/metadata/ServerAmpleImpl.java
index 0e4fa2c478,ef02f22b4d..7aa6ecb6e1
--- 
a/server/base/src/main/java/org/apache/accumulo/server/metadata/ServerAmpleImpl.java
+++ 
b/server/base/src/main/java/org/apache/accumulo/server/metadata/ServerAmpleImpl.java
@@@ -227,13 -226,23 +227,23 @@@ public class ServerAmpleImpl extends Am
      }
  
      try (BatchWriter writer = context.createBatchWriter(level.metaTable())) {
-       for (GcCandidate candidate : candidates) {
-         Mutation m = new 
Mutation(DeletesSection.encodeRow(candidate.getPath()));
-         m.putDelete(EMPTY_TEXT, EMPTY_TEXT, candidate.getUid());
-         writer.addMutation(m);
+       if (type == GcCandidateType.VALID) {
+         for (GcCandidate candidate : candidates) {
+           Mutation m = new 
Mutation(DeletesSection.encodeRow(candidate.getPath()));
+           // Removes all versions of the candidate to avoid reprocessing 
deleted file entries
+           m.putDelete(EMPTY_TEXT, EMPTY_TEXT);
+           writer.addMutation(m);
+         }
+       } else {
+         for (GcCandidate candidate : candidates) {
+           Mutation m = new 
Mutation(DeletesSection.encodeRow(candidate.getPath()));
+           // Removes this and older versions while allowing newer candidate 
versions to persist
+           m.putDelete(EMPTY_TEXT, EMPTY_TEXT, candidate.getUid());
+           writer.addMutation(m);
+         }
        }
      } catch (MutationsRejectedException | TableNotFoundException e) {
 -      throw new RuntimeException(e);
 +      throw new IllegalStateException(e);
      }
    }
  
diff --cc 
test/src/main/java/org/apache/accumulo/test/functional/GarbageCollectorIT.java
index 82c657e1a5,1776bc4c03..01ca7b8f5d
--- 
a/test/src/main/java/org/apache/accumulo/test/functional/GarbageCollectorIT.java
+++ 
b/test/src/main/java/org/apache/accumulo/test/functional/GarbageCollectorIT.java
@@@ -497,11 -510,10 +506,11 @@@ public class GarbageCollectorIT extend
  
      GcCandidate deleteCandidate = candidates.get(0);
      assertNotNull(deleteCandidate);
 -    ample.putGcCandidates(tableId, List.of(new 
StoredTabletFile(deleteCandidate.getPath())));
 +    ample.putGcCandidates(tableId,
 +        List.of(StoredTabletFile.of(new Path(deleteCandidate.getPath()))));
  
      log.debug("Deleting Candidate {}", deleteCandidate);
-     ample.deleteGcCandidates(datalevel, List.of(deleteCandidate), 
Ample.GcCandidateType.INUSE);
+     ample.deleteGcCandidates(datalevel, List.of(deleteCandidate), type);
  
      candidate = ample.getGcCandidates(datalevel);
  

Reply via email to