flowable/flowable-engine · critical · UncheckedIOException
Failed to create property source
Error message
Failed to create property source
What it means
BackwardsCompatiblePropertiesLoader.postProcessEnvironment wraps an IOException from reading a configured properties location and rethrows it as UncheckedIOException("Failed to create property source", ex). While unresolvable/missing locations are logged and skipped, an IOException while a resource was actually opened (read/parse failure) is treated as fatal, aborting Spring Boot startup in the environment-post-processing phase.
Source
Thrown at modules/flowable-app-rest/src/main/java/org/flowable/rest/app/properties/BackwardsCompatiblePropertiesLoader.java:80
MutablePropertySources propertySources = environment.getPropertySources();
for (String location : DEPRECATED_LOCATIONS) {
try {
Resource resource = resourceLoader.getResource(location);
PropertySource<?> propertySource = DEFAULT_PROPERTY_SOURCE_FACTORY.createPropertySource(null, new EncodedResource(resource));
if (propertySources.contains(propertySource.getName())) {
propertySources.replace(propertySource.getName(), propertySource);
} else {
propertySources.addLast(propertySource);
}
logger.warn("Using deprecated property source {} please switch to using Spring Boot externalized configuration", propertySource);
} catch (IllegalArgumentException | FileNotFoundException | UnknownHostException ex) {
// We are always ignoring the deprecated resources. This is done in the same way as in the Spring ConfigurationClassParsers
// Placeholders not resolvable or resource not found when trying to open it
if (logger.isInfoEnabled()) {
logger.info("Properties location [{}] not resolvable: {}", location, ex.getMessage());
}
} catch (IOException ex) {
throw new UncheckedIOException("Failed to create property source", ex);
}
}
}
@Override
public int getOrder() {
return order;
}
}
View on GitHub (pinned to d6d39ce1c6)
Solutions
- Inspect the cause (UncheckedIOException.getCause()) to find the exact path and IOException, then fix file permissions or the file itself
- Verify the configured properties location resolves to a readable file from the working directory of the app
- Replace corrupted/truncated properties files and re-deploy
- If the location is optional, point the configuration at an existing readable resource or remove the location
Example fix
# before --flowable.rest.app.properties-location=file:/etc/flowable/rest.properties # unreadable # after chmod 644 /etc/flowable/rest.properties java -jar app.jar --flowable.rest.app.properties-location=file:/etc/flowable/rest.properties
Defensive patterns
Strategy: try-catch
Validate before calling
java.nio.file.Path p = java.nio.file.Path.of(locationPath);
if (!java.nio.file.Files.isReadable(p)) {
throw new IllegalStateException("Properties location not readable: " + p);
} Try / catch
try {
SpringApplication.run(App.class, args);
} catch (UncheckedIOException e) {
if ("Failed to create property source".equals(e.getMessage())) {
logger.error("Properties location unreadable: {}", e.getCause().getMessage(), e);
}
throw e;
} Prevention
- Verify file permissions and existence of configured properties locations before deployment
- Mount Docker volumes with correct read access for the app user
- Test Spring Boot startup in an environment mirroring production mounts
When it happens
Trigger: spring.config.location / flowable.properties location pointing at a resource that exists but cannot be read: permission problems, malformed stream, IO error mid-read, or a broken file handle when the loader builds the PropertySource.
Common situations: Deployments where the properties file has wrong file permissions or is a directory; Docker volumes mounting an unreadable path; corrupted or mid-write properties file at boot.
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
- Could not find an implementation of the org.flowable.cdi.spi
- couldn't open resource stream: {errorMessage}
- Cannot read EL properties
- Failed to read ${PROPERTY_NAME}
- EventRegistryEngineConfiguration is required
AI-assisted analysis of flowable/flowable-engine@d6d39ce1c6 (2026-09-11).
Data as JSON: /api/errors/a9184b863bb8a13e.
Report an issue: GitHub.