{"record":{"id":"c51e9a09b0fad32d","repo":"pentaho/pentaho-kettle","slug":"connectionfilesystem-failedtransformproviderfilename","errorCode":"ConnectionFileSystem.FailedTransformProviderFilename","errorMessage":"ConnectionFileSystem.FailedTransformProviderFilename","messagePattern":"ConnectionFileSystem\\.FailedTransformProviderFilename","errorType":"exception","errorClass":"KettleVFSFileSystemException","httpStatus":null,"severity":"error","filePath":"core/src/main/java/org/pentaho/di/connections/vfs/provider/ConnectionFileSystem.java","lineNumber":152,"sourceCode":"\n  @NonNull\n  protected ConnectionFileName toPvfsFileName( @NonNull FileName providerFileName, @NonNull String connectionName )\n    throws FileSystemException {\n\n    ConnectionManager locConnMgr = this.connectionManager.get();\n    if ( locConnMgr == null ) {\n      throw new KettleVFSFileSystemException( \"ConnectionFileSystem.ConnectionManagerGone\" );\n    }\n    VFSConnectionDetails details = getExistingConnectionDetails( locConnMgr, connectionName );\n\n    try {\n      initializeVariableSpace( details );\n      return vfsConnectionManagerHelper\n        .getExistingProvider( locConnMgr, details )\n        .getFileNameTransformer( locConnMgr )\n        .toPvfsFileName( providerFileName, details );\n    } catch ( IOException | KettleException e ) {\n      throw new KettleVFSFileSystemException(\n        \"ConnectionFileSystem.FailedTransformProviderFilename\",\n        e,\n        providerFileName.toString(),\n        details.getName() );\n    }\n  }\n\n  @Override\n  protected void addCapabilities( Collection<Capability> collection ) {\n    collection.addAll( ConnectionFileProvider.capabilities );\n  }\n\n  @Override\n  public FileObject resolveFile( FileName name ) throws FileSystemException {\n    try {\n      return createFile( (AbstractFileName) name );\n    } catch ( Exception e ) {\n      throw new FileSystemException( \"vfs.provider/resolve-file.error\", name, e );","sourceCodeStart":134,"sourceCodeEnd":170,"githubUrl":"https://github.com/pentaho/pentaho-kettle/blob/f3058517a153da500bf4551f46d79b91bf8ec552/core/src/main/java/org/pentaho/di/connections/vfs/provider/ConnectionFileSystem.java#L134-L170","documentation":"toPvfsFileName delegates to the connection's provider FileNameTransformer; any IOException or KettleException raised during that transformation is wrapped into a KettleVFSFileSystemException with the provider file name and connection name as message arguments. It means the provider could not translate its native path into a pvfs:// path.","triggerScenarios":"childPvfsFileName -> toPvfsFileName where the provider's getFileNameTransformer().toPvfsFileName(...) throws — e.g. the provider path doesn't match the connection's bucket/layout rules, variable initialization (IOException) fails, or the provider's transformation logic raises a KettleException.","commonSituations":"Path layouts that don't belong to the connection (mixing connections in a path); S3/GCS-style providers rejecting a path outside their bucket; variable space init failing while expanding variables in connection settings.","solutions":["Check the wrapped cause to see whether the IOException or KettleException came from the transformer or variable init","Confirm the provider file name actually belongs to the named connection (right bucket/prefix)","Verify the connection's configuration (bucket, path prefix, variables) is valid and resolvable","Test the connection in the connection dialog to validate its file-name transformation"],"exampleFix":"// before: child built from another connection's path\nFileObject child = pvfsFile.resolveFile(otherConnPath);\n// after: keep paths within the same connection\nFileObject child = pvfsFile.resolveFile(\"subdir/file.txt\");","handlingStrategy":"validation","validationCode":"// ensure the path belongs to this connection's provider before transforming\nString expectedPrefix = \"/\" + details.getName();\nif (!providerFileName.getPath().startsWith(expectedPrefix)) throw new IllegalArgumentException(\"path not in connection\");","typeGuard":null,"tryCatchPattern":"try { pvfs = toPvfsFileName(fn, conn); } catch (FileSystemException e) { /* log fn + connection name from message args, fix path/connection */ }","preventionTips":["Only build child names from paths owned by the same connection","Validate connection settings (bucket/prefix) resolve without IOException","Test connections in the UI to validate transformers"],"tags":["vfs","path-transformation","provider","connection"],"backgroundTag":"invalid-argument-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"}