{"record":{"id":"cd75d1404cfcf018","repo":"pentaho/pentaho-kettle","slug":"connectionfileprovider-failedloadconnectionmanager","errorCode":"ConnectionFileProvider.FailedLoadConnectionManager","errorMessage":"ConnectionFileProvider.FailedLoadConnectionManager","messagePattern":"ConnectionFileProvider\\.FailedLoadConnectionManager","errorType":"error_code","errorClass":"KettleVFSFileSystemException","httpStatus":null,"severity":"error","filePath":"core/src/main/java/org/pentaho/di/connections/vfs/provider/ConnectionFileProvider.java","lineNumber":91,"sourceCode":"    if ( !( parser instanceof ConnectionFileNameParser ) ) {\n      throw new IllegalArgumentException( \"Argument 'parser' is not an instance of 'ConnectionFileNameParser'.\" );\n    }\n\n    super.setFileNameParser( parser );\n  }\n\n  // The bowl is stored in the FileSystemOptions.\n  @NonNull\n  protected Bowl getBowl( @NonNull FileSystemOptions fileSystemOptions ) {\n    return KettleGenericFileSystemConfigBuilder.getInstance().getBowl( fileSystemOptions );\n  }\n\n  @NonNull\n  protected ConnectionManager getDefaultManager( @NonNull Bowl bowl ) throws FileSystemException {\n    try {\n      return bowl.getManager( ConnectionManager.class );\n    } catch ( KettleException e ) {\n      throw new KettleVFSFileSystemException( \"ConnectionFileProvider.FailedLoadConnectionManager\", e );\n    }\n  }\n\n  @Override\n  public Collection<Capability> getCapabilities() {\n    return capabilities;\n  }\n}\n","sourceCodeStart":73,"sourceCodeEnd":100,"githubUrl":"https://github.com/pentaho/pentaho-kettle/blob/f3058517a153da500bf4551f46d79b91bf8ec552/core/src/main/java/org/pentaho/di/connections/vfs/provider/ConnectionFileProvider.java#L73-L100","documentation":"ConnectionFileProvider.getDefaultManager() wraps any KettleException raised while asking the Bowl for the ConnectionManager into a KettleVFSFileSystemException. The VFS provider cannot function without a ConnectionManager, so the failure is fatal to any pvfs:// file operation. The original KettleException is preserved as the cause.","triggerScenarios":"Calling bowl.getManager(ConnectionManager.class) throws a KettleException — e.g. the ConnectionManager plugin fails to initialize, the Bowl/repository cannot resolve the manager class, or manager construction fails during lookup.","commonSituations":"Broken or missing connection-management plugin on the classpath; repository/Bowl misconfiguration; corrupted kettle environment where the ConnectionManager lifecycle fails at startup; running embedded without proper Kettle environment initialization.","solutions":["Inspect the wrapped KettleException cause for the real initialization failure","Verify the connection management plugin is present and loadable on the classpath","Ensure the Kettle environment (KettleEnvironment.init / Bowl setup) is fully initialized before using pvfs:// URLs","Check repository/Bowl configuration that registers ConnectionManager"],"exampleFix":"// before: using VFS before environment init\nFileObject f = KettleVFS.getInstance().getFileObject(\"pvfs://myconn/file.txt\");\n// after\nKettleEnvironment.init();\nFileObject f = KettleVFS.getInstance().getFileObject(\"pvfs://myconn/file.txt\");","handlingStrategy":"try-catch","validationCode":"// verify manager is resolvable before VFS use\ntry { bowl.getManager(ConnectionManager.class); } catch (KettleException e) { /* abort pvfs usage */ }","typeGuard":null,"tryCatchPattern":"try { resolvePvfs(); } catch (FileSystemException e) { if (e.getCause() instanceof KettleVFSFileSystemException k) { log(k.getCause()); } }","preventionTips":["Initialize KettleEnvironment before any pvfs usage","Keep connection plugin jars on the classpath","Smoke-test Bowl.getManager(ConnectionManager.class) at startup"],"tags":["vfs","connection-manager","initialization","kettle"],"backgroundTag":"module-init-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"}