Details
-
Bug
-
Status: Resolved
-
Resolution: Done
-
None
-
None
-
None
-
None
-
Operating System: Mac OS
Platform: PC
-
1604
-
Highest
Description
The scenario is a complete overwrite of a datastore element. During OndataChanged() I spawn an executor to overwrite the data that triggered onDataChanged() itself.
Meaning, an element with a certain key already exists and I'm overwriting it with new values.
This has always worked until 24hrs ago.
On 8/22/14 9:54 AM, Reinaldo Penno wrote:
> Hi,
>
> I think a controller/Yangtools commit broke SFC project in the last 24 hrs.
>
> Something that always worked until the last 24 hrs, stopped working. Basically this operation
>
> writeTx.put(LogicalDatastoreType.CONFIGURATION,
> sfpIID, newServiceFunctionPath, true);
>
>
> Now gives me:
>
> at com.google.common.base.Preconditions.checkArgument(Preconditions.java:76)
> at org.opendaylight.yangtools.yang.data.impl.schema.ImmutableNormalizedNodeStreamWriter.startOrderedMapNode(ImmutableNormalizedNodeStreamWriter.java:188)
> at org.opendaylight.yangtools.binding.data.codec.impl.BindingToNormalizedStreamWriter.startOrderedMapNode(BindingToNormalizedStreamWriter.java:173)
> at org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.sfc.sfp.rev140701.service.function.paths.ServiceFunctionPath$StreamWriter.serialize(DataObjectSerializerPrototype.java)
> at org.opendaylight.yangtools.binding.data.codec.impl.BindingNormalizedNodeCodecRegistry$DataObjectSerializerProxy.serialize(BindingNormalizedNodeCodecRegistry.java:180)
> at org.opendaylight.yangtools.binding.data.codec.impl.BindingNormalizedNodeCodecRegistry.toNormalizedNode(BindingNormalizedNodeCodecRegistry.java:91)
> at org.opendaylight.controller.md.sal.binding.impl.BindingToNormalizedNodeCodec.toNormalizedNode(BindingToNormalizedNodeCodec.java:54)
> at org.opendaylight.controller.md.sal.binding.impl.AbstractWriteTransaction.put(AbstractWriteTransaction.java:46)
> at org.opendaylight.sfc.provider.SfcProviderServicePathAPI.createServiceFunctionPathEntry(SfcProviderServicePathAPI.java:317)
> ... 8 more
>
>
What I noticed is that in OnDataChanged() instead of getting an actual object (as I used to) I'm getting a LazyDataObject and the data is Immutable.
h =
{org.opendaylight.yangtools.binding.data.codec.impl.LazyDataObject@12331}cachedData =
{java.util.concurrent.ConcurrentHashMap@12332} size = 5
data =
"ImmutableMapEntryNode{nodeIdentifier=(urn:cisco:params:xml:ns:yang:sfc-sfp?revision=2014-07-01)service-function-path[
{(urn:cisco:params:xml:ns:yang:sfc-sfp?revision=2014-07-01)name=Path-2-SFC1}], value=[ImmutableLeafNode{nodeIdentifier=(urn:cisco:params:...
context =
"ListNodeCodecContext [interface org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.sfc.sfp.rev140701.service.function.paths.ServiceFunctionPath]"
cachedAugmentations =
size = 0
cachedHashcode = null
> The scenario is a complete overwrite of a datastore element. Meaning, an element with a certain key already exists and I'm overwriting it with new values.
>
> Anybody knows what this could be?