pentaho/pentaho-kettle · error · KettleException

PropertyInput.Error.CanNotFindSection

Error message

PropertyInput.Error.CanNotFindSection

What it means

In loadIniFile(), PropertyInput throws this when the configured INI section (data.realSection) is not found in the parsed INI file — ini4j's getSection returns null. It means the expected section header is absent from the current file.

Solutions

  1. Verify the section name in the step dialog matches a header in the INI file exactly (case-sensitive)
  2. Open the file at the message-reported path and confirm the section exists
  3. Handle per-environment files by variable-izing the section name or generating complete files
  4. Inspect the wrapped cause and data.file.getName() in the message to confirm which file failed

Example fix

// before: section missing in file
// step section = "databse" (typo), file has [database]
meta.setSection("database");
// after: exact match with file
// file content: [database]\nurl=...
meta.setSection("database");
Defensive patterns

Strategy: validation

Validate before calling

org.ini4j.Ini ini = new org.ini4j.Ini(new File(iniPath));
if (ini.getSection(sectionName) == null) {
  throw new IllegalStateException("Section [" + sectionName + "] missing in " + iniPath);
}

Try / catch

try {
  transformation.execute(params);
} catch (KettleException e) {
  if (e.getMessage() != null && e.getMessage().contains("CanNotFindSection")) {
    logError("INI section missing: " + e.getMessage());
  } else { throw e; }
}

Prevention

When it happens

Trigger: The step's 'Section' value names a section that the current INI file does not contain (e.g. [database] missing), possibly due to an empty file, wrong section name, or the wrong file being processed.

Common situations: Typo or case mismatch in the section name; INI file variant per environment lacking the section; file truncated; step configured for a different file layout than the actual data.

Understand the failure class

Background: 'Could not be found', 'does not exist', 'not found in database': the resource-not-found family when an ID, slug, key, or URI lookup comes back empty — this error's family across 20 libraries.

Related errors


AI-assisted analysis of pentaho/pentaho-kettle@f3058517a1 (2026-09-13). Data as JSON: /api/errors/5cdcfd216edc2eff. Report an issue: GitHub.

Appendix: source

Thrown at engine/src/main/java/org/pentaho/di/trans/steps/propertyinput/PropertyInput.java:473

   * @throws ConfigurationException
   * @throws IOException
   */
  private void loadIniFile() throws ConfigurationException, IOException, KettleException {
    data.iniConf = new INIConfiguration();
    FileHandler handler = new FileHandler( data.iniConf );

    try ( InputStream inputStream = KettleVFS.getInputStream( data.file ) ) {
      if ( !Utils.isEmpty( data.realEncoding ) ) {
        handler.setEncoding( data.realEncoding );
      }
      handler.load( inputStream );
      Set<String> sections = data.iniConf.getSections();

      if ( data.realSection != null ) {
        // just one section
        data.iniSection = data.iniConf.getSection( data.realSection );
        if ( data.iniSection == null ) {
          throw new KettleException(
            BaseMessages.getString( PKG, "PropertyInput.Error.CanNotFindSection", data.realSection,
              "" + data.file.getName() ) );
        }
      } else {
        // We need to fetch all sections
        data.iniSectionIt = sections.iterator();
        data.currentSection = data.iniSectionIt.next();
        data.iniSection = data.iniConf.getSection( data.currentSection );
      }
      data.iniIt = data.iniSection.getKeys();
    }
  }

  /**
   * Build an empty row based on the meta-data...
   *
   * @return an empty row with the correct size
   */

View on GitHub (pinned to f3058517a1)