pentaho/pentaho-kettle · error · KettleException
I couldn't find Notepad with id_note=id_note in the…
Error message
I couldn't find Notepad with id_note=id_note in the repository.
What it means
loadNotePadMeta throws this KettleException when a SELECT by id_note on the R_NOTE table returns no row, meaning the note pad ID does not exist in the repository. It signals a dangling/stale reference rather than a database failure (database errors throw the sibling message at line 98).
Solutions
- Verify the id_note exists: SELECT * FROM R_NOTE WHERE ID_NOTE = <id>
- Reload the parent transformation/job from the repository to get fresh, valid note IDs
- If the note was deleted legitimately, remove/null the dangling note reference before saving
- Confirm you are connected to the same repository the ID was obtained from
Example fix
// before
NotePadMeta note = delegate.loadNotePadMeta(idNote);
// after
NotePadMeta note;
try { note = delegate.loadNotePadMeta(idNote); }
catch (KettleException e) {
log.warn("Note " + idNote + " no longer exists; skipping");
note = null; // remove stale reference from parent meta
} Defensive patterns
Strategy: try-catch
Validate before calling
RowMetaAndData row = repository.getDatabase().getOneRow("SELECT ID_NOTE FROM R_NOTE WHERE ID_NOTE = ?", idNote.longValue());
if (row == null) throw new IllegalStateException("Note " + idNote + " does not exist"); Type guard
boolean noteExists(KettleDatabaseRepository repo, ObjectId id) { try { return id != null && repo.getNotePadMeta(id) != null; } catch (Exception e) { return false; } } Try / catch
try { note = delegate.loadNotePadMeta(idNote); } catch (KettleException e) { log.warn("Note " + idNote + " not found — removing stale reference"); note = null; } Prevention
- Reload parent transformation/job metadata before relying on cached note IDs
- Catch this exception and prune dangling note references instead of failing
- Avoid sharing ObjectIds across different repositories
- Handle concurrent edits by re-reading before save
When it happens
Trigger: Calling loadNotePadMeta(id_note) with an id_note that has no corresponding row in R_NOTE — e.g. referencing a note that was deleted by another user/session, or an ID copied from an incompatible repository.
Common situations: Stale cached transformation/job metadata referencing deleted notes; two clients editing the same transformation concurrently; pointing code at a different repository than the IDs came from.
Understand the failure class
Background: Record Not Found Errors: "not found", RecordNotFound, and "was not found" — what they mean and how to fix them — this error's family across 28 libraries.
Related errors
- Unable to find job hop with ID : id_job_hop
- AutoDoc.Exception.RepositoryDirectoryNotFound
- Could not find folder [ + id + ]
- File is in the Trash. Use Save As.
- JobMeta.Exception.CanNotFindJob
AI-assisted analysis of pentaho/pentaho-kettle@f3058517a1 (2026-09-13).
Data as JSON: /api/errors/86c906fe2e966255.
Report an issue: GitHub.
Appendix: source
Thrown at engine/src/main/java/org/pentaho/di/repository/kdr/delegates/KettleDatabaseRepositoryNotePadDelegate.java:94
note.setBackGroundColorGreen( (int) r.getInteger(
"FONT_BACK_GROUND_COLOR_GREEN", NotePadMeta.COLOR_RGB_DEFAULT_BG_GREEN ) );
note.setBackGroundColorBlue( (int) r.getInteger(
"FONT_BACK_GROUND_COLOR_BLUE", NotePadMeta.COLOR_RGB_DEFAULT_BG_BLUE ) );
// Border color
note.setBorderColorRed( (int) r.getInteger(
"FONT_BORDER_COLOR_RED", NotePadMeta.COLOR_RGB_DEFAULT_BORDER_RED ) );
note.setBorderColorGreen( (int) r.getInteger(
"FONT_BORDER_COLOR_GREEN", NotePadMeta.COLOR_RGB_DEFAULT_BORDER_GREEN ) );
note.setBorderColorBlue( (int) r.getInteger(
"FONT_BORDER_COLOR_BLUE", NotePadMeta.COLOR_RGB_DEFAULT_BORDER_BLUE ) );
note.setDrawShadow( r.getBoolean( "DRAW_SHADOW", true ) );
// Done!
return note;
} else {
note.setObjectId( null );
throw new KettleException( "I couldn't find Notepad with id_note=" + id_note + " in the repository." );
}
} catch ( KettleDatabaseException dbe ) {
note.setObjectId( null );
throw new KettleException( "Unable to load Notepad from repository (id_note=" + id_note + ")", dbe );
}
}
/**
*
* @param rep
* @param id_transformation
* @throws KettleException
*/
public void saveNotePadMeta( NotePadMeta note, ObjectId id_transformation ) throws KettleException {
try {
Point location = note.getLocation();
int x = location == null ? -1 : location.x;
int y = location == null ? -1 : location.y;View on GitHub (pinned to f3058517a1)