pentaho/pentaho-kettle · error · RuntimeException
Unable to verify creation of element
Error message
Unable to verify creation of element '${element.name}' in folder: ${elementTypeFolder.path} What it means
Thrown by PurRepositoryMetaStore.createElement() as a plain RuntimeException when, after pur.createFile(...) reports success, pur.getFileById(createdFile.getId()) cannot find the new element file — i.e. creation could not be verified. It signals an inconsistent or unsupported repository response.
Solutions
- Check the cause/state via server logs for the createFile operation
- Verify the user has read permissions on the parent element-type folder
- Retry creation; check whether the file exists despite the exception
- Check server clustering/replication health
- Check PDI/Pentaho server version compatibility
Example fix
// before
metaStore.createElement( ns, elementType, element );
// after
try {
metaStore.createElement( ns, elementType, element );
} catch ( RuntimeException e ) {
if ( metaStore.getElementByName( ns, elementType, element.getName() ) == null ) {
throw e; // genuinely not created — retry or report
}
logBasic( "Element created despite verification warning" );
} Defensive patterns
Strategy: fallback
Validate before calling
IMetaStoreElementType type = metaStore.getElementTypeByName( ns, element.getElementTypeId() );
if ( type == null ) { throw new IllegalStateException( "Element type folder unavailable" ); } Try / catch
try { metaStore.createElement( ns, type, element ); } catch ( RuntimeException e ) { if ( metaStore.getElementByName( ns, type, element.getName() ) == null ) { throw e; } logBasic( "Created despite verification failure" ); } Prevention
- Re-check element existence before retrying creation
- Keep server clustering/replication healthy
- Ensure the user has both read and write on the type folder
- Keep PDI and Pentaho server versions aligned
When it happens
Trigger: Server accepts createFile but the file is immediately invisible: eventual-consistency/replication lag, permission filtering hides the new file, or a server bug/failed write returns a non-persisted id.
Common situations: Clustered BA Server with replication lag; user lacking read permission on the newly created file; server-side storage errors masked by a successful response.
Understand the failure class
Background: "This is a bug, please report it": internal invariant violations, unreachable panics, and SNH errors explained — this error's family across 47 libraries.
Related errors
- Can not create element type with id…
- folder is not available
- Namespace ' doesn't exist in the repository
- The element to update with id
- The element type ' ' could not be found in the meta store…
AI-assisted analysis of pentaho/pentaho-kettle@f3058517a1 (2026-09-13).
Data as JSON: /api/errors/d6f2540fa972d638.
Report an issue: GitHub.
Appendix: source
Thrown at plugins/pur/core/src/main/java/org/pentaho/di/repository/pur/metastore/PurRepositoryMetaStore.java:301
public void createElement( String namespace, IMetaStoreElementType elementType, IMetaStoreElement element )
throws MetaStoreException {
RepositoryFile elementTypeFolder = validateElementTypeRepositoryFolder( namespace, elementType );
RepositoryFile elementFile =
new RepositoryFile.Builder( PurRepository.checkAndSanitize( element.getName() ) ).title( element.getName() )
.versioned( false ).build();
DataNode elementDataNode = new DataNode( PurRepository.checkAndSanitize( element.getName() ) );
elementToDataNode( element, elementDataNode );
RepositoryFile createdFile =
pur.createFile( elementTypeFolder.getId(), elementFile, new NodeRepositoryFileData( elementDataNode ), null );
element.setId( createdFile.getId().toString() );
// Verify existence.
if ( pur.getFileById( createdFile.getId() ) == null ) {
throw new RuntimeException( "Unable to verify creation of element '" + element.getName() + "' in folder: "
+ elementTypeFolder.getPath() );
}
}
protected void elementToDataNode( IMetaStoreElement element, DataNode elementDataNode ) {
elementDataNode.setProperty( PROP_NAME, element.getName() );
DataNode childrenNode = elementDataNode.addNode( PROP_ELEMENT_CHILDREN );
if ( Utils.isEmpty( element.getId() ) ) {
element.setId( element.getName() );
}
attributeToDataNode( element, childrenNode );
}
protected void dataNodeToElement( DataNode dataNode, IMetaStoreElement element ) throws MetaStoreException {
DataProperty nameProperty = dataNode.getProperty( PROP_NAME );
if ( nameProperty != null ) {
element.setName( nameProperty.getString() );
}View on GitHub (pinned to f3058517a1)