{"record":{"id":"e3799444aade6bb4","repo":"pentaho/pentaho-kettle","slug":"fuzzymatchmeta-exception","errorCode":null,"errorMessage":"FuzzyMatchMeta.Exception.UnexpecteErrorReadingStepInfoFromRepository","messagePattern":"FuzzyMatchMeta\\.Exception\\.UnexpecteErrorReadingStepInfoFromRepository","errorType":"exception","errorClass":"KettleException","httpStatus":null,"severity":"error","filePath":"engine/src/main/java/org/pentaho/di/trans/steps/fuzzymatch/FuzzyMatchMeta.java","lineNumber":565,"sourceCode":"      outputvaluefield = rep.getStepAttributeString( id_step, \"outputvaluefield\" );\n\n      caseSensitive = rep.getStepAttributeBoolean( id_step, \"caseSensitive\" );\n      closervalue = rep.getStepAttributeBoolean( id_step, \"closervalue\" );\n      minimalValue = rep.getStepAttributeString( id_step, \"minimalValue\" );\n      maximalValue = rep.getStepAttributeString( id_step, \"maximalValue\" );\n      separator = rep.getStepAttributeString( id_step, \"separator\" );\n\n      algorithm = getAlgorithmTypeByCode( Const.NVL( rep.getStepAttributeString( id_step, \"algorithm\" ), \"\" ) );\n\n      int nrvalues = rep.countNrStepAttributes( id_step, \"return_value_name\" );\n      allocate( nrvalues );\n\n      for ( int i = 0; i < nrvalues; i++ ) {\n        value[i] = rep.getStepAttributeString( id_step, i, \"return_value_name\" );\n        valueName[i] = rep.getStepAttributeString( id_step, i, \"return_value_rename\" );\n      }\n    } catch ( Exception e ) {\n      throw new KettleException( BaseMessages.getString(\n        PKG, \"FuzzyMatchMeta.Exception.UnexpecteErrorReadingStepInfoFromRepository\" ), e );\n    }\n  }\n\n  public void saveRep( Repository rep, IMetaStore metaStore, ObjectId id_transformation, ObjectId id_step ) throws KettleException {\n    try {\n      StreamInterface infoStream = getStepIOMeta().getInfoStreams().get( 0 );\n      rep.saveStepAttribute( id_transformation, id_step, \"lookup_from_step\", infoStream.getStepname() );\n      rep.saveStepAttribute( id_transformation, id_step, \"lookupfield\", lookupfield );\n      rep.saveStepAttribute( id_transformation, id_step, \"mainstreamfield\", mainstreamfield );\n      rep.saveStepAttribute( id_transformation, id_step, \"outputmatchfield\", outputmatchfield );\n      rep.saveStepAttribute( id_transformation, id_step, \"outputvaluefield\", outputvaluefield );\n\n      rep.saveStepAttribute( id_transformation, id_step, \"caseSensitive\", caseSensitive );\n      rep.saveStepAttribute( id_transformation, id_step, \"closervalue\", closervalue );\n      rep.saveStepAttribute( id_transformation, id_step, \"minimalValue\", minimalValue );\n      rep.saveStepAttribute( id_transformation, id_step, \"maximalValue\", maximalValue );\n      rep.saveStepAttribute( id_transformation, id_step, \"separator\", separator );","sourceCodeStart":547,"sourceCodeEnd":583,"githubUrl":"https://github.com/pentaho/pentaho-kettle/blob/f3058517a153da500bf4551f46d79b91bf8ec552/engine/src/main/java/org/pentaho/di/trans/steps/fuzzymatch/FuzzyMatchMeta.java#L547-L583","documentation":"readRep() loads the FuzzyMatch step configuration from a repository; any Exception during reading step attributes is wrapped in a KettleException with message 'FuzzyMatchMeta.Exception.UnexpecteErrorReadingStepInfoFromRepository'. It signals repository storage for the step definition could not be read, and the original exception is kept as the cause.","triggerScenarios":"readRep(rep, id_step, ...) hits exceptions when calling rep.getStepAttributeString/getStepAttributeBoolean/getStepAttributeCount — e.g. repository connection dropped mid-read, id_step no longer exists, or a JDBC/IO error while fetching 'return_value_name'/'return_value_rename' attributes.","commonSituations":"Stale or broken database repository connection; transformation deleted or modified by another user while loading; network failure to the repository database; corrupted repository tables.","solutions":["Reconnect to the repository and retry loading the transformation","Check repository database connectivity and logs (JDBC URL, credentials, network)","Verify id_step still exists: reload the transformation list; re-save if the step row is missing","Run repository maintenance/repair (e.g. re-run repo DDL check) if tables are corrupted","Load the transformation from file (.ktr) instead as a workaround"],"exampleFix":"// before\ntransMeta = new TransMeta(rep, \"MyTrans\", metaStore);\n// after (retry with fresh connection)\nrepository.disconnect();\nrepository.connect(\"user\", \"password\");\ntransMeta = new TransMeta(rep, \"MyTrans\", metaStore);","handlingStrategy":"try-catch","validationCode":"if (!repository.isConnected() || !repository.getSecurityProvider().getUserInfo().isUserSet()) {\n  throw new IllegalStateException(\"Repository not connected; reconnect before loading transformations\");\n}","typeGuard":null,"tryCatchPattern":"try {\n  meta.readRep(rep, metaStore, id_step, databases);\n} catch (KettleException e) {\n  log.error(\"Repository read failed for step \" + id_step + \": \" + e.getCause(), e);\n  repository.disconnect();\n  repository.connect(user, pass);\n  meta.readRep(rep, metaStore, id_step, databases); // retry once on fresh connection\n}","preventionTips":["Ensure repository connectivity before batch-loading transformations","Avoid deleting/modifying transformations in another session while loading","Monitor repository DB health and credentials expiry","Keep repository schema version aligned with your Pentaho version"],"tags":["repository","persistence","metadata","pentaho-kettle"],"backgroundTag":"repository-read-failed","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"}