brooklyn-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Valentin Aitken (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (BROOKLYN-474) Rebind failed for historic ZooKeeperEnsembleImpl$MemberTrackingPolicy (no-arg constructor not accessible)
Date Thu, 13 Apr 2017 17:06:41 GMT

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

Valentin Aitken commented on BROOKLYN-474:
------------------------------------------

[~aled.sage] wouldn't be a good fix to just make the MemberTrackingPolicy a public class or
package private?

> Rebind failed for historic ZooKeeperEnsembleImpl$MemberTrackingPolicy (no-arg constructor
not accessible)
> ---------------------------------------------------------------------------------------------------------
>
>                 Key: BROOKLYN-474
>                 URL: https://issues.apache.org/jira/browse/BROOKLYN-474
>             Project: Brooklyn
>          Issue Type: Bug
>            Reporter: Aled Sage
>
> When testing rebind with 0.11.0 RC1 against historic persisted state, we saw the exception
below:
> {noformat}
> Caused by: org.apache.brooklyn.util.exceptions.CompoundRuntimeException: Failure rebinding;
2 errors including: problem creating POLICY lplpmv3goo of type org.apache.brooklyn.entity.zookeeper.ZooKeeperEnsembleImpl$MemberTrackingPolicy:
Cannot instantiate instance of type class org.apache.brooklyn.entity.zookeeper.ZooKeeperEnsembleImpl$MemberTrackingPolicy;
expected constructor signature not found (args are [{id=lplpmv3goo, deferConstructionChecks=true,
noConstructionInit=true, group=ZooKeeperEnsembleImpl{id=stkwkmp76w}, uniqueTag=MemberTrackingPolicy:ZooKeeperEnsembleImpl{id=stkwkmp76w},
tags=[]}])
>         at org.apache.brooklyn.util.exceptions.Exceptions.create(Exceptions.java:474)[141:org.apache.brooklyn.utils-common:0.11.0.SNAPSHOT]
>         at org.apache.brooklyn.core.mgmt.rebind.RebindExceptionHandlerImpl.onDoneImpl(RebindExceptionHandlerImpl.java:498)[120:org.apache.brooklyn.core:0.11.0.SNAPSHOT]
>         at org.apache.brooklyn.core.mgmt.rebind.RebindExceptionHandlerImpl.onDone(RebindExceptionHandlerImpl.java:414)[120:org.apache.brooklyn.core:0.11.0.SNAPSHOT]
>         at org.apache.brooklyn.core.mgmt.rebind.RebindIteration.run(RebindIteration.java:267)[120:org.apache.brooklyn.core:0.11.0.SNAPSHOT]
>         at org.apache.brooklyn.core.mgmt.rebind.RebindManagerImpl.rebindImpl(RebindManagerImpl.java:560)[120:org.apache.brooklyn.core:0.11.0.SNAPSHOT]
>         at org.apache.brooklyn.core.mgmt.rebind.RebindManagerImpl$3.call(RebindManagerImpl.java:510)[120:org.apache.brooklyn.core:0.11.0.SNAPSHOT]
>         at org.apache.brooklyn.core.mgmt.rebind.RebindManagerImpl$3.call(RebindManagerImpl.java:508)[120:org.apache.brooklyn.core:0.11.0.SNAPSHOT]
>         at org.apache.brooklyn.util.core.task.BasicExecutionManager$SubmissionCallable.call(BasicExecutionManager.java:529)[120:org.apache.brooklyn.core:0.11.0.SNAPSHOT]
>         ... 4 more
> Caused by: java.lang.IllegalStateException: problem creating POLICY lplpmv3goo of type
org.apache.brooklyn.entity.zookeeper.ZooKeeperEnsembleImpl$MemberTrackingPolicy
>         at org.apache.brooklyn.core.mgmt.rebind.RebindExceptionHandlerImpl.onCreateFailed(RebindExceptionHandlerImpl.java:265)[120:org.apache.brooklyn.core:0.11.0.SNAPSHOT]
>         at org.apache.brooklyn.core.mgmt.rebind.RebindIteration.instantiateAdjuncts(RebindIteration.java:484)[120:org.apache.brooklyn.core:0.11.0.SNAPSHOT]
>         at org.apache.brooklyn.core.mgmt.rebind.RebindIteration.doRun(RebindIteration.java:241)[120:org.apache.brooklyn.core:0.11.0.SNAPSHOT]
>         at org.apache.brooklyn.core.mgmt.rebind.InitialFullRebindIteration.doRun(InitialFullRebindIteration.java:69)[120:org.apache.brooklyn.core:0.11.0.SNAPSHOT]
>         at org.apache.brooklyn.core.mgmt.rebind.RebindIteration.run(RebindIteration.java:265)[120:org.apache.brooklyn.core:0.11.0.SNAPSHOT]
>         ... 8 more
> Caused by: java.lang.IllegalStateException: Cannot instantiate instance of type class
org.apache.brooklyn.entity.zookeeper.ZooKeeperEnsembleImpl$MemberTrackingPolicy; expected
constructor signature not found (args are [{id=lplpmv3goo, deferConstructionChecks=true, noConstructionInit=true,
group=ZooKeeperEnsembleImpl{id=stkwkmp76w}, uniqueTag=MemberTrackingPolicy:ZooKeeperEnsembleImpl{id=stkwkmp76w},
tags=[]}])
>         at org.apache.brooklyn.core.mgmt.rebind.RebindIteration$BrooklynObjectInstantiator.invokeConstructor(RebindIteration.java:1157)[120:org.apache.brooklyn.core:0.11.0.SNAPSHOT]
>         at org.apache.brooklyn.core.mgmt.rebind.RebindIteration$BrooklynObjectInstantiator.newPolicy(RebindIteration.java:1061)[120:org.apache.brooklyn.core:0.11.0.SNAPSHOT]
>         at org.apache.brooklyn.core.mgmt.rebind.RebindIteration.instantiateAdjuncts(RebindIteration.java:481)[120:org.apache.brooklyn.core:0.11.0.SNAPSHOT]
>         ... 11 more
> {noformat}
> The problem is that persisted state refers to an instance of {{org.apache.brooklyn.entity.zookeeper.ZooKeeperEnsembleImpl$MemberTrackingPolicy}},
which has since been made a private class. The no-arg constructor is therefore not directly
accessible, which leads us down the wrong code path.
> The generalise advice would be to ensure that the class for anything in persisted state
has a public no-arg constructor.
> A general fix would be to use {{getDeclaredConsturctor(new Class[0])}} (so we get the
private constructor), and then to call the constructor after doing {{constructor.setAccessible(true)}}.
> We should also add a public no-arg constructors to {{ZooKeeperEnsembleImpl$MemberTrackingPolicy}}
(which only exists for backwards compatibility).



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

Mime
View raw message