brooklyn-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Svetoslav Neykov (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (BROOKLYN-351) extra jclouds providers not found (in karaf)
Date Mon, 26 Sep 2016 12:52:20 GMT

    [ https://issues.apache.org/jira/browse/BROOKLYN-351?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15522965#comment-15522965
] 

Svetoslav Neykov commented on BROOKLYN-351:
-------------------------------------------

[~aled.sage] Agree with your analysis. I can suggest a 3rd option - invalidate the cache on
bundle load, but will happily trade that for your option 2 which seems ideal.

With that said currently Brooklyn's feature loading is set up to avoid this by starting the
locations-jclouds bundle *after* all jclouds bundles. It does it by setting a [start level
of 85|https://github.com/apache/brooklyn-server/blob/master/karaf/features/src/main/feature/feature.xml#L300],
while the default (which includes jclouds bundles) is 80.

Short term make sure your location bundles are loaded in the same feature loading batch (by
playing with prerequisite attribute) or previous one and that their startup level is less
than 85. Longer term I suggest we go with (2).

> extra jclouds providers not found (in karaf)
> --------------------------------------------
>
>                 Key: BROOKLYN-351
>                 URL: https://issues.apache.org/jira/browse/BROOKLYN-351
>             Project: Brooklyn
>          Issue Type: Bug
>            Reporter: Aled Sage
>
> When using a downstream build of Brooklyn 0.10.0-SNAPSHOT (with karaf), I added a couple
of extra jclouds labs providers/apis via the feature.xml.
> However, when I tried to use it with the blueprint below, I got the error shown:
> {noformat}
> location: jclouds:azurecompute
> services:
> - type: org.apache.brooklyn.entity.stock.BasicApplication
> 2016-09-26 12:10:12,346 DEBUG 115 o.a.b.c.t.AbstractTypePlanTransformer [p1212877220-1463]
Could not instantiate BasicRegisteredType[null;null] (rethrowing): Illegal parameter for 'location'
(jclouds:azurecompute); not resolvable: NoSuchElementException: Cloud provider/
> API type azurecompute is not supported by jclouds
> {noformat}
> Looking in {{org.jclouds.providers.Providers.withId("azurecompute")}}, jclouds does know
about azurecompute.
> The problem is that the providers/apis list are retrieved and stored in {{JcloudsLocationResolver.PROVIDERS}}
and {{JcloudsLocationResolver.APIS}} (during static init). At that point, the azurecompute
bundle has not been activated, so {{org.jclouds.osgi.ProviderRegistry}} had not yet had it
added by {{org.jclouds.osgi.MetadataBundleListener}}.
> Below is a stacktrace of where this happens:
> {noformat}
> Daemon Thread [FelixStartLevel] (Suspended (breakpoint at line 82 in Providers))	
> 	owns: AtomicBoolean  (id=1573)	
> 	Providers.all() line: 82	
> 	JcloudsLocationResolver.getProvidersMap() line: 61	
> 	JcloudsLocationResolver.<clinit>() line: 56	
> 	NativeConstructorAccessorImpl.newInstance0(Constructor, Object[]) line: not available
[native method]	
> 	NativeConstructorAccessorImpl.newInstance(Object[]) line: 57	
> 	DelegatingConstructorAccessorImpl.newInstance(Object[]) line: 45	
> 	Constructor<T>.newInstance(Object...) line: 526	
> 	ReflectionUtils.newInstance(AccessControlContext, Constructor, Object...) line: 331

> 	BeanRecipe.newInstance(Constructor, Object...) line: 984	
> 	BeanRecipe.getInstanceFromType(List<Object>, List<ReifiedType>) line: 349

> 	BeanRecipe.getInstance() line: 282	
> 	BeanRecipe.internalCreate2() line: 830	
> 	BeanRecipe.internalCreate() line: 811	
> 	BeanRecipe(AbstractRecipe).create() line: 106	
> 	RefRecipe.internalCreate() line: 62	
> 	RefRecipe(AbstractRecipe).create() line: 106	
> 	ServiceRecipe.createService() line: 285	
> 	ServiceRecipe.internalGetService(Bundle, ServiceRegistration) line: 252	
> 	ServiceRecipe.internalCreate() line: 149	
> 	AbstractRecipe$1.call() line: 79	
> 	FutureTask<V>.run() line: 262	
> 	ServiceRecipe(AbstractRecipe).create() line: 88	
> 	BlueprintRepository.createInstances(Collection<String>) line: 255	
> 	BlueprintRepository.createAll(Collection<String>) line: 186	
> 	BlueprintContainerImpl.instantiateEagerComponents() line: 712	
> 	BlueprintContainerImpl.doRun() line: 399	
> 	BlueprintContainerImpl.run() line: 273	
> 	BlueprintExtender.createContainer(Bundle, List<Object>) line: 294	
> 	BlueprintExtender.createContainer(Bundle) line: 263	
> 	BlueprintExtender.modifiedBundle(Bundle, BundleEvent, Object) line: 253	
> 	BundleHookBundleTracker$Tracked.customizerModified(Bundle, BundleEvent, T) line: 500

> 	BundleHookBundleTracker$Tracked.customizerModified(Object, Object, Object) line: 433

> 	BundleHookBundleTracker$Tracked(BundleHookBundleTracker$AbstractTracked<S,T,R>).track(S,
R) line: 725	
> 	BundleHookBundleTracker$Tracked.bundleChanged(BundleEvent) line: 463	
> 	BundleHookBundleTracker$BundleEventHook.event(BundleEvent, Collection) line: 422	
> 	SecureAction.invokeBundleEventHook(EventHook, BundleEvent, Collection<BundleContext>)
line: 1179	
> 	EventDispatcher.createWhitelistFromHooks(EventObject, Framework, Map<BundleContext,List<ListenerInfo>>,
Map<BundleContext,List<ListenerInfo>>, Class<T>) line: 731	
> 	EventDispatcher.fireBundleEvent(BundleEvent, Framework) line: 486	
> 	Felix.fireBundleEvent(int, Bundle) line: 4541	
> 	Felix.startBundle(BundleImpl, int) line: 2172	
> 	Felix.setActiveStartLevel(int, FrameworkListener[]) line: 1371	
> 	FrameworkStartLevelImpl.run() line: 308	
> 	Thread.run() line: 745	
> {noformat}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Mime
View raw message