This is an automated email from the ASF dual-hosted git repository.
kturner pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/accumulo.git
The following commit(s) were added to refs/heads/main by this push:
new 84f38d031a Fixes NPE in compactor when reporting failure (#5754)
84f38d031a is described below
commit 84f38d031a5cf74c2d2b50b91178848d92d05324
Author: Keith Turner <[email protected]>
AuthorDate: Thu Jul 24 15:32:17 2025 -0400
Fixes NPE in compactor when reporting failure (#5754)
When a compaction was interrupted the compactor would experience a NPE
when trying to report the failure to the manager. This was causing a few
ITs that check that split cancels a compacton to fail.
---
.../src/main/java/org/apache/accumulo/compactor/Compactor.java | 9 ++++-----
1 file changed, 4 insertions(+), 5 deletions(-)
diff --git
a/server/compactor/src/main/java/org/apache/accumulo/compactor/Compactor.java
b/server/compactor/src/main/java/org/apache/accumulo/compactor/Compactor.java
index 97e0561e4d..8cd85d40fa 100644
---
a/server/compactor/src/main/java/org/apache/accumulo/compactor/Compactor.java
+++
b/server/compactor/src/main/java/org/apache/accumulo/compactor/Compactor.java
@@ -487,17 +487,16 @@ public class Compactor extends AbstractServer implements
MetricsProducer, Compac
* Notify the CompactionCoordinator the job failed
*
* @param job current compaction job
- * @param exception cause of failure
* @throws RetriesExceededException thrown when retries have been exceeded
*/
- protected void updateCompactionFailed(TExternalCompactionJob job, Throwable
exception)
+ protected void updateCompactionFailed(TExternalCompactionJob job, String
cause)
throws RetriesExceededException {
RetryableThriftCall<String> thriftCall =
new RetryableThriftCall<>(1000, RetryableThriftCall.MAX_WAIT_TIME, 25,
() -> {
Client coordinatorClient = getCoordinatorClient();
try {
coordinatorClient.compactionFailed(TraceUtil.traceInfo(),
getContext().rpcCreds(),
- job.getExternalCompactionId(), job.extent,
exception.getClass().getName());
+ job.getExternalCompactionId(), job.extent, cause);
return "";
} finally {
ThriftUtil.returnClient(coordinatorClient, getContext());
@@ -956,7 +955,7 @@ public class Compactor extends AbstractServer implements
MetricsProducer, Compac
new TCompactionStatusUpdate(TCompactionState.CANCELLED,
"Compaction cancelled",
-1, -1, -1, fcr.getCompactionAge().toNanos());
updateCompactionState(job, update);
- updateCompactionFailed(job, null);
+ updateCompactionFailed(job,
InterruptedException.class.getName());
cancelled.incrementAndGet();
} catch (RetriesExceededException e) {
LOG.error("Error updating coordinator with compaction
cancellation.", e);
@@ -972,7 +971,7 @@ public class Compactor extends AbstractServer implements
MetricsProducer, Compac
TCompactionState.FAILED, "Compaction failed due to: " +
err.get().getMessage(),
-1, -1, -1, fcr.getCompactionAge().toNanos());
updateCompactionState(job, update);
- updateCompactionFailed(job, err.get());
+ updateCompactionFailed(job, err.get().getClass().getName());
failed.incrementAndGet();
errorHistory.addError(fromThriftExtent.tableId(), err.get());
} catch (RetriesExceededException e) {