[
https://issues.apache.org/jira/browse/BROOKLYN-508?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16026099#comment-16026099
]
Aled Sage commented on BROOKLYN-508:
------------------------------------
The reason that jclouds tries to get the URL for "requested location
us-standard" is presumably that
{{org.jclouds.aws.s3.config.AWSS3HttpApiModule.defaultRegionForBucket()}}
returns {{Suppliers.ofInstance(US_STANDARD)}}.
I've not dug into this area of jclouds enough, but I wonder if
{{org.jclouds.s3.S3Client}} methods (like {{putBucketInRegion}}) should
annotate the {{region}} parameter with something like {{@EndpointParam(parser =
RegionToEndpointOrProviderIfNull.class)}} (as is done in things like
{{org.jclouds.ec2.features.InstanceApi.describeInstancesInRegion()}}).
> Persistence to aws-ec2:eu-west-1 fails in jclouds, looking up "requested
> location us-standard"
> ----------------------------------------------------------------------------------------------
>
> Key: BROOKLYN-508
> URL: https://issues.apache.org/jira/browse/BROOKLYN-508
> Project: Brooklyn
> Issue Type: Bug
> Reporter: Aled Sage
>
> Following on from BROOKLYN-487, this time when I tried testing it I got the
> exception below:
> {noformat}
> 2017-05-25 17:27:48,782 ERROR 124 o.a.b.l.c.BasicLauncher [FelixStartLevel]
> Subsystem for persistence had startup error (continuing with startup):
> org.apache.brooklyn.util.exceptions.FatalRuntimeException: Error initializing
> persistence subsystem: requested location us-standard, which is not in the
> configured locations:
> {eu-west-1=Suppliers.ofInstance(https://s3-eu-west-1.amazonaws.com)}
> org.apache.brooklyn.util.exceptions.FatalRuntimeException: Error initializing
> persistence subsystem: requested location us-standard, which is not in the
> configured locations:
> {eu-west-1=Suppliers.ofInstance(https://s3-eu-west-1.amazonaws.com)}
> at
> org.apache.brooklyn.launcher.common.BasicLauncher.initPersistence(BasicLauncher.java:598)
> at
> org.apache.brooklyn.launcher.common.BasicLauncher.handlePersistence(BasicLauncher.java:514)
> at
> org.apache.brooklyn.launcher.common.BasicLauncher.start(BasicLauncher.java:433)
> at
> org.apache.brooklyn.launcher.osgi.OsgiLauncher.start(OsgiLauncher.java:77)
> at
> org.apache.brooklyn.launcher.osgi.OsgiLauncher.init(OsgiLauncher.java:101)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native
> Method)[:1.8.0_121]
> at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)[:1.8.0_121]
> at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)[:1.8.0_121]
> at java.lang.reflect.Method.invoke(Method.java:498)[:1.8.0_121]
> at
> org.apache.aries.blueprint.utils.ReflectionUtils.invoke(ReflectionUtils.java:299)[17:org.apache.aries.blueprint.core:1.7.1]
> at
> org.apache.aries.blueprint.container.BeanRecipe.invoke(BeanRecipe.java:980)[17:org.apache.aries.blueprint.core:1.7.1]
> at
> org.apache.aries.blueprint.container.BeanRecipe.runBeanProcInit(BeanRecipe.java:736)[17:org.apache.aries.blueprint.core:1.7.1]
> at
> org.apache.aries.blueprint.container.BeanRecipe.internalCreate2(BeanRecipe.java:848)[17:org.apache.aries.blueprint.core:1.7.1]
> at
> org.apache.aries.blueprint.container.BeanRecipe.internalCreate(BeanRecipe.java:811)[17:org.apache.aries.blueprint.core:1.7.1]
> at
> org.apache.aries.blueprint.di.AbstractRecipe$1.call(AbstractRecipe.java:79)[17:org.apache.aries.blueprint.core:1.7.1]
> at
> java.util.concurrent.FutureTask.run(FutureTask.java:266)[:1.8.0_121]
> at
> org.apache.aries.blueprint.di.AbstractRecipe.create(AbstractRecipe.java:88)[17:org.apache.aries.blueprint.core:1.7.1]
> at
> org.apache.aries.blueprint.di.RefRecipe.internalCreate(RefRecipe.java:62)[17:org.apache.aries.blueprint.core:1.7.1]
> at
> org.apache.aries.blueprint.di.AbstractRecipe.create(AbstractRecipe.java:106)[17:org.apache.aries.blueprint.core:1.7.1]
> at
> org.apache.aries.blueprint.container.BeanRecipe.getFactoryObj(BeanRecipe.java:308)[17:org.apache.aries.blueprint.core:1.7.1]
> at
> org.apache.aries.blueprint.container.BeanRecipe.getInstanceFromFactory(BeanRecipe.java:288)[17:org.apache.aries.blueprint.core:1.7.1]
> at
> org.apache.aries.blueprint.container.BeanRecipe.getInstance(BeanRecipe.java:278)[17:org.apache.aries.blueprint.core:1.7.1]
> at
> org.apache.aries.blueprint.container.BeanRecipe.internalCreate2(BeanRecipe.java:830)[17:org.apache.aries.blueprint.core:1.7.1]
> at
> org.apache.aries.blueprint.container.BeanRecipe.internalCreate(BeanRecipe.java:811)[17:org.apache.aries.blueprint.core:1.7.1]
> at
> org.apache.aries.blueprint.di.AbstractRecipe$1.call(AbstractRecipe.java:79)[17:org.apache.aries.blueprint.core:1.7.1]
> at
> java.util.concurrent.FutureTask.run(FutureTask.java:266)[:1.8.0_121]
> at
> org.apache.aries.blueprint.di.AbstractRecipe.create(AbstractRecipe.java:88)[17:org.apache.aries.blueprint.core:1.7.1]
> at
> org.apache.aries.blueprint.container.BlueprintRepository.createInstances(BlueprintRepository.java:255)[17:org.apache.aries.blueprint.core:1.7.1]
> at
> org.apache.aries.blueprint.container.BlueprintRepository.createAll(BlueprintRepository.java:186)[17:org.apache.aries.blueprint.core:1.7.1]
> at
> org.apache.aries.blueprint.container.BlueprintContainerImpl.instantiateEagerComponents(BlueprintContainerImpl.java:724)[17:org.apache.aries.blueprint.core:1.7.1]
> at
> org.apache.aries.blueprint.container.BlueprintContainerImpl.doRun(BlueprintContainerImpl.java:411)[17:org.apache.aries.blueprint.core:1.7.1]
> at
> org.apache.aries.blueprint.container.BlueprintContainerImpl.run(BlueprintContainerImpl.java:276)[17:org.apache.aries.blueprint.core:1.7.1]
> at
> org.apache.aries.blueprint.container.BlueprintExtender.createContainer(BlueprintExtender.java:300)[17:org.apache.aries.blueprint.core:1.7.1]
> at
> org.apache.aries.blueprint.container.BlueprintExtender.createContainer(BlueprintExtender.java:269)[17:org.apache.aries.blueprint.core:1.7.1]
> at
> org.apache.aries.blueprint.container.BlueprintExtender.createContainer(BlueprintExtender.java:265)[17:org.apache.aries.blueprint.core:1.7.1]
> at
> org.apache.aries.blueprint.container.BlueprintExtender.modifiedBundle(BlueprintExtender.java:255)[17:org.apache.aries.blueprint.core:1.7.1]
> at
> org.apache.aries.util.tracker.hook.BundleHookBundleTracker$Tracked.customizerModified(BundleHookBundleTracker.java:500)[21:org.apache.aries.util:1.1.1]
> at
> org.apache.aries.util.tracker.hook.BundleHookBundleTracker$Tracked.customizerModified(BundleHookBundleTracker.java:433)[21:org.apache.aries.util:1.1.1]
> at
> org.apache.aries.util.tracker.hook.BundleHookBundleTracker$AbstractTracked.track(BundleHookBundleTracker.java:725)[21:org.apache.aries.util:1.1.1]
> at
> org.apache.aries.util.tracker.hook.BundleHookBundleTracker$Tracked.bundleChanged(BundleHookBundleTracker.java:463)[21:org.apache.aries.util:1.1.1]
> at
> org.apache.aries.util.tracker.hook.BundleHookBundleTracker$BundleEventHook.event(BundleHookBundleTracker.java:422)[21:org.apache.aries.util:1.1.1]
> at
> org.apache.felix.framework.util.SecureAction.invokeBundleEventHook(SecureAction.java:1179)[org.apache.felix.framework-5.6.1.jar:]
> at
> org.apache.felix.framework.EventDispatcher.createWhitelistFromHooks(EventDispatcher.java:730)[org.apache.felix.framework-5.6.1.jar:]
> at
> org.apache.felix.framework.EventDispatcher.fireBundleEvent(EventDispatcher.java:485)[org.apache.felix.framework-5.6.1.jar:]
> at
> org.apache.felix.framework.Felix.fireBundleEvent(Felix.java:4541)[org.apache.felix.framework-5.6.1.jar:]
> at
> org.apache.felix.framework.Felix.startBundle(Felix.java:2172)[org.apache.felix.framework-5.6.1.jar:]
> at
> org.apache.felix.framework.Felix.setActiveStartLevel(Felix.java:1371)[org.apache.felix.framework-5.6.1.jar:]
> at
> org.apache.felix.framework.FrameworkStartLevelImpl.run(FrameworkStartLevelImpl.java:308)[org.apache.felix.framework-5.6.1.jar:]
> at java.lang.Thread.run(Thread.java:745)[:1.8.0_121]
> Caused by: java.lang.IllegalArgumentException: requested location
> us-standard, which is not in the configured locations:
> {eu-west-1=Suppliers.ofInstance(https://s3-eu-west-1.amazonaws.com)}
> at
> com.google.common.base.Preconditions.checkArgument(Preconditions.java:145)
> at
> org.jclouds.location.functions.RegionToEndpointOrProviderIfNull.apply(RegionToEndpointOrProviderIfNull.java:60)
> at
> org.jclouds.location.functions.RegionToEndpointOrProviderIfNull.apply(RegionToEndpointOrProviderIfNull.java:37)
> at
> com.google.common.base.Suppliers$SupplierComposition.get(Suppliers.java:67)
> at
> org.jclouds.rest.internal.RestAnnotationProcessor.getEndpointFor(RestAnnotationProcessor.java:559)
> at
> org.jclouds.rest.internal.RestAnnotationProcessor.apply(RestAnnotationProcessor.java:204)
> at
> org.jclouds.rest.internal.RestAnnotationProcessor.apply(RestAnnotationProcessor.java:137)
> at
> org.jclouds.rest.internal.InvokeHttpMethod.toCommand(InvokeHttpMethod.java:188)
> at
> org.jclouds.rest.internal.InvokeHttpMethod.invoke(InvokeHttpMethod.java:84)
> at
> org.jclouds.rest.internal.InvokeHttpMethod.apply(InvokeHttpMethod.java:73)
> at
> org.jclouds.rest.internal.InvokeHttpMethod.apply(InvokeHttpMethod.java:44)
> at
> org.jclouds.rest.internal.DelegatesToInvocationFunction.handle(DelegatesToInvocationFunction.java:156)
> at
> org.jclouds.rest.internal.DelegatesToInvocationFunction.invoke(DelegatesToInvocationFunction.java:123)
> at com.sun.proxy.$Proxy70.putBucketInRegion(Unknown Source)
> at
> org.jclouds.s3.blobstore.S3BlobStore.createContainerInLocation(S3BlobStore.java:451)
> at
> org.jclouds.aws.s3.blobstore.AWSS3BlobStore.createContainerInLocation(AWSS3BlobStore.java:105)
> at
> org.jclouds.s3.blobstore.S3BlobStore.createContainerInLocation(S3BlobStore.java:144)
> at
> org.apache.brooklyn.core.mgmt.persist.jclouds.JcloudsBlobStoreBasedObjectStore.getBlobStoreContext(JcloudsBlobStoreBasedObjectStore.java:101)
> at
> org.apache.brooklyn.core.mgmt.persist.jclouds.JcloudsBlobStoreBasedObjectStore.<init>(JcloudsBlobStoreBasedObjectStore.java:80)
> at
> org.apache.brooklyn.location.jclouds.JcloudsLocation.newPersistenceObjectStore(JcloudsLocation.java:2970)
> at
> org.apache.brooklyn.core.mgmt.persist.BrooklynPersistenceUtils.newPersistenceObjectStore(BrooklynPersistenceUtils.java:96)
> at
> org.apache.brooklyn.launcher.common.BasicLauncher.initPersistence(BasicLauncher.java:581)
> ... 48 more
> {noformat}
> This was when using {{brooklyn.cfg}}:
> {noformat}
> brooklyn.location.named.my-s3=aws-s3:eu-west-1
> brooklyn.location.named.my-s3.identity=********
> brooklyn.location.named.my-s3.credential=********
> brooklyn.location.named.my-s3.jclouds.regions=eu-west-1
> {noformat}
> And {{org.apache.brooklyn.osgilauncher.cfg}}:
> {noformat}
> persistenceLocation=my-s3
> persistenceDir=brooklyn487
> {noformat}
> Two things are surprising: first that it's different behaviour than
> BROOKLYN-487; and second that jclouds tries to lookup the url for the region
> "us-standard"!
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)