[ 
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)

Reply via email to