pentaho/pentaho-kettle · error · MetaStoreException
The shared objects metadata store doesn't support deleting…
Error message
The shared objects metadata store doesn't support deleting element types
What it means
Unsupported-operation sentinel in SharedObjectsMetaStore.deleteElementType(): the shared-objects metadata store is a read-only view over XML-defined shared objects, so deleting element types is refused, mirroring the same guard for create and update.
Solutions
- Do not delete element types in this metastore; delete individual elements instead via deleteElement
- Skip deletion when the metastore is SharedObjectsMetaStore
- Use a writable metastore (MemoryMetaStore etc.) for scenarios needing type lifecycle
Example fix
// before
for ( IMetaStoreElementType t : metaStore.getElementTypes( ns ) ) metaStore.deleteElementType( ns, t );
// after
if ( !( metaStore instanceof SharedObjectsMetaStore ) ) {
for ( IMetaStoreElementType t : metaStore.getElementTypes( ns ) ) metaStore.deleteElementType( ns, t );
} Defensive patterns
Strategy: validation
Validate before calling
if ( metaStore instanceof SharedObjectsMetaStore ) {
// delete elements, not types
metaStore.deleteElement( ns, elementType, elementId );
} else {
metaStore.deleteElementType( ns, elementType );
} Type guard
boolean supportsTypeDeletion = !( metaStore instanceof SharedObjectsMetaStore );
Try / catch
try {
metaStore.deleteElementType( ns, type );
} catch ( MetaStoreException e ) {
logger.warn( "Type deletion unsupported; delete individual elements instead" );
} Prevention
- For cleanup, iterate elements and delete them individually
- Skip type teardown for read-only-type metastores
- Use MemoryMetaStore in tests when type lifecycle is exercised
When it happens
Trigger: Any call to SharedObjectsMetaStore.deleteElementType(namespace, elementType), e.g. cleanup code removing types before re-creating them.
Common situations: Reset/migration scripts that rebuild metastore content from scratch; test teardown code deleting all types.
Understand the failure class
Background: UnsupportedOperationException and "is not supported" errors: when a library deliberately refuses a call — this error's family across 30 libraries.
Related errors
- Storing elements with element type name
- The shared objects metadata store doesn't support creating…
- The shared objects metadata store doesn't support creating…
- The shared objects metadata store doesn't support deleting…
- The shared objects metadata store doesn't support updating…
AI-assisted analysis of pentaho/pentaho-kettle@f3058517a1 (2026-09-13).
Data as JSON: /api/errors/23adf8128b3c3b55.
Report an issue: GitHub.
Appendix: source
Thrown at engine/src/main/java/org/pentaho/di/shared/SharedObjectsMetaStore.java:112
}
return null;
}
@Override
public void createElementType( String namespace, IMetaStoreElementType elementType ) throws MetaStoreException,
MetaStoreElementTypeExistsException {
throw new MetaStoreException( "The shared objects metadata store doesn't support creating new element types" );
}
@Override
public void updateElementType( String namespace, IMetaStoreElementType elementType ) throws MetaStoreException {
throw new MetaStoreException( "The shared objects metadata store doesn't support updating element types" );
}
@Override
public void deleteElementType( String namespace, IMetaStoreElementType elementType ) throws MetaStoreException,
MetaStoreDependenciesExistsException {
throw new MetaStoreException( "The shared objects metadata store doesn't support deleting element types" );
}
@Override
public List<IMetaStoreElement> getElements( String namespace, IMetaStoreElementType elementType ) throws MetaStoreException {
List<IMetaStoreElement> list = new ArrayList<IMetaStoreElement>();
for ( SharedObjectInterface sharedObject : sharedObjects.getObjectsMap().values() ) {
// The databases...
//
if ( sharedObject instanceof DatabaseMeta && databaseElementType.getName().equals( elementType.getName() ) ) {
list.add( DatabaseMetaStoreUtil.populateDatabaseElement( this, (DatabaseMeta) sharedObject ) );
}
}
return list;
}
@Override
public List<String> getElementIds( String namespace, IMetaStoreElementType elementType ) throws MetaStoreException {
List<String> ids = new ArrayList<String>();View on GitHub (pinned to f3058517a1)