pentaho/pentaho-kettle · error · FileSystemException
vfs.provider/resolve-file.error
vfs.provider/resolve-file.error
Error message
vfs.provider/resolve-file.error
What it means
This is ConnectionFileSystem's public resolveFile(FileName) wrapper: any Exception escaping createFile (including the KettleVFSFileSystemException guards above) is rethrown as a standard VFS FileSystemException with code 'vfs.provider/resolve-file.error'. It is a generic VFS-level resolution failure for pvfs:// names.
Solutions
- Unwrap the cause chain — the specific KettleVFSFileSystemException code is the real reason
- Verify the pvfs URL and referenced connection exist before resolving
- Confirm the ConnectionManager is alive and the filesystem is initialized
- Catch FileSystemException and inspect getCause() to branch on the specific error code
Example fix
// before
FileObject f = fs.resolveFile(name); // opaque failure
// after
try {
FileObject f = fs.resolveFile(name);
} catch (FileSystemException e) {
Throwable root = e.getCause();
if (root instanceof KettleVFSFileSystemException) { /* handle specific code */ }
throw e;
} Defensive patterns
Strategy: try-catch
Validate before calling
boolean connExists = connectionManager.getExistingDetails(connName) != null; // check before resolveFile
Try / catch
try { fo = fs.resolveFile(name); } catch (FileSystemException e) { Throwable c = e.getCause(); while (c != null && !(c instanceof KettleVFSFileSystemException)) c = c.getCause(); } Prevention
- Always unwrap the cause chain to find the specific error code
- Pre-validate pvfs URLs and connection existence
- Centralize pvfs resolution in one guarded helper
When it happens
Trigger: Calling resolveFile on a pvfs name when createFile throws — dead ConnectionManager, unknown connection, transformation failure, or any other exception in file object construction.
Common situations: Generic catch-all seen in logs when pvfs resolution fails for any reason; developers often see this code instead of the more specific cause nested inside.
Understand the failure class
Background: "File not found" and ENOENT errors: why libraries can't find a file that should exist — this error's family across 50 libraries.
Related errors
- AbstractFileErrorHandler.Exception.CouldNotCreateFileErrorHandlerForFile
- Append file in repository is not possible
- [ + ArgList[0] + ] is not a file!
- [ + ArgList[0] + ] is not a folder!
- Argument 'name' is not the PVFS root.
AI-assisted analysis of pentaho/pentaho-kettle@f3058517a1 (2026-09-13).
Data as JSON: /api/errors/f5872347585c5337.
Report an issue: GitHub.
Appendix: source
Thrown at core/src/main/java/org/pentaho/di/connections/vfs/provider/ConnectionFileSystem.java:170
throw new KettleVFSFileSystemException(
"ConnectionFileSystem.FailedTransformProviderFilename",
e,
providerFileName.toString(),
details.getName() );
}
}
@Override
protected void addCapabilities( Collection<Capability> collection ) {
collection.addAll( ConnectionFileProvider.capabilities );
}
@Override
public FileObject resolveFile( FileName name ) throws FileSystemException {
try {
return createFile( (AbstractFileName) name );
} catch ( Exception e ) {
throw new FileSystemException( "vfs.provider/resolve-file.error", name, e );
}
}
// region Helpers
@NonNull
protected Bowl getBowl() {
return KettleGenericFileSystemConfigBuilder.getInstance().getBowl( getFileSystemOptions() );
}
@NonNull
protected IKettleVFS getKettleVFS() {
return KettleVFS.getInstance( getBowl() );
}
@NonNull
private VFSConnectionDetails getExistingConnectionDetails( @NonNull ConnectionManager manager, @NonNull String connectionName )
throws KettleVFSFileSystemException {
try {View on GitHub (pinned to f3058517a1)