[
https://issues.apache.org/jira/browse/BROOKLYN-409?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15748314#comment-15748314
]
ASF GitHub Bot commented on BROOKLYN-409:
-----------------------------------------
GitHub user aledsage opened a pull request:
https://github.com/apache/brooklyn-server/pull/489
BROOKLYN-409: add test
Includes new osgi test bundle with prefix "com.example.brooklyn"
Without that new osgi bundle, the test might only pass because of the
"white-listing" of org.apache.brooklyn prefixes. As the comment in the relevant
pom.xml says, it's ok to use this mavenId that we don't own because the
artifact is only used for test purposes. It is never part of a release.
---
For BROOKLYN-409, this test shows that it is already fixed in master! I
believe it was fixed in this commit:
```
commit a72d1f20ed78504a9b690df1467465b781ac917a
Author: Aled Sage <[email protected]>
Date: Mon Nov 7 17:11:45 2016 +0000
BROOKLYN-379: entity type includes OSGi prefix
```
You can merge this pull request into a Git repository by running:
$ git pull https://github.com/aledsage/brooklyn-server BROOKLYN-409
Alternatively you can review and apply these changes as the patch at:
https://github.com/apache/brooklyn-server/pull/489.patch
To close this pull request, make a commit to your master/trunk branch
with (at least) the following in the commit message:
This closes #489
----
commit c0fe24db75ad8b5d664490420997b38db4e3d64c
Author: Aled Sage <[email protected]>
Date: 2016-12-14T11:30:24Z
BROOKLYN-409: add test
Includes new osgi test bundle with prefix "com.example.brooklyn"
----
> Rebind fails in karaf, with app referencing classes in catalog item's bundle
> ----------------------------------------------------------------------------
>
> Key: BROOKLYN-409
> URL: https://issues.apache.org/jira/browse/BROOKLYN-409
> Project: Brooklyn
> Issue Type: Bug
> Reporter: Aled Sage
>
> Using Brooklyn 0.10.0-SNAPSHOT, running in karaf...
> A customer deployed an app, which uses entity and policy classes defined in
> an OSGi bundle (supplied via brooklyn.libraries). A simplified version of the
> catalog item is something like that below (where
> {{com.example.apps.MyTopLevelApp}} and {{com.example.policies.MyPolicy}} are
> Java classes in my-bundle.jar):
> {noformat}
> brooklyn.catalog:
> brooklyn.libraries:
> - file:///path/to/my-bundle.jar
> id: com.example.MyApp
> itemType: template
> version: 1.3
> description: My App
> displayName: My App
> item:
> services:
> - type: com.example.apps.MyTopLevelApp
> brooklyn.config:
> childSpec:
> $brooklyn:entitySpec:
> type:
> org.apache.brooklyn.entity.software.base.VanillaSoftwareProcess
> name: Sshable
> brooklyn.config:
> checkRunning.command: echo true
> customize.command: echo true
> launch.command: echo true
> brooklyn.policies:
> - type: com.example.policies.MyPolicy
> {noformat}
> This deploys fine. However, when one stops and restarts Brooklyn (so
> rebinding to persisted state) it gives the exception below:
> {noformat}
> 2016-12-14 09:30:47,157 WARN 116 o.a.b.c.m.r.RebindExceptionHandlerImpl
> [nager-msT0tE2K-0] Rebind: continuing after problem creating POLICY
> isk2552l4k of type com.example.policies.MyPolicy
> java.lang.IllegalStateException: Unable to load com.example.policies.MyPolicy
> from []: Invalid class: com.example.policies.MyPolicy:
> ClassNotFoundException: com.example.policies.MyPolicy
> at
> org.apache.brooklyn.util.guava.IllegalStateExceptionSupplier.get(IllegalStateExceptionSupplier.java:40)[139:org.apache.brooklyn.utils-common:0.10.0.20161205_1210]
> at
> org.apache.brooklyn.util.guava.IllegalStateExceptionSupplier.get(IllegalStateExceptionSupplier.java:26)[139:org.apache.brooklyn.utils-common:0.10.0.20161205_1210]
> at
> org.apache.brooklyn.util.guava.Maybe$Absent.getException(Maybe.java:337)[139:org.apache.brooklyn.utils-common:0.10.0.20161205_1210]
> at
> org.apache.brooklyn.util.guava.Maybe$Absent.get(Maybe.java:331)[139:org.apache.brooklyn.utils-common:0.10.0.20161205_1210]
> at
> org.apache.brooklyn.core.mgmt.classloading.AbstractBrooklynClassLoadingContext.loadClass(AbstractBrooklynClassLoadingContext.java:55)[116:org.apache.brooklyn.core:0.10.0.20161205_1210]
> at
> org.apache.brooklyn.core.mgmt.rebind.RebindIteration$BrooklynObjectInstantiator.load(RebindIteration.java:953)[116:org.apache.brooklyn.core:0.10.0.20161205_1210]
> at
> org.apache.brooklyn.core.mgmt.rebind.RebindIteration$BrooklynObjectInstantiator.newPolicy(RebindIteration.java:1039)[116:org.apache.brooklyn.core:0.10.0.20161205_1210]
> at
> org.apache.brooklyn.core.mgmt.rebind.RebindIteration.instantiateAdjuncts(RebindIteration.java:482)[116:org.apache.brooklyn.core:0.10.0.20161205_1210]
> at
> org.apache.brooklyn.core.mgmt.rebind.RebindIteration.doRun(RebindIteration.java:242)[116:org.apache.brooklyn.core:0.10.0.20161205_1210]
> at
> org.apache.brooklyn.core.mgmt.rebind.InitialFullRebindIteration.doRun(InitialFullRebindIteration.java:69)[116:org.apache.brooklyn.core:0.10.0.20161205_1210]
> at
> org.apache.brooklyn.core.mgmt.rebind.RebindIteration.run(RebindIteration.java:266)[116:org.apache.brooklyn.core:0.10.0.20161205_1210]
> at
> org.apache.brooklyn.core.mgmt.rebind.RebindManagerImpl.rebindImpl(RebindManagerImpl.java:558)[116:org.apache.brooklyn.core:0.10.0.20161205_1210]
> at
> org.apache.brooklyn.core.mgmt.rebind.RebindManagerImpl$3.call(RebindManagerImpl.java:508)[116:org.apache.brooklyn.core:0.10.0.20161205_1210]
> at
> org.apache.brooklyn.core.mgmt.rebind.RebindManagerImpl$3.call(RebindManagerImpl.java:506)[116:org.apache.brooklyn.core:0.10.0.20161205_1210]
> at
> org.apache.brooklyn.util.core.task.BasicExecutionManager$SubmissionCallable.call(BasicExecutionManager.java:522)[116:org.apache.brooklyn.core:0.10.0.20161205_1210]
> at java.util.concurrent.FutureTask.run(FutureTask.java:262)[:1.7.0_71]
> at
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)[:1.7.0_71]
> at
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)[:1.7.0_71]
> at java.lang.Thread.run(Thread.java:745)[:1.7.0_71]
> Caused by: org.apache.brooklyn.util.exceptions.PropagatedRuntimeException:
> Unable to load com.example.policies.MyPolicy from []: Invalid class:
> com.example.policies.MyPolicy: ClassNotFoundException:
> com.example.policies.MyPolicy
> at
> org.apache.brooklyn.util.exceptions.Exceptions.create(Exceptions.java:432)[139:org.apache.brooklyn.utils-common:0.10.0.20161205_1210]
> at
> org.apache.brooklyn.core.mgmt.classloading.BrooklynClassLoadingContextSequential.tryLoadClass(BrooklynClassLoadingContextSequential.java:88)[116:org.apache.brooklyn.core:0.10.0.20161205_1210]
> at
> org.apache.brooklyn.core.mgmt.classloading.AbstractBrooklynClassLoadingContext.tryLoadClass(AbstractBrooklynClassLoadingContext.java:61)[116:org.apache.brooklyn.core:0.10.0.20161205_1210]
> ... 15 more
> Caused by: java.lang.IllegalStateException: Invalid class:
> com.example.policies.MyPolicy
> at
> org.apache.brooklyn.util.guava.IllegalStateExceptionSupplier.get(IllegalStateExceptionSupplier.java:40)[139:org.apache.brooklyn.utils-common:0.10.0.20161205_1210]
> at
> org.apache.brooklyn.util.guava.IllegalStateExceptionSupplier.get(IllegalStateExceptionSupplier.java:26)[139:org.apache.brooklyn.utils-common:0.10.0.20161205_1210]
> at
> org.apache.brooklyn.util.guava.Maybe$Absent.getException(Maybe.java:337)[139:org.apache.brooklyn.utils-common:0.10.0.20161205_1210]
> at
> org.apache.brooklyn.util.guava.Maybe.getException(Maybe.java:465)[139:org.apache.brooklyn.utils-common:0.10.0.20161205_1210]
> at
> org.apache.brooklyn.core.mgmt.classloading.BrooklynClassLoadingContextSequential.tryLoadClass(BrooklynClassLoadingContextSequential.java:85)[116:org.apache.brooklyn.core:0.10.0.20161205_1210]
> ... 16 more
> Caused by: java.lang.ClassNotFoundException: com.example.policies.MyPolicy
> at java.net.URLClassLoader$1.run(URLClassLoader.java:366)[:1.7.0_71]
> at java.net.URLClassLoader$1.run(URLClassLoader.java:355)[:1.7.0_71]
> at java.security.AccessController.doPrivileged(Native
> Method)[:1.7.0_71]
> at
> java.net.URLClassLoader.findClass(URLClassLoader.java:354)[:1.7.0_71]
> at java.lang.ClassLoader.loadClass(ClassLoader.java:425)[:1.7.0_71]
> at
> sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)[:1.7.0_71]
> at java.lang.ClassLoader.loadClass(ClassLoader.java:358)[:1.7.0_71]
> at
> org.apache.brooklyn.util.javalang.AggregateClassLoader.findClass(AggregateClassLoader.java:135)[139:org.apache.brooklyn.utils-common:0.10.0.20161205_1210]
> at java.lang.ClassLoader.loadClass(ClassLoader.java:425)[:1.7.0_71]
> at java.lang.ClassLoader.loadClass(ClassLoader.java:358)[:1.7.0_71]
> at
> org.apache.brooklyn.core.mgmt.classloading.JavaBrooklynClassLoadingContext.tryLoadClass0(JavaBrooklynClassLoadingContext.java:101)[116:org.apache.brooklyn.core:0.10.0.20161205_1210]
> at
> org.apache.brooklyn.core.mgmt.classloading.JavaBrooklynClassLoadingContext.tryLoadClass(JavaBrooklynClassLoadingContext.java:84)[116:org.apache.brooklyn.core:0.10.0.20161205_1210]
> at
> org.apache.brooklyn.core.mgmt.classloading.BrooklynClassLoadingContextSequential.tryLoadClass(BrooklynClassLoadingContextSequential.java:81)[116:org.apache.brooklyn.core:0.10.0.20161205_1210]
> ... 16 more
> {noformat}
> Brooklyn does start up, but the policy no longer exists on the entity.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)