apache/seatunnel · warning
Log file content is empty, get log path : %s
Error message
Log file content is empty, get log path : %s
What it means
Logged when the servlet attempts to read a log file and a SeaTunnelRuntimeException with empty content is thrown, meaning the resolved log file exists at the path but has no readable content. The servlet responds with HTTP 400.
Source
Thrown at seatunnel-engine/seatunnel-engine-server/src/main/java/org/apache/seatunnel/engine/server/rest/servlet/LogBaseServlet.java:78
String canonicalFilePath = new File(logFilePath).getCanonicalPath();
if (!canonicalFilePath.startsWith(canonicalLogDir + File.separator)
&& !canonicalFilePath.equals(canonicalLogDir)) {
resp.setStatus(HttpServletResponse.SC_BAD_REQUEST);
log.warn(
"Path traversal attempt blocked - Requested: {}, Resolved: {}, LogDir: {}",
logName,
canonicalFilePath,
canonicalLogDir);
return;
}
String logContent = FileUtils.readFileToStr(new File(canonicalFilePath).toPath());
write(resp, logContent);
} catch (IOException e) {
resp.setStatus(HttpServletResponse.SC_BAD_REQUEST);
log.warn("Failed to resolve log file path: {}, error: {}", logFilePath, e.getMessage());
} catch (SeaTunnelRuntimeException e) {
resp.setStatus(HttpServletResponse.SC_BAD_REQUEST);
log.warn(String.format("Log file content is empty, get log path : %s", logFilePath));
}
}
}
View on GitHub (pinned to cf67b549a7)
Solutions
- Wait until the node has written output and retry the log request
- Verify the correct node name — request logs from the specific worker that ran the job
- Check the log file on disk directly (ls -la on the log dir) to confirm whether it is 0 bytes
- Inspect the actual cause in server logs; this message hides the underlying error detail
Defensive patterns
Strategy: retry
Validate before calling
// give a freshly started node time to write logs before requesting await new Promise(r => setTimeout(r, 5000));
Try / catch
try {
const resp = await fetch(baseUrl + '/log/' + node);
if (resp.status === 400) {
const body = await resp.text();
if (body.includes('empty')) { /* retry later or read file on disk */ }
}
} catch (e) { /* handle network errors */ } Prevention
- Don't request logs immediately after node startup; add a small delay
- Verify the node actually produced output before fetching its log
- Check log rotation settings to avoid zero-byte truncated files
- When persistent, read the file directly on the host to compare with the REST result
When it happens
Trigger: Requesting a log endpoint for a log file that is empty (0 bytes) — e.g. a worker log created but nothing written yet, or a read returning empty content wrapped in SeaTunnelRuntimeException.
Common situations: Requesting a freshly started node's log before any output; a log rotated/truncated to zero; requesting a log file that was created on a node whose log path differs from the master's.
Understand the failure class
Background: "failed to read file", EACCES, ENOENT and "could not read <path>" errors: when a program can't read a file from disk — this error's family across 49 libraries.
Related errors
- GET {} -> HTTP {}
- Ignored malformed cluster health metrics token(s) from membe
- Logger level request to member {} failed
- Log file name get failed, get log path: {}
- Log file path is empty, no log file path configured in the c
AI-assisted analysis of apache/seatunnel@cf67b549a7 (2026-09-10).
Data as JSON: /api/errors/2f692db09062071d.
Report an issue: GitHub.