Briefly, this error occurs when Elasticsearch is shutting down but is waiting for the reaper thread to finish its tasks. The reaper thread is responsible for cleaning up resources when a JVM process ends. This could be due to a slow shutdown process or a stuck thread. To resolve this issue, you can try to increase the timeout settings for the shutdown process. If the problem persists, you may need to investigate if there are any long-running tasks that are causing the reaper thread to hang, and optimize these tasks or adjust their settings.
This guide will help you check for common problems that cause the log ” Waiting for reaper to exit normally ” to appear. To understand the issues related to this log, read the explanation below about the following Elasticsearch concepts: .
Log Context
Log “Waiting for reaper to exit normally” classname is ReaperService.java.
We extracted the following from Elasticsearch source code for those seeking an in-depth context :
void shutdown() { if (reaperProcess != null) { ensureReaperAlive(); try { reaperProcess.getOutputStream().close(); logger.info("Waiting for reaper to exit normally"); if (reaperProcess.waitFor() != 0) { Path inputDir = getParameters().getInputDir().get().getAsFile().toPath(); throw new GradleException("Reaper process failed. Check log at " + inputDir.resolve("reaper.log") + " for details"); } } catch (Exception e) {