{"record":{"id":"9763bb9a628f513f","repo":"pentaho/pentaho-kettle","slug":"error-getting-vfs-locations-check-your-credentials-and-for","errorCode":null,"errorMessage":"Error getting VFS locations. Check your credentials and for connectivity.","messagePattern":"Error getting VFS locations\\. Check your credentials and for connectivity\\.","errorType":"exception","errorClass":"FileException","httpStatus":null,"severity":"error","filePath":"plugins/file-open-save-new/core/src/main/java/org/pentaho/di/plugins/fileopensave/providers/vfs/VFSFileProvider.java","lineNumber":266,"sourceCode":"                                    VFSConnectionDetails details )\n    throws FileException {\n\n    if ( this.roots.containsKey( getKey( fileConnectionRoot ) ) ) {\n      return this.roots.get( getKey( fileConnectionRoot ) );\n    }\n\n    List<VFSFile> files = new ArrayList<>();\n\n    List<VFSRoot> bucketRoots;\n    try {\n      VFSConnectionProvider<VFSConnectionDetails> vfsConnectionProvider =\n        vfsConnectionManagerHelper.getExistingProvider( getConnectionManager( bowl ), details );\n\n      bucketRoots = vfsConnectionProvider.getLocations( details );\n    } catch ( Exception e ) {\n      // Catching either the very unlikely undefined provider for the given details,\n      // or a RuntimeException's possibly thrown by getLocations(.) (see BACKLOG-36560)\n      throw new FileException(\n        \"Error getting VFS locations. Check your credentials and for connectivity.\", e );\n    }\n\n    if ( bucketRoots == null || bucketRoots.isEmpty() ) {\n      throw new FileNotFoundException( fileConnectionRoot.getPath(), fileConnectionRoot.getProvider() );\n    }\n\n    for ( VFSRoot bucketRoot : bucketRoots ) {\n      // Assuming bucket names do not have special characters, which should be the case,\n      // given buckets take the domain position of provider URIs.\n      ConnectionFileName bucketFileName =\n        connectionRootFileName.createChildName( bucketRoot.getName(), FileType.FOLDER );\n\n      VFSDirectory vfsDirectory = new VFSDirectory();\n      vfsDirectory.setName( bucketRoot.getName() );\n      vfsDirectory.setDate( bucketRoot.getModifiedDate() );\n      vfsDirectory.setHasChildren( true );\n      vfsDirectory.setCanAddChildren( true );","sourceCodeStart":248,"sourceCodeEnd":284,"githubUrl":"https://github.com/pentaho/pentaho-kettle/blob/f3058517a153da500bf4551f46d79b91bf8ec552/plugins/file-open-save-new/core/src/main/java/org/pentaho/di/plugins/fileopensave/providers/vfs/VFSFileProvider.java#L248-L284","documentation":"VFSFileProvider.getBuckets() resolves the VFS connection provider and asks it for the available locations (bucket roots). Any failure from getExistingProvider or getLocations (undefined provider, credential problems, network errors per BACKLOG-36560) is wrapped in this FileException telling the user to check credentials and connectivity.","triggerScenarios":"getFiles() -> getBuckets() where vfsConnectionProvider.getLocations(details) throws a RuntimeException, or getExistingProvider cannot find a provider for the given connection details.","commonSituations":"Expired or wrong cloud credentials on a VFS connection; no network/VPN to the storage backend; a saved connection whose provider plugin is not installed (undefined provider); transient backend outages.","solutions":["Verify the VFS connection's credentials in the connection manager and re-authenticate","Test network/VPN connectivity to the storage endpoint","Confirm the provider plugin for this connection type is installed and enabled","Re-open/re-save the connection details so getExistingProvider resolves a defined provider","Inspect the wrapped cause `e` for the true backend error"],"exampleFix":"// before\nFileConnectionRoot root = provider.getRoot(); // fails when offline\n// after\ntry {\n  provider.testConnection( details ); // preflight\n} catch ( FileException fe ) {\n  logError( \"Check credentials/connectivity: \" + fe.getCause() );\n  return;\n}","handlingStrategy":"try-catch","validationCode":"// preflight\ntry {\n  List<Location> roots = vfsConnectionProvider.getLocations( details );\n  if ( roots == null || roots.isEmpty() ) throw new IllegalStateException( \"No locations for connection\" );\n} catch ( Exception e ) { /* fix credentials/network before calling getFiles */ }","typeGuard":"boolean providerResolvable = vfsConnectionManagerHelper.getExistingProvider( getConnectionManager( bowl ), details ) != null;","tryCatchPattern":"try { provider.getFiles( details ); } catch ( FileException fe ) {\n  Throwable cause = fe.getCause();\n  log.error( \"VFS location lookup failed; check credentials/connectivity\", cause );\n}","preventionTips":["Validate connection credentials before browsing","Test network access to the storage endpoint","Confirm the provider plugin for the connection type is installed"],"tags":["vfs","credentials","connectivity","cloud-storage"],"backgroundTag":"missing-credentials","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"}