{"record":{"id":"d0259094ae619c8d","repo":"pentaho/pentaho-kettle","slug":"pgpdecryptstream-error-datatodecryptempty","errorCode":null,"errorMessage":"PGPDecryptStream.Error.DataToDecryptEmpty","messagePattern":"PGPDecryptStream\\.Error\\.DataToDecryptEmpty","errorType":"exception","errorClass":"KettleException","httpStatus":null,"severity":"error","filePath":"engine/src/main/java/org/pentaho/di/trans/steps/pgpdecryptstream/PGPDecryptStream.java","lineNumber":129,"sourceCode":"\n      // allocate output row\n      Object[] outputRow = RowDataUtil.allocateRowData( data.outputRowMeta.size() );\n      for ( int i = 0; i < data.NrPrevFields; i++ ) {\n        outputRow[i] = r[i];\n      }\n\n      if ( meta.isPassphraseFromField() ) {\n        data.passPhrase = data.previousRowMeta.getString( r, data.indexOfPassphraseField );\n        if ( Utils.isEmpty( data.passPhrase ) ) {\n          throw new KettleException( BaseMessages.getString( PKG, \"PGPDecryptStream.Error.PassphraseMissing\" ) );\n        }\n      }\n      // get stream, data to decrypt\n      String encryptedData = data.previousRowMeta.getString( r, data.indexOfField );\n\n      if ( Utils.isEmpty( encryptedData ) ) {\n        // no data..we can not continue with this row\n        throw new KettleException( BaseMessages.getString( PKG, \"PGPDecryptStream.Error.DataToDecryptEmpty\" ) );\n      }\n\n      // let's decrypt data\n      String decryptedData = data.gpg.decrypt( encryptedData, data.passPhrase );\n\n      // Add encrypted data to input stream\n      outputRow[data.NrPrevFields] = decryptedData;\n\n      // add new values to the row.\n      putRow( data.outputRowMeta, outputRow ); // copy row to output rowset(s);\n\n      if ( log.isRowLevel() ) {\n        logRowlevel( BaseMessages.getString( PKG, \"PGPDecryptStream.LineNumber\", getLinesRead()\n          + \" : \" + getInputRowMeta().getString( r ) ) );\n      }\n    } catch ( Exception e ) {\n      if ( getStepMeta().isDoingErrorHandling() ) {\n        sendToErrorRow = true;","sourceCodeStart":111,"sourceCodeEnd":147,"githubUrl":"https://github.com/pentaho/pentaho-kettle/blob/f3058517a153da500bf4551f46d79b91bf8ec552/engine/src/main/java/org/pentaho/di/trans/steps/pgpdecryptstream/PGPDecryptStream.java#L111-L147","documentation":"Message key PGPDecryptStream.Error.DataToDecryptEmpty thrown in processRow: the string read from the stream field as the data to decrypt is null/empty, so there is nothing to feed the PGP decryption routine.","triggerScenarios":"Thrown at engine/src/main/java/org/pentaho/di/trans/steps/pgpdecryptstream/PGPDecryptStream.java:129 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Filter or handle rows whose encrypted-data field is empty before this step","Verify the upstream field name and that it actually contains ciphertext"],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"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"}