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

  1. Inspect the cause (UncheckedIOException.getCause()) to find the exact path and IOException, then fix file permissions or the file itself
  2. Verify the configured properties location resolves to a readable file from the working directory of the app
  3. Replace corrupted/truncated properties files and re-deploy
  4. 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

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


AI-assisted analysis of flowable/flowable-engine@d6d39ce1c6 (2026-09-11). Data as JSON: /api/errors/a9184b863bb8a13e. Report an issue: GitHub.