apache/seatunnel · error · IllegalStateException
Missing after identity resolution.
Error message
Missing ${key} after identity resolution. What it means
EdgeAgentIdResolver.requireProperty reads a key from the identity Properties file (e.g. output.id) after identity resolution and throws IllegalStateException if the value is missing or blank. This indicates the internal identity resolution wrote/kept an id file lacking an expected key — an invariant violation rather than user input error.
Solutions
- Delete the id properties file under the install root and let identity resolution regenerate it.
- Inspect the id file and add the missing key (e.g. output.id=<value>) if regeneration is not possible.
- Ensure the agent process has write permission to the install root so the file is written fully.
Example fix
// before (corrupted id file) # empty file // after output.id=edge-agent-01
Defensive patterns
Strategy: try-catch
Validate before calling
Properties props = loadOrCreate(idFilePath);
if (!props.containsKey("output.id") || props.getProperty("output.id").trim().isEmpty()) {
Files.deleteIfExists(idFilePath); // force regeneration
} Try / catch
try {
resolverOutput = requireProperty(properties, "output.id");
} catch (IllegalStateException e) {
Files.deleteIfExists(idFilePath); // regenerate and retry once
properties = loadOrCreate(idFilePath);
resolverOutput = requireProperty(properties, "output.id");
} Prevention
- Do not hand-edit the identity properties file under the install root.
- Ensure the agent user owns write access to the install root.
- Avoid running multiple agents against the same install root concurrently.
- Delete the id file after failed/interrupted startups to force clean regeneration.
When it happens
Trigger: Calling requireProperty on a Properties object loaded from the install root id file where the requested key (e.g. output.id) is absent or whitespace-only, right after resolveAgentId ran.
Common situations: Corrupted or hand-edited id properties file under the install root; partial/failed prior write leaving an empty file; read/write permission issues causing a stale empty file to be loaded; concurrent agents racing on the same id file.
Related errors
- agent.id must be non-empty after resolution.
- Cannot fetch from another split - no split remaining.
- Checkpoint is enabled and job starts with savepoint, but…
- Could not find existing binlog information while attempting…
- ErrorSinkRowWriter is already closed
AI-assisted analysis of apache/seatunnel@cf67b549a7 (2026-09-10).
Data as JSON: /api/errors/ecb9d2907060b589.
Report an issue: GitHub.
Appendix: source
Thrown at seatunnel-edge-agent/seatunnel-edge-agent-starter/src/main/java/org/apache/seatunnel/edge/agent/starter/parse/EdgeAgentIdResolver.java:138
KEY_AGENT_ID
+ '='
+ requireProperty(properties, KEY_AGENT_ID)
+ '\n'
+ KEY_INPUT_ID
+ '='
+ requireProperty(properties, KEY_INPUT_ID)
+ '\n'
+ KEY_OUTPUT_ID
+ '='
+ requireProperty(properties, KEY_OUTPUT_ID)
+ '\n';
Files.write(idFilePath, content.getBytes(StandardCharsets.UTF_8));
}
private static String requireProperty(Properties properties, String key) {
String value = properties.getProperty(key);
if (!hasText(value)) {
throw new IllegalStateException("Missing " + key + " after identity resolution.");
}
return value.trim();
}
private static boolean hasText(String value) {
return value != null && !value.trim().isEmpty();
}
}
View on GitHub (pinned to cf67b549a7)