[
https://issues.apache.org/jira/browse/BROOKLYN-545?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16260460#comment-16260460
]
ASF GitHub Bot commented on BROOKLYN-545:
-----------------------------------------
GitHub user aledsage opened a pull request:
https://github.com/apache/brooklyn-server/pull/902
BROOKLYN-545: Fix DynamicCluster.zoneFailureDetector default val
Fixes https://issues.apache.org/jira/browse/BROOKLYN-545
Below is an extract from the comments in the code, explaining it - see
other code comments for more info:
```
// Previously, when there was a mutable default value for
ZONE_FAILURE_DETECTOR, the second cluster
// would include failure info for the first cluster's zone-locations.
When these were unmanaged,
// the zone-locations would become dangling referenes within the
ZoneFailureDetector. This caused
// NPE on rebind.
//
// Config key persistence was then changed so that statically defined
keys (such as ZONE_FAILURE_DETECTOR,
// declared on the DynamicCluster class) would not be persisted. This
meant that the ZoneFailureDetector
// state was no longer persisted for either location. The NPE on rebind
went away, but the config key
// default value instance was still shared between all clusters.
//
// Now the detector has a null default value. We implicitly set a
transient field for the zoneFailureDetector
// so if using defaults then nothing is persisted. But if a custom
ZoneFailureDetector is supplied, then
// that will be persisted and used.
```
You can merge this pull request into a Git repository by running:
$ git pull https://github.com/aledsage/brooklyn-server
fix-DynamicCluster-zoneFailureDetector-default
Alternatively you can review and apply these changes as the patch at:
https://github.com/apache/brooklyn-server/pull/902.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 #902
----
commit 76ab91489d04cac693399d1b9a1ba1bbb53fa1ae
Author: Aled Sage <[email protected]>
Date: 2017-10-20T16:29:06Z
BROOKLYN-545: Fix DynamicCluster.zoneFailureDetector default val
----
> Rebind failure after using cluster with `enableAvailabilityZones`
> -----------------------------------------------------------------
>
> Key: BROOKLYN-545
> URL: https://issues.apache.org/jira/browse/BROOKLYN-545
> Project: Brooklyn
> Issue Type: Bug
> Affects Versions: 0.12.0
> Reporter: Aled Sage
> Assignee: Aled Sage
> Priority: Critical
>
> I was running Brooklyn 1.0.0-snapshot. On restarting Brooklyn, it failed to
> rebind with the {{NullPointerException}} below in the log.
> This probably affects lots of older versions of Brooklyn as well (I've
> guessed at 0.12.0 in the "affects" field!).
> Problem is that our xstream deserialization is trying to insert a null key
> into a {{ConcurrentHashMap}}. This is because the {{DynamicCluster}}'s config
> key {{dynamiccluster.zone.failureDetector}} has a mutable default value!
> The {{ProportionalZoneFailureDetector.zoneHistories}} contains
> {{locationProxy}} instances for locations that no longer exist.
> I'm guessing the consequence of this bug is that if anyone uses
> {{enableAvailabilityZones}} in an app and then terminates the app (thus
> unmanaging the locations), any subsequent use of an app with
> {{DynamicCluster}} will cause rebind to fail.
> {noformat}
> 2017-10-17T10:37:38,348 ERROR 126 o.a.b.l.c.BasicLauncher [FelixStartLevel]
> Subsystem for persistence had startup error (continuing with startup):
> org.apache.brooklyn.util.exceptions.FatalRuntimeException: Error rebinding to
> persisted state: Failure rebinding: problem loading memento: memento
> h4wlc143uw deserialization error: ConversionException: null : null
> ---- Debugging information ----
> cause-exception : java.lang.NullPointerException
> cause-message : null
> class : java.util.concurrent.ConcurrentHashMap
> required-type : java.util.concurrent.ConcurrentHashMap
> converter-type :
> org.apache.brooklyn.util.core.xstream.StringKeyMapConverter
> path :
> /entity/config/dynamiccluster.memberspec/org.apache.brooklyn.api:org.apache.brooklyn.api.entity.EntitySpec/parameters/org.apache.brooklyn.core:org.apache.brooklyn.core.objs.BasicSpecParameter[19]/configKey/defaultValue/zoneHistories/entry
> line number : 539
> class[1] :
> org.apache.brooklyn.entity.group.zoneaware.ProportionalZoneFailureDetector
> converter-type[1] :
> com.thoughtworks.xstream.converters.reflection.ReflectionConverter
> class[2] : org.apache.brooklyn.core.config.BasicConfigKey
> class[3] : org.apache.brooklyn.core.objs.BasicSpecParameter
> class[4] : com.google.common.collect.ImmutableList
> converter-type[2] :
> org.apache.brooklyn.util.core.xstream.ImmutableListConverter
> class[5] : org.apache.brooklyn.api.entity.EntitySpec
> converter-type[3] :
> org.apache.brooklyn.core.mgmt.persist.XmlMementoSerializer$SpecConverter
> class[6] : java.util.LinkedHashMap
> class[7] :
> org.apache.brooklyn.core.mgmt.rebind.dto.BasicEntityMemento
> version : 1.0.0-SNAPSHOT
> -------------------------------
> org.apache.brooklyn.util.exceptions.FatalRuntimeException: Error rebinding to
> persisted state: Failure rebinding: problem loading memento: memento
> h4wlc143uw deserialization error: ConversionException: null : null
> ---- Debugging information ----
> cause-exception : java.lang.NullPointerException
> cause-message : null
> class : java.util.concurrent.ConcurrentHashMap
> required-type : java.util.concurrent.ConcurrentHashMap
> converter-type :
> org.apache.brooklyn.util.core.xstream.StringKeyMapConverter
> path :
> /entity/config/dynamiccluster.memberspec/org.apache.brooklyn.api:org.apache.brooklyn.api.entity.EntitySpec/parameters/org.apache.brooklyn.core:org.apache.brooklyn.core.objs.BasicSpecParameter[19]/c
> onfigKey/defaultValue/zoneHistories/entry
> line number : 539
> class[1] :
> org.apache.brooklyn.entity.group.zoneaware.ProportionalZoneFailureDetector
> converter-type[1] :
> com.thoughtworks.xstream.converters.reflection.ReflectionConverter
> class[2] : org.apache.brooklyn.core.config.BasicConfigKey
> class[3] : org.apache.brooklyn.core.objs.BasicSpecParameter
> class[4] : com.google.common.collect.ImmutableList
> converter-type[2] :
> org.apache.brooklyn.util.core.xstream.ImmutableListConverter
> class[5] : org.apache.brooklyn.api.entity.EntitySpec
> converter-type[3] :
> org.apache.brooklyn.core.mgmt.persist.XmlMementoSerializer$SpecConverter
> class[6] : java.util.LinkedHashMap
> class[7] :
> org.apache.brooklyn.core.mgmt.rebind.dto.BasicEntityMemento
> version : 1.0.0-SNAPSHOT
> -------------------------------
> at
> org.apache.brooklyn.launcher.common.BasicLauncher.startPersistenceWithoutHA(BasicLauncher.java:654)
> [126:org.apache.brooklyn.launcher-common:1.0.0.SNAPSHOT]
> at
> org.apache.brooklyn.launcher.common.BasicLauncher.startPersistence(BasicLauncher.java:611)
> [126:org.apache.brooklyn.launcher-common:1.0.0.SNAPSHOT]
> at
> org.apache.brooklyn.launcher.common.BasicLauncher.handlePersistence(BasicLauncher.java:501)
> [126:org.apache.brooklyn.launcher-common:1.0.0.SNAPSHOT]
> at
> org.apache.brooklyn.launcher.common.BasicLauncher.startPartTwo(BasicLauncher.java:418)
> [126:org.apache.brooklyn.launcher-common:1.0.0.SNAPSHOT]
> at
> org.apache.brooklyn.launcher.osgi.OsgiLauncherImpl.startOsgi(OsgiLauncherImpl.java:116)
> [333:org.apache.brooklyn.karaf-init:1.0.0.SNAPSHOT]
> at Proxy15e05ead_d753_4d2d_a439_dc3559cde5b4.startOsgi(Unknown
> Source) [?:?]
> at
> org.apache.brooklyn.launcher.osgi.start.OsgiLauncherCompleter.init(OsgiLauncherCompleter.java:36)
> [335:org.apache.brooklyn.karaf-start:1.0.0.SNAPSHOT]
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?]
> at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
> ~[?:?]
> at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> ~[?:?]
> at java.lang.reflect.Method.invoke(Method.java:498) ~[?:?]
> at
> org.apache.aries.blueprint.utils.ReflectionUtils.invoke(ReflectionUtils.java:299)
> [15:org.apache.aries.blueprint.core:1.8.2]
> at
> org.apache.aries.blueprint.container.BeanRecipe.invoke(BeanRecipe.java:980)
> [15:org.apache.aries.blueprint.core:1.8.2]
> at
> org.apache.aries.blueprint.container.BeanRecipe.runBeanProcInit(BeanRecipe.java:736)
> [15:org.apache.aries.blueprint.core:1.8.2]
> at
> org.apache.aries.blueprint.container.BeanRecipe.internalCreate2(BeanRecipe.java:848)
> [15:org.apache.aries.blueprint.core:1.8.2]
> at
> org.apache.aries.blueprint.container.BeanRecipe.internalCreate(BeanRecipe.java:811)
> [15:org.apache.aries.blueprint.core:1.8.2]
> at
> org.apache.aries.blueprint.di.AbstractRecipe$1.call(AbstractRecipe.java:79)
> [15:org.apache.aries.blueprint.core:1.8.2]
> at java.util.concurrent.FutureTask.run(FutureTask.java:266) [?:?]
> at
> org.apache.aries.blueprint.di.AbstractRecipe.create(AbstractRecipe.java:88)
> [15:org.apache.aries.blueprint.core:1.8.2]
> at
> org.apache.aries.blueprint.container.BlueprintRepository.createInstances(BlueprintRepository.java:255)
> [15:org.apache.aries.blueprint.core:1.8.2]
> at
> org.apache.aries.blueprint.container.BlueprintRepository.createAll(BlueprintRepository.java:186)
> [15:org.apache.aries.blueprint.core:1.8.2]
> at
> org.apache.aries.blueprint.container.BlueprintContainerImpl.instantiateEagerComponents(BlueprintContainerImpl.java:704)
> [15:org.apache.aries.blueprint.core:1.8.2]
> at
> org.apache.aries.blueprint.container.BlueprintContainerImpl.doRun(BlueprintContainerImpl.java:410)
> [15:org.apache.aries.blueprint.core:1.8.2]
> at
> org.apache.aries.blueprint.container.BlueprintContainerImpl.run(BlueprintContainerImpl.java:275)
> [15:org.apache.aries.blueprint.core:1.8.2]
> at
> org.apache.aries.blueprint.container.BlueprintExtender.createContainer(BlueprintExtender.java:300)
> [15:org.apache.aries.blueprint.core:1.8.2]
> at
> org.apache.aries.blueprint.container.BlueprintExtender.createContainer(BlueprintExtender.java:269)
> [15:org.apache.aries.blueprint.core:1.8.2]
> at
> org.apache.aries.blueprint.container.BlueprintExtender.createContainer(BlueprintExtender.java:265)
> [15:org.apache.aries.blueprint.core:1.8.2]
> at
> org.apache.aries.blueprint.container.BlueprintExtender.modifiedBundle(BlueprintExtender.java:255)
> [15:org.apache.aries.blueprint.core:1.8.2]
> at
> org.apache.aries.util.tracker.hook.BundleHookBundleTracker$Tracked.customizerModified(BundleHookBundleTracker.java:500)
> [15:org.apache.aries.blueprint.core:1.8.2]
> at
> org.apache.aries.util.tracker.hook.BundleHookBundleTracker$Tracked.customizerModified(BundleHookBundleTracker.java:433)
> [15:org.apache.aries.blueprint.core:1.8.2]
> at
> org.apache.aries.util.tracker.hook.BundleHookBundleTracker$AbstractTracked.track(BundleHookBundleTracker.java:725)
> [15:org.apache.aries.blueprint.core:1.8.2]
> at
> org.apache.aries.util.tracker.hook.BundleHookBundleTracker$Tracked.bundleChanged(BundleHookBundleTracker.java:463)
> [15:org.apache.aries.blueprint.core:1.8.2]
> at
> org.apache.aries.util.tracker.hook.BundleHookBundleTracker$BundleEventHook.event(BundleHookBundleTracker.java:422)
> [15:org.apache.aries.blueprint.core:1.8.2]
> at
> org.apache.felix.framework.util.SecureAction.invokeBundleEventHook(SecureAction.java:1179)
> [?:?]
> at
> org.apache.felix.framework.EventDispatcher.createWhitelistFromHooks(EventDispatcher.java:730)
> [?:?]
> at
> org.apache.felix.framework.EventDispatcher.fireBundleEvent(EventDispatcher.java:485)
> [?:?]
> at org.apache.felix.framework.Felix.fireBundleEvent(Felix.java:4563)
> [?:?]
> at org.apache.felix.framework.Felix.startBundle(Felix.java:2173) [?:?]
> at
> org.apache.felix.framework.Felix.setActiveStartLevel(Felix.java:1372) [?:?]
> at
> org.apache.felix.framework.FrameworkStartLevelImpl.run(FrameworkStartLevelImpl.java:308)
> [?:?]
> at java.lang.Thread.run(Thread.java:748) [?:?]
> Caused by: org.apache.brooklyn.util.exceptions.PropagatedRuntimeException:
> Failure rebinding: problem loading memento: memento h4wlc143uw
> deserialization error: ConversionException: null : null
> ---- Debugging information ----
> cause-exception : java.lang.NullPointerException
> cause-message : null
> class : java.util.concurrent.ConcurrentHashMap
> required-type : java.util.concurrent.ConcurrentHashMap
> converter-type :
> org.apache.brooklyn.util.core.xstream.StringKeyMapConverter
> path :
> /entity/config/dynamiccluster.memberspec/org.apache.brooklyn.api:org.apache.brooklyn.api.entity.EntitySpec/parameters/org.apache.brooklyn.core:org.apache.brooklyn.core.objs.BasicSpecParameter[19]/configKey/defaultValue/zoneHistories/entry
> line number : 539
> class[1] :
> org.apache.brooklyn.entity.group.zoneaware.ProportionalZoneFailureDetector
> converter-type[1] :
> com.thoughtworks.xstream.converters.reflection.ReflectionConverter
> class[2] : org.apache.brooklyn.core.config.BasicConfigKey
> class[3] : org.apache.brooklyn.core.objs.BasicSpecParameter
> class[4] : com.google.common.collect.ImmutableList
> converter-type[2] :
> org.apache.brooklyn.util.core.xstream.ImmutableListConverter
> class[5] : org.apache.brooklyn.api.entity.EntitySpec
> converter-type[3] :
> org.apache.brooklyn.core.mgmt.persist.XmlMementoSerializer$SpecConverter
> class[6] : java.util.LinkedHashMap
> class[7] :
> org.apache.brooklyn.core.mgmt.rebind.dto.BasicEntityMemento
> version : 1.0.0-SNAPSHOT
> -------------------------------
> at
> org.apache.brooklyn.util.exceptions.Exceptions.create(Exceptions.java:481)
> ~[?:?]
> at
> org.apache.brooklyn.core.mgmt.rebind.RebindExceptionHandlerImpl.onDoneImpl(RebindExceptionHandlerImpl.java:504)
> ~[?:?]
> at
> org.apache.brooklyn.core.mgmt.rebind.RebindExceptionHandlerImpl.onDone(RebindExceptionHandlerImpl.java:420)
> ~[?:?]
> at
> org.apache.brooklyn.core.mgmt.rebind.RebindIteration.run(RebindIteration.java:282)
> ~[?:?]
> at
> org.apache.brooklyn.core.mgmt.rebind.RebindManagerImpl.rebindImpl(RebindManagerImpl.java:538)
> ~[?:?]
> at
> org.apache.brooklyn.core.mgmt.rebind.RebindManagerImpl.lambda$rebind$0(RebindManagerImpl.java:494)
> ~[?:?]
> at
> org.apache.brooklyn.util.core.task.BasicExecutionContext$1.call(BasicExecutionContext.java:143)
> ~[?:?]
> at
> org.apache.brooklyn.util.core.task.BasicExecutionContext$1.call(BasicExecutionContext.java:141)
> ~[?:?]
> at
> org.apache.brooklyn.util.core.task.BasicExecutionContext.runInSameThread(BasicExecutionContext.java:227)
> ~[?:?]
> at
> org.apache.brooklyn.util.core.task.BasicExecutionContext.get(BasicExecutionContext.java:141)
> ~[?:?]
> at
> org.apache.brooklyn.core.mgmt.rebind.RebindManagerImpl.rebind(RebindManagerImpl.java:493)
> ~[?:?]
> at
> org.apache.brooklyn.launcher.common.BasicLauncher.startPersistenceWithoutHA(BasicLauncher.java:649)
> ~[?:?]
> ... 40 more
> Caused by: java.lang.IllegalStateException: problem loading memento: memento
> h4wlc143uw deserialization error
> at
> org.apache.brooklyn.core.mgmt.rebind.RebindExceptionHandlerImpl.onLoadMementoFailed(RebindExceptionHandlerImpl.java:179)
> ~[?:?]
> at
> org.apache.brooklyn.core.mgmt.persist.BrooklynMementoPersisterToObjectStore$4.visit(BrooklynMementoPersisterToObjectStore.java:486)
> ~[?:?]
> at
> org.apache.brooklyn.core.mgmt.persist.BrooklynMementoPersisterToObjectStore$1VisitorWrapper.run(BrooklynMementoPersisterToObjectStore.java:530)
> ~[?:?]
> at
> java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) ~[?:?]
> at java.util.concurrent.FutureTask.run(FutureTask.java:266) ~[?:?]
> at
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
> ~[?:?]
> at
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
> ~[?:?]
> ... 1 more
> Caused by: com.thoughtworks.xstream.converters.ConversionException: null :
> null
> ---- Debugging information ----
> cause-exception : java.lang.NullPointerException
> cause-message : null
> class : java.util.concurrent.ConcurrentHashMap
> required-type : java.util.concurrent.ConcurrentHashMap
> converter-type :
> org.apache.brooklyn.util.core.xstream.StringKeyMapConverter
> path :
> /entity/config/dynamiccluster.memberspec/org.apache.brooklyn.api:org.apache.brooklyn.api.entity.EntitySpec/parameters/org.apache.brooklyn.core:org.apache.brooklyn.core.objs.BasicSpecParameter[19]/configKey/defaultValue/zoneHistories/entry
> line number : 539
> class[1] :
> org.apache.brooklyn.entity.group.zoneaware.ProportionalZoneFailureDetector
> converter-type[1] :
> com.thoughtworks.xstream.converters.reflection.ReflectionConverter
> class[2] : org.apache.brooklyn.core.config.BasicConfigKey
> class[3] : org.apache.brooklyn.core.objs.BasicSpecParameter
> class[4] : com.google.common.collect.ImmutableList
> converter-type[2] :
> org.apache.brooklyn.util.core.xstream.ImmutableListConverter
> class[5] : org.apache.brooklyn.api.entity.EntitySpec
> converter-type[3] :
> org.apache.brooklyn.core.mgmt.persist.XmlMementoSerializer$SpecConverter
> class[6] : java.util.LinkedHashMap
> class[7] :
> org.apache.brooklyn.core.mgmt.rebind.dto.BasicEntityMemento
> version : 1.0.0-SNAPSHOT
> -------------------------------
> at
> com.thoughtworks.xstream.core.TreeUnmarshaller.convert(TreeUnmarshaller.java:79)
> ~[?:?]
> at
> com.thoughtworks.xstream.core.AbstractReferenceUnmarshaller.convert(AbstractReferenceUnmarshaller.java:65)
> ~[?:?]
> at
> com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:66)
> ~[?:?]
> at
> com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.unmarshallField(AbstractReflectionConverter.java:480)
> ~[?:?]
> at
> com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.doUnmarshal(AbstractReflectionConverter.java:412)
> ~[?:?]
> at
> com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.unmarshal(AbstractReflectionConverter.java:263)
> ~[?:?]
> at
> com.thoughtworks.xstream.core.TreeUnmarshaller.convert(TreeUnmarshaller.java:72)
> ~[?:?]
> at
> com.thoughtworks.xstream.core.AbstractReferenceUnmarshaller.convert(AbstractReferenceUnmarshaller.java:65)
> ~[?:?]
> at
> com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:66)
> ~[?:?]
> at
> com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.unmarshallField(AbstractReflectionConverter.java:480)
> ~[?:?]
> at
> com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.doUnmarshal(AbstractReflectionConverter.java:412)
> ~[?:?]
> at
> com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.unmarshal(AbstractReflectionConverter.java:263)
> ~[?:?]
> at
> com.thoughtworks.xstream.core.TreeUnmarshaller.convert(TreeUnmarshaller.java:72)
> ~[?:?]
> at
> com.thoughtworks.xstream.core.AbstractReferenceUnmarshaller.convert(AbstractReferenceUnmarshaller.java:65)
> ~[?:?]
> at
> com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:66)
> ~[?:?]
> at
> com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.unmarshallField(AbstractReflectionConverter.java:480)
> ~[?:?]
> at
> com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.doUnmarshal(AbstractReflectionConverter.java:412)
> ~[?:?]
> at
> com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.unmarshal(AbstractReflectionConverter.java:263)
> ~[?:?]
> at
> com.thoughtworks.xstream.core.TreeUnmarshaller.convert(TreeUnmarshaller.java:72)
> ~[?:?]
> at
> com.thoughtworks.xstream.core.AbstractReferenceUnmarshaller.convert(AbstractReferenceUnmarshaller.java:65)
> ~[?:?]
> at
> com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:66)
> ~[?:?]
> at
> com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:50)
> ~[?:?]
> at
> com.thoughtworks.xstream.converters.collections.AbstractCollectionConverter.readItem(AbstractCollectionConverter.java:71)
> ~[?:?]
> at
> com.thoughtworks.xstream.converters.collections.CollectionConverter.addCurrentElementToCollection(CollectionConverter.java:98)
> ~[?:?]
> at
> com.thoughtworks.xstream.converters.collections.CollectionConverter.populateCollection(CollectionConverter.java:91)
> ~[?:?]
> at
> com.thoughtworks.xstream.converters.collections.CollectionConverter.populateCollection(CollectionConverter.java:85)
> ~[?:?]
> at
> org.apache.brooklyn.util.core.xstream.ImmutableListConverter.unmarshal(ImmutableListConverter.java:52)
> ~[?:?]
> at
> com.thoughtworks.xstream.core.TreeUnmarshaller.convert(TreeUnmarshaller.java:72)
> ~[?:?]
> at
> com.thoughtworks.xstream.core.AbstractReferenceUnmarshaller.convert(AbstractReferenceUnmarshaller.java:65)
> ~[?:?]
> at
> com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:66)
> ~[?:?]
> at
> com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.unmarshallField(AbstractReflectionConverter.java:480)
> ~[?:?]
> at
> com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.doUnmarshal(AbstractReflectionConverter.java:412)
> ~[?:?]
> at
> com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.unmarshal(AbstractReflectionConverter.java:263)
> ~[?:?]
> at
> org.apache.brooklyn.core.mgmt.persist.XmlMementoSerializer$SpecConverter.unmarshal(XmlMementoSerializer.java:455)
> ~[?:?]
> at
> com.thoughtworks.xstream.core.TreeUnmarshaller.convert(TreeUnmarshaller.java:72)
> ~[?:?]
> at
> com.thoughtworks.xstream.core.AbstractReferenceUnmarshaller.convert(AbstractReferenceUnmarshaller.java:65)
> ~[?:?]
> at
> com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:66)
> ~[?:?]
> at
> com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:50)
> ~[?:?]
> at
> com.thoughtworks.xstream.converters.collections.AbstractCollectionConverter.readItem(AbstractCollectionConverter.java:71)
> ~[?:?]
> at
> org.apache.brooklyn.util.core.xstream.StringKeyMapConverter.unmarshalStringKey(StringKeyMapConverter.java:120)
> ~[?:?]
> at
> org.apache.brooklyn.util.core.xstream.StringKeyMapConverter.unmarshalEntry(StringKeyMapConverter.java:111)
> ~[?:?]
> at
> org.apache.brooklyn.util.core.xstream.MapConverter.populateMap(MapConverter.java:89)
> ~[?:?]
> at
> com.thoughtworks.xstream.converters.collections.MapConverter.unmarshal(MapConverter.java:87)
> ~[?:?]
> at
> com.thoughtworks.xstream.core.TreeUnmarshaller.convert(TreeUnmarshaller.java:72)
> ~[?:?]
> at
> com.thoughtworks.xstream.core.AbstractReferenceUnmarshaller.convert(AbstractReferenceUnmarshaller.java:65)
> ~[?:?]
> at
> com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:66)
> ~[?:?]
> at
> com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.unmarshallField(AbstractReflectionConverter.java:480)
> ~[?:?]
> at
> com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.doUnmarshal(AbstractReflectionConverter.java:412)
> ~[?:?]
> at
> com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.unmarshal(AbstractReflectionConverter.java:263)
> ~[?:?]
> at
> com.thoughtworks.xstream.core.TreeUnmarshaller.convert(TreeUnmarshaller.java:72)
> ~[?:?]
> at
> com.thoughtworks.xstream.core.AbstractReferenceUnmarshaller.convert(AbstractReferenceUnmarshaller.java:65)
> ~[?:?]
> at
> com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:66)
> ~[?:?]
> at
> com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:50)
> ~[?:?]
> at
> com.thoughtworks.xstream.core.TreeUnmarshaller.start(TreeUnmarshaller.java:134)
> ~[?:?]
> at
> com.thoughtworks.xstream.core.AbstractTreeMarshallingStrategy.unmarshal(AbstractTreeMarshallingStrategy.java:32)
> ~[?:?]
> at com.thoughtworks.xstream.XStream.unmarshal(XStream.java:1206)
> ~[?:?]
> at com.thoughtworks.xstream.XStream.unmarshal(XStream.java:1190)
> ~[?:?]
> at com.thoughtworks.xstream.XStream.fromXML(XStream.java:1061) ~[?:?]
> at
> org.apache.brooklyn.util.core.xstream.XmlSerializer.deserialize(XmlSerializer.java:167)
> ~[?:?]
> at
> org.apache.brooklyn.util.core.xstream.XmlSerializer.fromString(XmlSerializer.java:177)
> ~[?:?]
> at
> org.apache.brooklyn.core.mgmt.persist.RetryingMementoSerializer.fromString(RetryingMementoSerializer.java:71)
> ~[?:?]
> at
> org.apache.brooklyn.core.mgmt.persist.BrooklynMementoPersisterToObjectStore$4.visit(BrooklynMementoPersisterToObjectStore.java:479)
> ~[?:?]
> at
> org.apache.brooklyn.core.mgmt.persist.BrooklynMementoPersisterToObjectStore$1VisitorWrapper.run(BrooklynMementoPersisterToObjectStore.java:530)
> ~[?:?]
> at
> java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) ~[?:?]
> at java.util.concurrent.FutureTask.run(FutureTask.java:266) ~[?:?]
> at
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
> ~[?:?]
> at
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
> ~[?:?]
> ... 1 more
> Caused by: java.lang.NullPointerException
> at
> java.util.concurrent.ConcurrentHashMap.putVal(ConcurrentHashMap.java:1011)
> ~[?:?]
> at
> java.util.concurrent.ConcurrentHashMap.put(ConcurrentHashMap.java:1006) ~[?:?]
> at
> org.apache.brooklyn.util.core.xstream.MapConverter.unmarshalEntry(MapConverter.java:103)
> ~[?:?]
> at
> org.apache.brooklyn.util.core.xstream.StringKeyMapConverter.unmarshalEntry(StringKeyMapConverter.java:109)
> ~[?:?]
> at
> org.apache.brooklyn.util.core.xstream.MapConverter.populateMap(MapConverter.java:89)
> ~[?:?]
> at
> com.thoughtworks.xstream.converters.collections.MapConverter.unmarshal(MapConverter.java:87)
> ~[?:?]
> at
> com.thoughtworks.xstream.core.TreeUnmarshaller.convert(TreeUnmarshaller.java:72)
> ~[?:?]
> at
> com.thoughtworks.xstream.core.AbstractReferenceUnmarshaller.convert(AbstractReferenceUnmarshaller.java:65)
> ~[?:?]
> at
> com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:66)
> ~[?:?]
> at
> com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.unmarshallField(AbstractReflectionConverter.java:480)
> ~[?:?]
> at
> com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.doUnmarshal(AbstractReflectionConverter.java:412)
> ~[?:?]
> at
> com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.unmarshal(AbstractReflectionConverter.java:263)
> ~[?:?]
> at
> com.thoughtworks.xstream.core.TreeUnmarshaller.convert(TreeUnmarshaller.java:72)
> ~[?:?]
> at
> com.thoughtworks.xstream.core.AbstractReferenceUnmarshaller.convert(AbstractReferenceUnmarshaller.java:65)
> ~[?:?]
> at
> com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:66)
> ~[?:?]
> at
> com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.unmarshallField(AbstractReflectionConverter.java:480)
> ~[?:?]
> at
> com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.doUnmarshal(AbstractReflectionConverter.java:412)
> ~[?:?]
> at
> com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.unmarshal(AbstractReflectionConverter.java:263)
> ~[?:?]
> at
> com.thoughtworks.xstream.core.TreeUnmarshaller.convert(TreeUnmarshaller.java:72)
> ~[?:?]
> at
> com.thoughtworks.xstream.core.AbstractReferenceUnmarshaller.convert(AbstractReferenceUnmarshaller.java:65)
> ~[?:?]
> at
> com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:66)
> ~[?:?]
> at
> com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.unmarshallField(AbstractReflectionConverter.java:480)
> ~[?:?]
> at
> com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.doUnmarshal(AbstractReflectionConverter.java:412)
> ~[?:?]
> at
> com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.unmarshal(AbstractReflectionConverter.java:263)
> ~[?:?]
> at
> com.thoughtworks.xstream.core.TreeUnmarshaller.convert(TreeUnmarshaller.java:72)
> ~[?:?]
> at
> com.thoughtworks.xstream.core.AbstractReferenceUnmarshaller.convert(AbstractReferenceUnmarshaller.java:65)
> ~[?:?]
> at
> com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:66)
> ~[?:?]
> at
> com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:50)
> ~[?:?]
> at
> com.thoughtworks.xstream.converters.collections.AbstractCollectionConverter.readItem(AbstractCollectionConverter.java:71)
> ~[?:?]
> at
> com.thoughtworks.xstream.converters.collections.CollectionConverter.addCurrentElementToCollection(CollectionConverter.java:98)
> ~[?:?]
> at
> com.thoughtworks.xstream.converters.collections.CollectionConverter.populateCollection(CollectionConverter.java:91)
> ~[?:?]
> at
> com.thoughtworks.xstream.converters.collections.CollectionConverter.populateCollection(CollectionConverter.java:85)
> ~[?:?]
> at
> org.apache.brooklyn.util.core.xstream.ImmutableListConverter.unmarshal(ImmutableListConverter.java:52)
> ~[?:?]
> at
> com.thoughtworks.xstream.core.TreeUnmarshaller.convert(TreeUnmarshaller.java:72)
> ~[?:?]
> at
> com.thoughtworks.xstream.core.AbstractReferenceUnmarshaller.convert(AbstractReferenceUnmarshaller.java:65)
> ~[?:?]
> at
> com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:66)
> ~[?:?]
> at
> com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.unmarshallField(AbstractReflectionConverter.java:480)
> ~[?:?]
> at
> com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.doUnmarshal(AbstractReflectionConverter.java:412)
> ~[?:?]
> at
> com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.unmarshal(AbstractReflectionConverter.java:263)
> ~[?:?]
> at
> org.apache.brooklyn.core.mgmt.persist.XmlMementoSerializer$SpecConverter.unmarshal(XmlMementoSerializer.java:455)
> ~[?:?]
> at
> com.thoughtworks.xstream.core.TreeUnmarshaller.convert(TreeUnmarshaller.java:72)
> ~[?:?]
> at
> com.thoughtworks.xstream.core.AbstractReferenceUnmarshaller.convert(AbstractReferenceUnmarshaller.java:65)
> ~[?:?]
> at
> com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:66)
> ~[?:?]
> at
> com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:50)
> ~[?:?]
> at
> com.thoughtworks.xstream.converters.collections.AbstractCollectionConverter.readItem(AbstractCollectionConverter.java:71)
> ~[?:?]
> at
> org.apache.brooklyn.util.core.xstream.StringKeyMapConverter.unmarshalStringKey(StringKeyMapConverter.java:120)
> ~[?:?]
> at
> org.apache.brooklyn.util.core.xstream.StringKeyMapConverter.unmarshalEntry(StringKeyMapConverter.java:111)
> ~[?:?]
> at
> org.apache.brooklyn.util.core.xstream.MapConverter.populateMap(MapConverter.java:89)
> ~[?:?]
> at
> com.thoughtworks.xstream.converters.collections.MapConverter.unmarshal(MapConverter.java:87)
> ~[?:?]
> at
> com.thoughtworks.xstream.core.TreeUnmarshaller.convert(TreeUnmarshaller.java:72)
> ~[?:?]
> at
> com.thoughtworks.xstream.core.AbstractReferenceUnmarshaller.convert(AbstractReferenceUnmarshaller.java:65)
> ~[?:?]
> at
> com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:66)
> ~[?:?]
> at
> com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.unmarshallField(AbstractReflectionConverter.java:480)
> ~[?:?]
> at
> com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.doUnmarshal(AbstractReflectionConverter.java:412)
> ~[?:?]
> at
> com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.unmarshal(AbstractReflectionConverter.java:263)
> ~[?:?]
> at
> com.thoughtworks.xstream.core.TreeUnmarshaller.convert(TreeUnmarshaller.java:72)
> ~[?:?]
> at
> com.thoughtworks.xstream.core.AbstractReferenceUnmarshaller.convert(AbstractReferenceUnmarshaller.java:65)
> ~[?:?]
> at
> com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:66)
> ~[?:?]
> at
> com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:50)
> ~[?:?]
> at
> com.thoughtworks.xstream.core.TreeUnmarshaller.start(TreeUnmarshaller.java:134)
> ~[?:?]
> at
> com.thoughtworks.xstream.core.AbstractTreeMarshallingStrategy.unmarshal(AbstractTreeMarshallingStrategy.java:32)
> ~[?:?]
> at com.thoughtworks.xstream.XStream.unmarshal(XStream.java:1206)
> ~[?:?]
> at com.thoughtworks.xstream.XStream.unmarshal(XStream.java:1190)
> ~[?:?]
> at com.thoughtworks.xstream.XStream.fromXML(XStream.java:1061) ~[?:?]
> at
> org.apache.brooklyn.util.core.xstream.XmlSerializer.deserialize(XmlSerializer.java:167)
> ~[?:?]
> at
> org.apache.brooklyn.util.core.xstream.XmlSerializer.fromString(XmlSerializer.java:177)
> ~[?:?]
> at
> org.apache.brooklyn.core.mgmt.persist.RetryingMementoSerializer.fromString(RetryingMementoSerializer.java:71)
> ~[?:?]
> at
> org.apache.brooklyn.core.mgmt.persist.BrooklynMementoPersisterToObjectStore$4.visit(BrooklynMementoPersisterToObjectStore.java:479)
> ~[?:?]
> at
> org.apache.brooklyn.core.mgmt.persist.BrooklynMementoPersisterToObjectStore$1VisitorWrapper.run(BrooklynMementoPersisterToObjectStore.java:530)
> ~[?:?]
> at
> java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) ~[?:?]
> at java.util.concurrent.FutureTask.run(FutureTask.java:266) ~[?:?]
> at
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
> ~[?:?]
> at
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
> ~[?:?]
> ... 1 more
> {noformat}
--
This message was sent by Atlassian JIRA
(v6.4.14#64029)