apache/hadoop · error · RuntimeException
CumulativeCpuUsageEmulatorPlugin got interrupted. Exiting.
Error message
CumulativeCpuUsageEmulatorPlugin got interrupted. Exiting.
What it means
In CumulativeCpuUsageEmulatorPlugin's midlock-adjustment loop, the plugin calls emulatorCore.compute() and Thread.sleep(100) until CPU usage reaches the progress-weighted target. If the thread is interrupted during that sleep it converts the InterruptedException into a RuntimeException with this message. Interruption here is Hadoop's normal mechanism for cancelling a task attempt, so this usually means the simulated task was killed or aborted, not that CPU emulation is broken.
Source
Thrown at hadoop-tools/hadoop-gridmix/src/main/java/org/apache/hadoop/mapred/gridmix/emulators/resourceusage/CumulativeCpuUsageEmulatorPlugin.java:285
long projectedUsage =
currentCpuUsage + (long)((1 - currentProgress) * rate);
if (projectedUsage < targetCpuUsage) {
// determine the correction factor between the current usage and the
// expected usage and add some weight to the target
long currentWeighedTarget =
(long)(targetCpuUsage
* getWeightForProgressInterval(currentProgress));
while (getCurrentCPUUsage() < currentWeighedTarget) {
emulatorCore.compute();
// sleep for 100ms
try {
Thread.sleep(100);
} catch (InterruptedException ie) {
String message =
"CumulativeCpuUsageEmulatorPlugin got interrupted. Exiting.";
throw new RuntimeException(message);
}
}
}
// set the last seen progress
lastSeenProgress = progress.getProgress();
// set the last seen usage
lastSeenCpuUsage = getCurrentCPUUsage();
}
}
}
@Override
public void initialize(Configuration conf, ResourceUsageMetrics metrics,
ResourceCalculatorPlugin monitor,
Progressive progress) {
this.monitor = monitor;
this.progress = progress;View on GitHub (pinned to 2add963021)
Solutions
- Treat the exception as expected cancellation when you intentionally killed the job; no fix needed for the simulation itself
- Raise task timeouts (mapreduce.task.timeout) so CPU-emulating tasks are not interrupted by the framework mid-emulation
- If you maintain this code, restore the interrupt flag and throw a quieter checked path instead of RuntimeException
Defensive patterns
Strategy: try-catch
Try / catch
try {
plugin.middleware... // run job with CPU emulation
} catch (RuntimeException e) {
if (e.getMessage() != null && e.getMessage().contains("got interrupted")) {
// task was cancelled (kill/abort); treat as shutdown, restore interrupt flag
Thread.currentThread().interrupt();
return;
}
throw e;
} Prevention
- Raise mapreduce.task.timeout above the longest CPU-emulation task so framework interrupts do not fire mid-emulation
- Expect these exceptions when killing gridmix runs — filter them in log analysis rather than debugging them
When it happens
Trigger: Killing/aborting the gridmix job or task attempt while a CPU-emulation map task is inside its 100ms sleep; task timeout leading the framework to interrupt the task thread; cluster shutdown interrupting running simulated tasks.
Common situations: 'hadoop job -kill' or YARN application kill during a gridmix run with resource emulation enabled (gridmix.emulators.resource-usage.plugins including the CPU plugin); long CPU-emulation tasks exceeding task timeouts; JVM reuse scenarios where interrupts leak between tasks.
Related errors
- Interrupted while copying objects (copy)
- Null IO stream
- Failed to delete temporary files while closing stream: '%s'
- Task set failed with an uncaught throwable
- Another reconfiguration task is running.
AI-assisted analysis of apache/hadoop@2add963021 (2026-08-22).
Data as JSON: /api/errors/4275e0813f0b0a48.
Report an issue: GitHub.