apache/beam · info
Heap dump uploaded to
Error message
Heap dump {} uploaded to {} What it means
Success confirmation logged by MemoryMonitor after uploadFile completed without throwing: the local heap dump was uploaded (optionally gzip-compressed) to the remote FileSystems resource. After logging, the monitor deletes the local dump. This is informational; it confirms a previous heap dump reached its configured destination.
Solutions
- No action needed; download the dump from the logged remoteDest for analysis (e.g. with Eclipse MAT).
- If the dump appeared unexpectedly, investigate the preceding OOM/GC-thrashing logs for the memory issue.
Defensive patterns
Strategy: fallback
Prevention
- Download the dump from the logged remoteDest promptly (worker storage is ephemeral)
- Keep upload destinations organized (bucket/prefix) for post-mortem analysis
When it happens
Trigger: tryUploadHeapDumpIfItExists called uploadFile(localSource, resource, gzipCompress) which returned normally, after the dump was detected and a valid uploadFilePath was configured.
Common situations: Seen in worker logs following an OOM-triggered heap dump on Dataflow/other runners with heapDumpUploadPath set.
Related errors
- Heap dump of MB detected, attempting to upload file to
- Encountered exception creating directory for heap dumps…
- Heap dump detected but no upload directory was provided.
- Heap dumped to
- Heap dumps are requested with --enableHeapDumps but neither…
AI-assisted analysis of apache/beam@12126d8942 (2026-09-13).
Data as JSON: /api/errors/6149276ae0b7b62c.
Report an issue: GitHub.
Appendix: source
Thrown at sdks/java/harness/src/main/java/org/apache/beam/fn/harness/status/MemoryMonitor.java:352
if (localSource.exists()) {
if (uploadFilePath == null) {
LOG.warn("Heap dump {} detected but no upload directory was provided.", localSource);
} else {
String remoteDest =
String.format("%s/heap_dump%s.hprof", uploadFilePath, UUID.randomUUID());
if (gzipCompress) {
remoteDest = remoteDest + ".gz";
}
LOG.warn(
"Heap dump {} of {}MB detected, attempting to upload file to {}",
localSource,
localSource.length() / 1024 / 1024,
remoteDest);
ResourceId resource = FileSystems.matchNewResource(remoteDest, false);
try {
uploadFile(localSource, resource, gzipCompress);
uploadedHeapDump = true;
LOG.warn("Heap dump {} uploaded to {}", localSource, remoteDest);
} catch (IOException e) {
LOG.error("Error uploading heap dump to {}", remoteDest, e);
}
try {
Files.delete(localSource.toPath());
LOG.info("Deleted local heap dump {}", localSource);
} catch (IOException e) {
LOG.warn("Unable to delete local heap dump {}", localSource, e);
}
}
}
return uploadedHeapDump;
}
private void uploadFile(File srcPath, ResourceId destination, boolean gzipCompress)
throws IOException {View on GitHub (pinned to 12126d8942)