pinpoint-apm/pinpoint · error · RuntimeException

IO error. Error:

Error message

IO error. Error:

What it means

Guard in ProfilerConfigLoader.loadProperties: reading the agent configuration InputStream via PropertyUtils.loadProperty threw IOException; the message prefixes the underlying I/O error text. Fires when the profiler config stream (e.g. pinpoint.config) cannot be read.

Solutions

  1. Check the appended Error: text for the real IOException cause (missing file, closed stream, permission)
  2. Verify pinpoint.config path and readability in the agent directory
  3. Ensure the InputStream passed in is open and non-null
Defensive patterns

Strategy: try-catch

When it happens

Trigger: Thrown at agent-module/bootstraps/bootstrap-core/src/main/java/com/navercorp/pinpoint/bootstrap/config/ProfilerConfigLoader.java:39 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of pinpoint-apm/pinpoint@744c3d3075 (2026-09-07). Data as JSON: /api/errors/563159da4a24c27a. Report an issue: GitHub.

Appendix: source

Thrown at agent-module/bootstraps/bootstrap-core/src/main/java/com/navercorp/pinpoint/bootstrap/config/ProfilerConfigLoader.java:39

import com.navercorp.pinpoint.common.config.util.ValueAnnotationProcessor;
import com.navercorp.pinpoint.common.util.PropertyUtils;

import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;

public class ProfilerConfigLoader {

    public static ProfilerConfig load(InputStream inputStream) {
        Properties properties = loadProperties(inputStream);
        return load(properties);
    }

    public static Properties loadProperties(InputStream inputStream) {
        try {
            return PropertyUtils.loadProperty(inputStream);
        } catch (IOException ex) {
            throw new RuntimeException("IO error. Error:" + ex.getMessage(), ex);
        }
    }

    public static ProfilerConfig load(Properties properties) {
        ValueAnnotationProcessor processor = new ValueAnnotationProcessor();

        JdbcOption jdbcOption = new DefaultJdbcOption();
        processor.process(jdbcOption, properties::getProperty);

        ProfilerConfig profilerConfig = new DefaultProfilerConfig(properties, jdbcOption);
        processor.process(profilerConfig, properties::getProperty);

        return profilerConfig;
    }
}

View on GitHub (pinned to 744c3d3075)