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

  1. Do not delete element types in this metastore; delete individual elements instead via deleteElement
  2. Skip deletion when the metastore is SharedObjectsMetaStore
  3. 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

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


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)