{"record":{"id":"85dc7c91af724208","repo":"pentaho/pentaho-kettle","slug":"transmeta-exception-85dc7c","errorCode":null,"errorMessage":"TransMeta.Exception.DatabaseErrorOccuredReadingTransformation2","messagePattern":"TransMeta\\.Exception\\.DatabaseErrorOccuredReadingTransformation2","errorType":"exception","errorClass":"KettleException","httpStatus":null,"severity":"error","filePath":"engine/src/main/java/org/pentaho/di/repository/kdr/delegates/KettleDatabaseRepositoryTransDelegate.java","lineNumber":658,"sourceCode":"          log\n            .logDetailed( BaseMessages.getString(\n              PKG, \"TransMeta.Log.LoadedTransformation\", transname, transMeta.getRepositoryDirectory().getPath() ) );\n        }\n\n        // close prepared statements, minimize locking etc.\n        //\n        repository.connectionDelegate.closeAttributeLookupPreparedStatements();\n\n        return transMeta;\n      } catch ( KettleDatabaseException e ) {\n        log.logError( BaseMessages.getString( PKG, \"TransMeta.Log.DatabaseErrorOccuredReadingTransformation\" )\n          + Const.CR + e );\n        throw new KettleException( BaseMessages.getString(\n          PKG, \"TransMeta.Exception.DatabaseErrorOccuredReadingTransformation\" ), e );\n      } catch ( Exception e ) {\n        log.logError( BaseMessages.getString( PKG, \"TransMeta.Log.DatabaseErrorOccuredReadingTransformation\" )\n          + Const.CR + e );\n        throw new KettleException( BaseMessages.getString(\n          PKG, \"TransMeta.Exception.DatabaseErrorOccuredReadingTransformation2\" ), e );\n      } finally {\n        transMeta.initializeVariablesFrom( null );\n        if ( setInternalVariables ) {\n          transMeta.setInternalKettleVariables();\n        }\n      }\n    }\n  }\n\n  /**\n   * Load the transformation name & other details from a repository.\n   */\n  private void loadRepTrans( TransMeta transMeta ) throws KettleException {\n    try {\n      RowMetaAndData r = getTransformation( transMeta.getObjectId() );\n\n      if ( r != null ) {","sourceCodeStart":640,"sourceCodeEnd":676,"githubUrl":"https://github.com/pentaho/pentaho-kettle/blob/f3058517a153da500bf4551f46d79b91bf8ec552/engine/src/main/java/org/pentaho/di/repository/kdr/delegates/KettleDatabaseRepositoryTransDelegate.java#L640-L676","documentation":"The generic (non-database) branch of the same catch structure in loadTransformation: any non-KettleDatabaseException Exception during load is wrapped in a KettleException with the TransMeta.Exception.DatabaseErrorOccuredReadingTransformation2 message. It covers unexpected runtime errors (NPEs, ClassCastExceptions, plugin issues) while deserializing transformation metadata.","triggerScenarios":"Any Exception other than KettleDatabaseException during loadTransformation, e.g. repository rows containing nulls the loader does not expect, plugin step types no longer available, or programming defects in the load path.","commonSituations":"Repository written by a newer Kettle version read with an older client; missing step plugin jars so metadata cannot be reconstructed; corrupted rows with unexpected values.","solutions":["Read the wrapped cause (e) to identify the real runtime problem (NPE, missing plugin, etc.).","Align client Kettle/Pentaho version with the repository writer version (upgrade the engine or the repository).","Install the step/job plugin jars referenced by the transformation before loading.","Manually inspect the transformation's repository rows for corrupted values."],"exampleFix":"// before\nTransMeta tm = repository.loadTransformation(name, dir, monitor, true, null);\n// after\ntry {\n  TransMeta tm = repository.loadTransformation(name, dir, monitor, true, null);\n} catch (KettleException e) {\n  if (e.getCause() instanceof KettleDatabaseException) {\n    throw e; // DB branch, different message\n  }\n  log.logError(\"Runtime problem loading transformation: \" + e.getCause(), e);\n  throw e;\n}","handlingStrategy":"try-catch","validationCode":null,"typeGuard":null,"tryCatchPattern":"try { return repository.loadTransformation(name, dir, monitor, true, null); } catch (KettleException e) { log.logError(\"Load runtime error: \" + e.getCause(), e.getCause() instanceof Exception ? (Exception) e.getCause() : e); throw e; }","preventionTips":["Keep client Kettle version in sync with the repository writer version","Install all step/job plugin jars referenced by your transformations","Avoid hand-editing repository tables","Always examine the wrapped cause — this message is only a generic wrapper"],"tags":["repository","transformation-load","runtime-error","version-mismatch"],"backgroundTag":"unexpected-response-shape","analyzedSha":"f3058517a153da500bf4551f46d79b91bf8ec552","analyzedAt":"2026-09-13T14:04:16.340Z","contentChangedAt":"2026-09-13T14:04:16.340Z","schemaVersion":2},"datasetVersion":"2026-09-20T23:17:15.980Z"}