pentaho/pentaho-kettle · error · MetaStoreException
The shared objects metadata store doesn't support creating…
Error message
The shared objects metadata store doesn't support creating new element types
What it means
SharedObjectsMetaStore derives element types from fixed defaults (e.g. the database element type); users cannot register new element types, so createElementType() always throws MetaStoreException. The set of element types is fixed by what the shared-objects file can represent.
Solutions
- Do not create custom element types in the shared-objects metastore; use the built-in types returned by getElementTypes
- Switch to MemoryMetaStore, PentahoMetaStore, or a database metastore for custom types
- Restructure code to detect an unwritable metastore and skip type creation
Example fix
// before
metaStore.createElementType( ns, myType );
// after
if ( metaStore instanceof SharedObjectsMetaStore ) {
throw new IllegalArgumentException( "Custom element types unsupported; use built-in types" );
}
metaStore.createElementType( ns, myType ); Defensive patterns
Strategy: validation
Validate before calling
boolean supportsCustomTypes = !( metaStore instanceof SharedObjectsMetaStore );
if ( !supportsCustomTypes ) {
// verify the type already exists instead of creating it
boolean exists = metaStore.getElementTypes( namespace ).stream()
.anyMatch( t -> t.getName().equals( elementType.getName() ) );
} Type guard
boolean isReadOnlyTypeStore = metaStore instanceof SharedObjectsMetaStore;
Try / catch
try {
metaStore.createElementType( ns, type );
} catch ( MetaStoreException e ) {
logger.warn( "Cannot create element type {} in this metastore; using built-in types", type.getName() );
} Prevention
- Discover existing types with getElementTypes() instead of creating new ones
- Route custom-type storage to MemoryMetaStore or a DB-backed metastore
- Design plugins to degrade gracefully when the metastore is type-locked
When it happens
Trigger: Any call to SharedObjectsMetaStore.createElementType(namespace, elementType), e.g. generic metastore provisioning of custom element types.
Common situations: Porting code that used MemoryMetaStore to define custom types (governance metadata, custom models) to the shared-objects metastore; plugins assuming a fully writable metastore.
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 deleting…
- 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/a0c8d9e7f6c13c33.
Report an issue: GitHub.
Appendix: source
Thrown at engine/src/main/java/org/pentaho/di/shared/SharedObjectsMetaStore.java:101
return databaseElementType;
}
return null;
}
@Override
public IMetaStoreElementType getElementTypeByName( String namespace, String elementTypeName ) throws MetaStoreException {
for ( IMetaStoreElementType elementType : getElementTypes( namespace ) ) {
if ( elementType.getName() != null && elementType.getName().equalsIgnoreCase( elementTypeName ) ) {
return elementType;
}
}
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...View on GitHub (pinned to f3058517a1)