Closed adamstruck closed 6 years ago
I encounter a similar problem if I compile the master branch and rerun:
[2018-01-10 14:25:28.376] [DEBUG] Config path: /Users/strucka/Projects/bunny/rabix-cli/config
[2018-01-10 14:25:28.382] [DEBUG] Configuration directory found localy.
[2018-01-10 14:25:28.451] [DEBUG] Base path set to file:///Users/strucka/Projects/bunny/rabix-cli/config/core.properties
[2018-01-10 14:25:28.675] [DEBUG] Base path set to file:///Users/strucka/Projects/bunny/rabix-cli/config/core.properties
[2018-01-10 14:25:29.119] [DEBUG] Base path set to file:///Users/strucka/Projects/bunny/rabix-cli/config/core.properties
[2018-01-10 14:25:29.123] [DEBUG] Base path set to file:///Users/strucka/Projects/bunny/rabix-cli/config/core.properties
[2018-01-10 14:25:29.128] [DEBUG] Base path set to file:///Users/strucka/Projects/bunny/rabix-cli/config/core.properties
[2018-01-10 14:25:29.431] [DEBUG] Base path set to file:///Users/strucka/Projects/bunny/rabix-cli/config/core.properties
[2018-01-10 14:25:30.040] [DEBUG] Initialized ContextRecordCache with size 1000
[2018-01-10 14:25:30.040] [DEBUG] DAGCache initialized with size=16
[2018-01-10 14:25:30.041] [DEBUG] JobStatsCache initialized with size=2000
[2018-01-10 14:25:30.042] [DEBUG] ApplicationCache initialized with size=16
[2018-01-10 14:25:30.445] [DEBUG] Internal logging successfully configured to commons logger: true
[2018-01-10 14:25:30.492] [DEBUG] Admin mbean registered under com.amazonaws.management:type=AwsSdkMetrics
[2018-01-10 14:25:33.972] [ERROR] Encountered an error while starting local backend.
org.rabix.engine.service.BootstrapServiceException: com.google.inject.ProvisionException: Unable to provision, see the following errors:
1) Error injecting constructor, java.nio.file.FileSystemNotFoundException: S3 filesystem not yet created. Use newFileSystem() instead
at org.rabix.backend.tes.service.impl.LocalTESStorageServiceImpl.<init>(LocalTESStorageServiceImpl.java:39)
while locating org.rabix.backend.tes.service.impl.LocalTESStorageServiceImpl
at org.rabix.backend.tes.TESModule.configure(TESModule.java:23) (via modules: org.rabix.cli.BackendCommandLine$1 -> org.rabix.backend.tes.TESModule)
while locating org.rabix.backend.tes.service.TESStorageService
for field at org.rabix.backend.tes.service.impl.LocalTESWorkerServiceImpl.storage(LocalTESWorkerServiceImpl.java:79)
while locating org.rabix.backend.tes.service.impl.LocalTESWorkerServiceImpl
1 error
at org.rabix.engine.service.impl.BootstrapServiceImpl.start(BootstrapServiceImpl.java:47) ~[classes/:na]
at org.rabix.cli.BackendCommandLine.main(BackendCommandLine.java:360) ~[classes/:na]
Caused by: com.google.inject.ProvisionException: Unable to provision, see the following errors:
1) Error injecting constructor, java.nio.file.FileSystemNotFoundException: S3 filesystem not yet created. Use newFileSystem() instead
at org.rabix.backend.tes.service.impl.LocalTESStorageServiceImpl.<init>(LocalTESStorageServiceImpl.java:39)
while locating org.rabix.backend.tes.service.impl.LocalTESStorageServiceImpl
at org.rabix.backend.tes.TESModule.configure(TESModule.java:23) (via modules: org.rabix.cli.BackendCommandLine$1 -> org.rabix.backend.tes.TESModule)
while locating org.rabix.backend.tes.service.TESStorageService
for field at org.rabix.backend.tes.service.impl.LocalTESWorkerServiceImpl.storage(LocalTESWorkerServiceImpl.java:79)
while locating org.rabix.backend.tes.service.impl.LocalTESWorkerServiceImpl
1 error
at com.google.inject.internal.Errors.throwProvisionExceptionIfErrorsExist(Errors.java:486) ~[guice-4.1.0.jar:na]
at com.google.inject.internal.MembersInjectorImpl.injectMembers(MembersInjectorImpl.java:67) ~[guice-4.1.0.jar:na]
at com.google.inject.internal.InjectorImpl.injectMembers(InjectorImpl.java:987) ~[guice-4.1.0.jar:na]
Disconnected from the target VM, address: '127.0.0.1:62023', transport: 'socket'
at org.rabix.engine.service.impl.BackendServiceImpl.scanEmbedded(BackendServiceImpl.java:82) ~[classes/:na]
at org.rabix.engine.service.impl.BootstrapServiceImpl.start(BootstrapServiceImpl.java:45) ~[classes/:na]
... 1 common frames omitted
Caused by: java.nio.file.FileSystemNotFoundException: S3 filesystem not yet created. Use newFileSystem() instead
at com.upplication.s3fs.S3FileSystemProvider.getFileSystem(S3FileSystemProvider.java:278) ~[s3fs-2.2.1.jar:na]
at com.upplication.s3fs.S3FileSystemProvider.getPath(S3FileSystemProvider.java:296) ~[s3fs-2.2.1.jar:na]
at java.nio.file.Paths.get(Paths.java:143) ~[na:1.8.0_152]
at org.rabix.backend.tes.service.impl.LocalTESStorageServiceImpl.<init>(LocalTESStorageServiceImpl.java:61) ~[classes/:na]
at org.rabix.backend.tes.service.impl.LocalTESStorageServiceImpl$$FastClassByGuice$$148bf36a.newInstance(<generated>) ~[classes/:na]
at com.google.inject.internal.DefaultConstructionProxyFactory$FastClassProxy.newInstance(DefaultConstructionProxyFactory.java:89) ~[guice-4.1.0.jar:na]
at com.google.inject.internal.ConstructorInjector.provision(ConstructorInjector.java:111) ~[guice-4.1.0.jar:na]
at com.google.inject.internal.ConstructorInjector.construct(ConstructorInjector.java:90) ~[guice-4.1.0.jar:na]
at com.google.inject.internal.ConstructorBindingImpl$Factory.get(ConstructorBindingImpl.java:268) ~[guice-4.1.0.jar:na]
at com.google.inject.internal.FactoryProxy.get(FactoryProxy.java:56) ~[guice-4.1.0.jar:na]
at com.google.inject.internal.ProviderToInternalFactoryAdapter$1.call(ProviderToInternalFactoryAdapter.java:46) ~[guice-4.1.0.jar:na]
at com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1092) ~[guice-4.1.0.jar:na]
at com.google.inject.internal.ProviderToInternalFactoryAdapter.get(ProviderToInternalFactoryAdapter.java:40) ~[guice-4.1.0.jar:na]
at com.google.inject.internal.SingletonScope$1.get(SingletonScope.java:194) ~[guice-4.1.0.jar:na]
at com.google.inject.internal.InternalFactoryToProviderAdapter.get(InternalFactoryToProviderAdapter.java:41) ~[guice-4.1.0.jar:na]
at com.google.inject.internal.SingleFieldInjector.inject(SingleFieldInjector.java:54) ~[guice-4.1.0.jar:na]
at com.google.inject.internal.MembersInjectorImpl.injectMembers(MembersInjectorImpl.java:132) ~[guice-4.1.0.jar:na]
at com.google.inject.internal.MembersInjectorImpl$1.call(MembersInjectorImpl.java:93) ~[guice-4.1.0.jar:na]
at com.google.inject.internal.MembersInjectorImpl$1.call(MembersInjectorImpl.java:80) ~[guice-4.1.0.jar:na]
at com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1085) ~[guice-4.1.0.jar:na]
at com.google.inject.internal.MembersInjectorImpl.injectAndNotify(MembersInjectorImpl.java:80) ~[guice-4.1.0.jar:na]
at com.google.inject.internal.MembersInjectorImpl.injectMembers(MembersInjectorImpl.java:62) ~[guice-4.1.0.jar:na]
... 4 common frames omitted
Yeah, sorry about that, was way too focused on staging files that I completely forgot to test the case when they are already on s3.
Moved the remote filesystem init sooner in the program flow on this branch: https://github.com/rabix/bunny/tree/bugfix/s3-files
Also note that the s3 lib supports either
s3://[endpoint]/[bucket]/[path]
or
s3:///[bucket]/[path]
with assuming the endpoint is s3.amazonaws.com
Just s3://[bucket]/[path]
isn't supported for now due to the way URIs in java work, but I guess I could add the endpoint as the default host to the URIs in the future or something.
I am still getting the same errors using https://github.com/rabix/bunny/tree/bugfix/s3-files
What is your rabix.tes.storage.base url?
rabix.tes.storage.base=s3://funnel-test/rabix
Try it with s3://[endpoint]/[bucket]/[path]
or
s3:///[bucket]/[path]
Just s3://[bucket]/[path]
isn't supported for now due to the way URIs in java work, but I guess I could add the endpoint as the default host to the URIs in the future or something.
Neither of those alternatives did the trick. Still errors at this line with the same error: https://github.com/rabix/bunny/blob/bugfix/s3-files/rabix-cli/src/main/java/org/rabix/cli/BackendCommandLine.java#L388
It works on my side as long as the input urls have the same endpoint as the storage base, maybe that is the issue?
input:
{
"input_file": {
"class" : "File",
"location": "s3://s3.us-east-2.amazonaws.com/testbunny/input.txt",
"path":"data/input.txt"
}
}
config:
rabix.tes.storage.base=s3://s3.us-east-2.amazonaws.com/testbunny/
output:
{
"output_protein" : {
"basename" : "protein.txt",
"checksum" : "sha1$55adf0ec2ecc6aee57a774d48216ac5a97d6e5ba",
"class" : "File",
"contents" : null,
"dirname" : "s3://s3.us-east-2.amazonaws.com/testbunny/c27041cd-d0ec-45c4-8859-8b706e15fd88/root/Translate/",
"format" : null,
"location" : "s3://s3.us-east-2.amazonaws.com/testbunny/c27041cd-d0ec-45c4-8859-8b706e15fd88/root/Translate/protein.txt",
"metadata" : null,
"nameext" : ".txt",
"nameroot" : "protein",
"path" : "/testbunny/c27041cd-d0ec-45c4-8859-8b706e15fd88/root/Translate/protein.txt",
"secondaryFiles" : [ ],
"size" : 9
}
}
Tested with examples/dna2protein
It also works with s3://s3.amazonaws.com/testbunny/
and s3:///testbunny/
on both config and inputs but exceptions happen when you mix and match. I'll see about making the s3 lib endpoint agnostic in the future.
I was unable to get your example above to work. I am not sure what the problem is. I traced the execution in IntelliJ and confirmed that your new code is being called, but I am still getting the Error injecting constructor, java.nio.file.FileSystemNotFoundException: S3 filesystem not yet created. Use newFileSystem() instead
error.
Think I got it, my local maven repo had a different s3 lib version under the the same version number so it behaved differently. I've updated the s3-files branch with this version of the lib so it should work.
That did the trick.
Encountered this error when trying to test the latest release.
cwl:
inputs:
logs: