apache/seatunnel · error · IllegalArgumentException
init file storage properties is empty
Error message
init file storage properties is empty
What it means
checkInitStorageProperties rejects initialization when the properties map passed to IMapFileStorage.initialize() is null or empty. The file-based IMap storage needs at least the business key and cluster name to locate its WAL directory, so empty properties are fatal at init time.
Solutions
- Add the required storage properties (business key and cluster name) to the engine storage config.
- Check that seatunnel.yaml actually contains the imap file storage section and was picked up by the running process.
- When initializing programmatically, populate the map with at least BUSINESS_KEY and CLUSTER_NAME before calling initialize.
Example fix
// before
Map<String, Object> props = new HashMap<>();
storage.initialize(props);
// after
Map<String, Object> props = new HashMap<>();
props.put("storage.businessKey", "seatunnel");
props.put("cluster.name", "seatunnel-cluster");
storage.initialize(props); Defensive patterns
Strategy: validation
Validate before calling
if (properties == null || properties.isEmpty()) {
throw new IllegalStateException("imap file storage properties must not be empty");
} Try / catch
try { storage.initialize(props); } catch (IllegalArgumentException e) { /* fix seatunnel.yaml storage section and re-init */ } Prevention
- Keep the imap storage block present in every environment's seatunnel.yaml
- Validate storage config in CI/deployment scripts
- Fail fast on empty maps before calling initialize
When it happens
Trigger: Calling IMapStorageFactory.create()/initialize() with a null or empty properties map — e.g. seatunnel.yaml storage stanza missing, or programmatic creation with new HashMap<>().
Common situations: Incomplete seatunnel.yaml map storage configuration section; environment-specific config file not deployed; copy-paste dropped the imap-storage block.
Understand the failure class
Background: "X is required", "must be set", "cannot be empty": the missing-required-config error family, from Vertex AI project/location to WeChat keys — this error's family across 18 libraries.
Related errors
- AmazonDocumentDB option '' must be a valid BSON/JSON…
- AmazonDocumentDB option '' must not be blank
- ${CommonError.convertToConnectorPropsBlankError(Paimon…
- Condition operator must not be null
- CONFIG_VALIDATION_FAILED
AI-assisted analysis of apache/seatunnel@cf67b549a7 (2026-09-10).
Data as JSON: /api/errors/a5fc977543239dba.
Report an issue: GitHub.
Appendix: source
Thrown at seatunnel-engine/seatunnel-engine-storage/imap-storage-plugins/imap-storage-file/src/main/java/org/apache/seatunnel/engine/imap/storage/file/IMapFileStorage.java:356
try {
if (requestFuture.isDone() || Boolean.TRUE.equals(requestFuture.get())) {
success = true;
}
} catch (Exception e) {
log.error("wait for write status error", e);
} finally {
RequestFutureCache.remove(entry.getKey());
}
if (!success) {
failures.add(entry.getValue());
}
}
return failures;
}
private void checkInitStorageProperties(Map<String, Object> properties) {
if (properties == null || properties.isEmpty()) {
throw new IllegalArgumentException("init file storage properties is empty");
}
List<String> requiredProperties = Arrays.asList(BUSINESS_KEY, CLUSTER_NAME);
for (String requiredProperty : requiredProperties) {
if (!properties.containsKey(requiredProperty)) {
throw new IllegalArgumentException(
"init file storage properties is not contains " + requiredProperty);
}
}
}
}
View on GitHub (pinned to cf67b549a7)