{"record":{"id":"40925c2ab6d0a824","repo":"pentaho/pentaho-kettle","slug":"no-compression-provider-found-with-name-compressiontype","errorCode":null,"errorMessage":"No compression provider found with name = {compressionType}","messagePattern":"No compression provider found with name = (.+?)","errorType":"exception","errorClass":"KettleException","httpStatus":null,"severity":"error","filePath":"engine/src/main/java/org/pentaho/di/trans/steps/textfileoutput/TextFileOutput.java","lineNumber":102,"sourceCode":"      }\n    }\n  }\n\n  public boolean isFileExists( String filename ) throws KettleException {\n    try {\n      return getFileObject( filename, getTransMeta() ).exists();\n    } catch ( Exception e ) {\n      throw new KettleException( \"Error opening new file : \" + e.toString() );\n    }\n  }\n\n  private CompressionProvider getCompressionProvider() throws KettleException {\n    String compressionType = Const.NVL( meta.getFileCompression(), FILE_COMPRESSION_TYPE_NONE );\n\n    CompressionProvider compressionProvider = CompressionProviderFactory.getInstance().getCompressionProviderByName( compressionType );\n\n    if ( compressionProvider == null ) {\n      throw new KettleException( \"No compression provider found with name = \" + compressionType );\n    }\n\n    if ( !compressionProvider.supportsOutput() ) {\n      throw new KettleException( \"Compression provider \" + compressionType + \" does not support output streams!\" );\n    }\n    return compressionProvider;\n  }\n\n  private void initServletStreamWriter(  ) throws KettleException {\n    data.writer = null;\n    try {\n      Writer writer = getTrans().getServletPrintWriter();\n      if ( Utils.isEmpty( meta.getEncoding( ) ) ) {\n        data.writer = new WriterOutputStream( writer );\n      } else {\n        data.writer = new WriterOutputStream( writer, meta.getEncoding( ) );\n      }\n    } catch ( Exception e ) {","sourceCodeStart":84,"sourceCodeEnd":120,"githubUrl":"https://github.com/pentaho/pentaho-kettle/blob/f3058517a153da500bf4551f46d79b91bf8ec552/engine/src/main/java/org/pentaho/di/trans/steps/textfileoutput/TextFileOutput.java#L84-L120","documentation":"TextFileOutput resolves its configured file compression type via CompressionProviderFactory.getCompressionProviderByName. When no registered provider matches the configured name (after defaulting to 'None' via Const.NVL), getCompressionProvider throws this KettleException. The compression plugin is missing or the name is misspelled.","triggerScenarios":"getCompressionProvider -> compressionProvider call path with meta.getFileCompression() set to a name that no provider registers (typo like 'ZIp', or the compression plugin jar is absent from the classpath/plugins directory).","commonSituations":"Migrating transformations between installs where optional compression plugins (e.g. Hadoop Snappy/BZip2 variants) are not installed; hand-editing the ktr XML and mistyping the compression attribute; plugin not deployed on a Carte/agent node.","solutions":["Set the compression field to a registered provider name ('None', 'Zip', 'GZip', 'Hadoop-Snappy', etc.)","Deploy the missing compression plugin jar into the plugins directory and restart PDI","Log the available provider names from CompressionProviderFactory to see what is installed","Check that the ktr XML compression attribute matches the exact provider name"],"exampleFix":"// before\nmeta.setFileCompression( \"gzip\" ); // wrong case, no provider registered\n// after\nmeta.setFileCompression( \"GZip\" ); // matches registered provider name","handlingStrategy":"validation","validationCode":"String type = Const.NVL( meta.getFileCompression(), \"None\" );\nCompressionProvider p = CompressionProviderFactory.getInstance().getCompressionProviderByName( type );\nif ( p == null ) {\n  throw new IllegalArgumentException( \"Unknown compression provider: \" + type );\n}","typeGuard":null,"tryCatchPattern":"try {\n  CompressionProvider p = getCompressionProvider();\n} catch ( KettleException e ) {\n  logError( e.getMessage() + \" — available: \" + CompressionProviderFactory.getInstance().getCompressionProviderNames(), e );\n  throw e;\n}","preventionTips":["Pick compression types only from the dialog dropdown, never hand-typed","Ensure all compression plugin jars are deployed identically on every PDI node","Validate ktr XML compression attributes after hand edits or migrations"],"tags":["compression","plugin","configuration","kettle"],"backgroundTag":"invalid-enum-value","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"}