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

  1. No action needed; download the dump from the logged remoteDest for analysis (e.g. with Eclipse MAT).
  2. If the dump appeared unexpectedly, investigate the preceding OOM/GC-thrashing logs for the memory issue.
Defensive patterns

Strategy: fallback

Prevention

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


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)