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
- Verify the section name in the step dialog matches a header in the INI file exactly (case-sensitive)
- Open the file at the message-reported path and confirm the section exists
- Handle per-environment files by variable-izing the section name or generating complete files
- 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
- Keep section names in the step config exactly matching file headers (case-sensitive)
- Template INI files so every environment variant contains the required sections
- Validate INI files with a lightweight check job before the transformation runs
- Use a variable for the section name when file layouts vary by environment
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
- A connection of type PALO is expected
- A connection of type PALO is expected
- A deadlock was detected between steps
- A server socket allocation always has to accompanied by a…
- A server socket allocation always has to accompanied by a…
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)