/** {@inheritDoc} */ @Override public void stop() { busyLock.block(); // Clear interrupted flag temporarily. boolean interrupted = Thread.interrupted(); // Force all workers to finish their batches. for (GridGgfsFileWorker w : workerMap.values()) w.cancel(); // Wait for all writers to finish their execution. for (GridGgfsFileWorker w : workerMap.values()) { try { w.join(); } catch (InterruptedException e) { U.error(log, e.getMessage(), e); } } workerMap.clear(); if (secondaryFs instanceof AutoCloseable) U.closeQuiet((AutoCloseable)secondaryFs); ggfsCtx.kernalContext().io().removeMessageListener(topic, delMsgLsnr); ggfsCtx.kernalContext().event().removeLocalEventListener(delDiscoLsnr); if (interrupted) Thread.currentThread().interrupt(); }
/** {@inheritDoc} */ @Override public void stop() { busyLock.block(); // Clear interrupted flag temporarily. boolean interrupted = Thread.interrupted(); // Force all workers to finish their batches. for (GridGgfsFileWorker w : workerMap.values()) w.cancel(); // Wait for all writers to finish their execution. for (GridGgfsFileWorker w : workerMap.values()) { try { w.join(); } catch (InterruptedException e) { U.error(log, e.getMessage(), e); } } workerMap.clear(); if (secondaryFs instanceof AutoCloseable) U.closeQuiet((AutoCloseable)secondaryFs); ggfsCtx.kernalContext().io().removeMessageListener(topic, delMsgLsnr); ggfsCtx.kernalContext().event().removeLocalEventListener(delDiscoLsnr); if (interrupted) Thread.currentThread().interrupt(); }