pentaho/pentaho-kettle · warning · UnsupportedOperationException
This connection file object does not support this operation
Error message
This connection file object does not support this operation: '%s'
What it means
ConnectionFileObject.getAELSafeURIString is expected to return a URI string that is safe for use with the Adaptive Execution Layer (AEL/Spark), where certain URI forms are not supported. Connection file objects do not implement an AEL-safe representation, so the method deliberately throws UnsupportedOperationException embedding the file's original URI. This is an explicit not-supported marker, not a bug.
Solutions
- Use getOriginalURIString() (or getName().toString()) when you need the connection URI as-is.
- Guard calls with a check that the FileObject is not a ConnectionFileObject before invoking getAELSafeURIString.
- Resolve the underlying non-pvfs file (via the connection provider) and call getAELSafeURIString on that object instead.
- Catch UnsupportedOperationException and fall back to the original URI string if AEL-safe conversion is best-effort.
Example fix
// before String uri = fileObject.getAELSafeURIString(); // after String uri = ( fileObject instanceof ConnectionFileObject ) ? fileObject.getOriginalURIString() : fileObject.getAELSafeURIString();
Defensive patterns
Strategy: try-catch
Validate before calling
if ( fileObject instanceof ConnectionFileObject ) {
uri = fileObject.getOriginalURIString();
} Type guard
boolean supportsAelSafeUri( FileObject fo ) {
return !( fo instanceof ConnectionFileObject );
} Try / catch
String uri;
try {
uri = fileObject.getAELSafeURIString();
} catch ( UnsupportedOperationException e ) {
uri = fileObject.getName().toString(); // fall back to original URI
} Prevention
- Use instanceof checks before generic getAELSafeURIString calls
- Prefer getOriginalURIString for connection (pvfs) files
- In AEL pipelines, resolve pvfs files to their backing file system before URI conversion
When it happens
Trigger: Calling getAELSafeURIString() on any ConnectionFileObject obtained from a PVFS connection file system — typically code paths that generically call getAELSafeURIString on arbitrary FileObject instances during AEL transformation of file references.
Common situations: Running a transformation on the adaptive execution layer where metadata resolves to a connection (pvfs) file; framework code converting all FileObjects to AEL-safe URIs without checking the file system type.
Understand the failure class
Background: UnsupportedOperationException and "is not supported" errors: when a library deliberately refuses a call — this error's family across 30 libraries.
Related errors
- Append file in repository is not possible
- Cannot add converters
- ConnectionFileObject.ConnectionWithBucketsRoot.UnsupportedOperation
- ConnectionFileObject.PVFSRoot.UnsupportedOperation
- CsvInput.Log.OnlyLocalFilesAreSupported
AI-assisted analysis of pentaho/pentaho-kettle@f3058517a1 (2026-09-13).
Data as JSON: /api/errors/e2da9c789eeec0b4.
Report an issue: GitHub.
Appendix: source
Thrown at core/src/main/java/org/pentaho/di/connections/vfs/provider/ConnectionFileObject.java:241
/**
* Gets the resolved file object, throwing if it is not available.
* <p>
* Implementers of this method should throw an exception that makes it clear the reason for a resolved file object
* not being available, such as being the PVFS root or an undefined connection.
*
* @return The resolved file object.
*/
@NonNull
protected abstract AbstractFileObject<?> requireResolvedFileObject() throws FileSystemException;
@Override
public String getOriginalURIString() {
return this.getName().toString();
}
@Override
public String getAELSafeURIString() {
throw new UnsupportedOperationException( String.format(
"This connection file object does not support this operation: '%s'",
this.getOriginalURIString() ) );
}
}
View on GitHub (pinned to f3058517a1)