diff --git a/hbase-client/src/main/java/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.java b/hbase-client/src/main/java/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.java index a3c177577dfd..f4a474957a2f 100644 --- a/hbase-client/src/main/java/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.java +++ b/hbase-client/src/main/java/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.java @@ -3135,10 +3135,15 @@ GetProcedureResultResponse> call(controller, stub, .call(), (response, error) -> { if (error != null) { - LOG.warn("failed to get the procedure result procId={}", procId, - ConnectionUtils.translateException(error)); - retryTimer.newTimeout(t -> getProcedureResult(procId, converter, future, retries + 1), - ConnectionUtils.getPauseTime(pauseNs, retries), TimeUnit.NANOSECONDS); + Throwable exc = ConnectionUtils.translateException(error); + if (exc instanceof DoNotRetryIOException) { + // stop retrying on DNRIOE + future.completeExceptionally(exc); + } else { + LOG.warn("failed to get the procedure result procId={}", procId, exc); + retryTimer.newTimeout(t -> getProcedureResult(procId, converter, future, retries + 1), + ConnectionUtils.getPauseTime(pauseNs, retries), TimeUnit.NANOSECONDS); + } return; } if (response.getState() == GetProcedureResultResponse.State.RUNNING) {