-
Notifications
You must be signed in to change notification settings - Fork 776
Closed
Labels
Description
Bug report
Expected behavior and actual behavior
When defining a S3Path with only the bucket name, the exists() methid should return true|false or an access denied error. However, it returns a strange marshall error. Versions before 25.10 seems to work correctly. It is a regression of the AWS SDK v2 update.
Steps to reproduce the problem
Use nf-schema validation for a Path parameter providing a bucket path such as s3://annotatation-cache/ or run this pipeline
workflow{
f = file('s3://annotatation-cache/')
println("Exists: ${f.exists()}")
println("Directory: ${f.isDirectory()}")
}
Program output
The execution stdout:
N E X T F L O W ~ version 25.10.0
Launching `main2.nf` [stupefied_darwin] DSL2 - revision: b532f504e0
ERROR ~ Unable to marshall request to JSON: Key cannot be empty.
-- Check script 'main2.nf' at line: 3 or see '.nextflow.log' file for more details
And the exception:
software.amazon.awssdk.core.exception.SdkClientException: Unable to marshall request to JSON: Key cannot be empty.
at software.amazon.awssdk.core.exception.SdkClientException$BuilderImpl.build(SdkClientException.java:130)
at software.amazon.awssdk.services.s3.transform.HeadObjectRequestMarshaller.marshall(HeadObjectRequestMarshaller.java:53)
at software.amazon.awssdk.services.s3.transform.HeadObjectRequestMarshaller.marshall(HeadObjectRequestMarshaller.java:31)
at software.amazon.awssdk.core.internal.handler.BaseClientHandler.lambda$finalizeSdkHttpFullRequest$0(BaseClientHandler.java:73)
at software.amazon.awssdk.core.internal.util.MetricUtils.measureDuration(MetricUtils.java:64)
at software.amazon.awssdk.core.internal.handler.BaseClientHandler.finalizeSdkHttpFullRequest(BaseClientHandler.java:72)
at software.amazon.awssdk.core.internal.handler.BaseSyncClientHandler.doExecute(BaseSyncClientHandler.java:151)
at software.amazon.awssdk.core.internal.handler.BaseSyncClientHandler.lambda$execute$1(BaseSyncClientHandler.java:80)
at software.amazon.awssdk.core.internal.handler.BaseSyncClientHandler.measureApiCallSuccess(BaseSyncClientHandler.java:182)
at software.amazon.awssdk.core.internal.handler.BaseSyncClientHandler.execute(BaseSyncClientHandler.java:74)
at software.amazon.awssdk.core.client.handler.SdkSyncClientHandler.execute(SdkSyncClientHandler.java:45)
at software.amazon.awssdk.awscore.client.handler.AwsSyncClientHandler.execute(AwsSyncClientHandler.java:53)
at software.amazon.awssdk.services.s3.DefaultS3Client.headObject(DefaultS3Client.java:7623)
at software.amazon.awssdk.services.s3.DelegatingS3Client.lambda$headObject$59(DelegatingS3Client.java:6180)
at software.amazon.awssdk.services.s3.internal.crossregion.S3CrossRegionSyncClient.invokeOperation(S3CrossRegionSyncClient.java:67)
at software.amazon.awssdk.services.s3.DelegatingS3Client.headObject(DelegatingS3Client.java:6180)
at nextflow.cloud.aws.nio.S3Client.lambda$getObjectMetadata$8(S3Client.java:288)
at nextflow.cloud.aws.nio.S3Client.runWithPermit(S3Client.java:106)
at nextflow.cloud.aws.nio.S3Client.getObjectMetadata(S3Client.java:288)
at nextflow.cloud.aws.nio.util.S3ObjectSummaryLookup.lookup(S3ObjectSummaryLookup.java:55)
at nextflow.cloud.aws.nio.S3FileSystemProvider.checkAccess(S3FileSystemProvider.java:586)
at java.base/java.nio.file.spi.FileSystemProvider.exists(FileSystemProvider.java:1202)
at java.base/java.nio.file.Files.exists(Files.java:2514)
at org.codehaus.groovy.vmplugin.v8.IndyInterface.selectMethod(IndyInterface.java:355)
at org.codehaus.groovy.vmplugin.v8.IndyInterface.fromCache(IndyInterface.java:321)
at nextflow.extension.FilesEx.exists(FilesEx.groovy:456)
at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
at java.base/java.lang.reflect.Method.invoke(Method.java:580)
at org.codehaus.groovy.runtime.metaclass.ReflectionMetaMethod.invoke(ReflectionMetaMethod.java:59)
at org.codehaus.groovy.runtime.metaclass.NewInstanceMetaMethod.invoke(NewInstanceMetaMethod.java:57)
at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:328)
at groovy.lang.MetaClassImpl.doInvokeMethod(MetaClassImpl.java:1339)
at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1094)
at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1007)
at groovy.runtime.metaclass.NextflowDelegatingMetaClass.invokeMethod(NextflowDelegatingMetaClass.java:64)
at org.codehaus.groovy.vmplugin.v8.IndyInterface.fromCache(IndyInterface.java:321)
at Script_9b457c005298fdf8$_runScript_closure1$_closure2.doCall(Script_9b457c005298fdf8:3)
at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
at java.base/java.lang.reflect.Method.invoke(Method.java:580)
at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:343)
Environment
- Nextflow version: 25.10.0
- Operating system: Linux
Reactions are currently unavailable