This is an automated email from the ASF dual-hosted git repository. DomGarguilo pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/accumulo.git
commit 060561126b84989a8e3f9e808ccb3a7d918aebcb Merge: f823f0c17c e63a13ac75 Author: Dom G <[email protected]> AuthorDate: Thu Oct 8 10:55:36 2026 -0400 Merge branch '2.1' into main .../miniclusterImpl/MiniAccumuloClusterImpl.java | 43 ++++++++-------------- 1 file changed, 15 insertions(+), 28 deletions(-) diff --cc minicluster/src/main/java/org/apache/accumulo/miniclusterImpl/MiniAccumuloClusterImpl.java index a7d1a4a740,4bce23d5e9..20deaac848 --- a/minicluster/src/main/java/org/apache/accumulo/miniclusterImpl/MiniAccumuloClusterImpl.java +++ b/minicluster/src/main/java/org/apache/accumulo/miniclusterImpl/MiniAccumuloClusterImpl.java @@@ -49,7 -49,7 +49,6 @@@ import java.util.UUID import java.util.concurrent.CountDownLatch; import java.util.concurrent.ExecutionException; import java.util.concurrent.ExecutorService; - import java.util.concurrent.Future; -import java.util.concurrent.Executors; import java.util.concurrent.FutureTask; import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeoutException; @@@ -1148,36 -996,23 +1150,21 @@@ public class MiniAccumuloClusterImpl im public void stopProcessesWithTimeout(final ServerType type, final List<Process> procs, final long timeout, final TimeUnit unit) { - final List<Future<Integer>> futures = new ArrayList<>(); - for (Process proc : procs) { - futures.add(executor.submit(() -> { - proc.destroy(); - proc.waitFor(timeout, unit); - return proc.exitValue(); - })); - } + // signal all first so they stop in parallel + procs.forEach(Process::destroy); - while (!futures.isEmpty()) { - futures.removeIf(f -> { - if (f.isDone()) { - try { - f.get(); - } catch (ExecutionException | InterruptedException e) { - if (e instanceof InterruptedException) { - Thread.currentThread().interrupt(); - } - log.warn("{} did not fully stop after {} seconds", type, unit.toSeconds(timeout), e); - } - return true; - final Timer timer = Timer.startNew(); - final long timeoutNanos = unit.toNanos(timeout); ++ final CountDownTimer timer = CountDownTimer.startNew(timeout, unit); + try { + for (Process proc : procs) { - long remainingNanos = timeoutNanos - timer.elapsed(TimeUnit.NANOSECONDS); - boolean stopped = proc.waitFor(remainingNanos, TimeUnit.NANOSECONDS); ++ boolean stopped = proc.waitFor(timer.timeLeft(TimeUnit.NANOSECONDS), TimeUnit.NANOSECONDS); + if (!stopped) { + log.warn("{} (pid {}) did not fully stop after {} seconds", type, proc.pid(), + unit.toSeconds(timeout)); } - return false; - }); - try { - Thread.sleep(250); - } catch (InterruptedException e) { - log.warn("Interrupted while trying to stop " + type + " processes."); - Thread.currentThread().interrupt(); } + } catch (InterruptedException e) { + log.warn("Interrupted while trying to stop {} processes.", type); + Thread.currentThread().interrupt(); } }
