Details
-
Bug
-
Status: Resolved
-
Resolution: Done
-
None
-
None
-
None
-
None
-
Operating System: All
Platform: All
-
2401
Description
When doing a simple neutron stack, I see endless logs entries that look
like this [1]. Log is pretty much non-useable with all the noise generated.
I suspect that this issue is related to this commit:
—
$ grep -lr "Invocation of inefficient entrySet" *
yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/nodes/UnmodifiableChildrenMap.java
[Flavios-MacBook-Pro:yangtools.git]$
[Flavios-MacBook-Pro:yangtools.git]$ git log yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/nodes/UnmodifiableChildrenMap.java
commit 59d197fc60bccd1fef2e3bef39c859f12a9c1ae8
Author: Robert Varga <rovarga@cisco.com>
Date: Thu Nov 13 14:47:26 2014 +0100
BUG-2377: introduce internal UnmodifiableChildrenMap
This new class acts a replacement of java.util.Collection's version of
the same. Unlike the standard class, this one does not retain cached
versions of keySet and entrySet, since those are unused anyway. We can
also perform an instanceof check, which should speed up operations.
Finally, we check for map emptiness and use Collections.emptyMap()
when possible.
Change-Id: I84c8ac428d6b207fafccf8cc898f0555b104a4ee
Signed-off-by: Robert Varga <rovarga@cisco.com>
–
[1]: https://gist.github.com/c674afa3f930e7c36358
2014-11-18 11:22:52,813 | WARN | ds-oper-thread-0 | UnmodifiableChildrenMap | 253 - org.opendaylight.yangtools.yang-data-impl - 0.7.0.SNAPSHOT | Invocation of inefficient entrySet()
java.lang.Throwable
at org.opendaylight.yangtools.yang.data.impl.schema.nodes.UnmodifiableChildrenMap.entrySet(UnmodifiableChildrenMap.java:118)[253:org.opendaylight.yangtools.yang-data-impl:0.7.0.SNAPSHOT]
at java.util.HashMap.putAllForCreate(HashMap.java:554)[:1.7.0_67]
at java.util.HashMap.<init>(HashMap.java:298)[:1.7.0_67]
at org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.AbstractImmutableDataContainerNodeBuilder.checkDirty(AbstractImmutableDataContainerNodeBuilder.java:65)[253:org.opendaylight.yangtools.yang-data-impl:0.7.0.SNAPSHOT]
at org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.AbstractImmutableDataContainerNodeBuilder.withChild(AbstractImmutableDataContainerNodeBuilder.java:81)[253:org.opendaylight.yangtools.yang-data-impl:0.7.0.SNAPSHOT]
at org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.AbstractImmutableDataContainerNodeAttrBuilder.withChild(AbstractImmutableDataContainerNodeAttrBuilder.java:55)[253:org.opendaylight.yangtools.yang-data-impl:0.7.0.SNAPSHOT]
at org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableMapEntryNodeBuilder.withChild(ImmutableMapEntryNodeBuilder.java:89)[253:org.opendaylight.yangtools.yang-data-impl:0.7.0.SNAPSHOT]
at org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableMapEntryNodeBuilder.withChild(ImmutableMapEntryNodeBuilder.java:22)[253:org.opendaylight.yangtools.yang-data-impl:0.7.0.SNAPSHOT]
at org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.AbstractImmutableDataContainerNodeBuilder.addChild(AbstractImmutableDataContainerNodeBuilder.java:102)[253:org.opendaylight.yangtools.yang-data-impl:0.7.0.SNAPSHOT]
at org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableMapEntryNodeBuilder.addChild(ImmutableMapEntryNodeBuilder.java:22)[253:org.opendaylight.yangtools.yang-data-impl:0.7.0.SNAPSHOT]
at org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.AbstractImmutableDataContainerNodeBuilder.addChild(AbstractImmutableDataContainerNodeBuilder.java:21)[253:org.opendaylight.yangtools.yang-data-impl:0.7.0.SNAPSHOT]
at org.opendaylight.yangtools.yang.data.impl.schema.tree.NormalizedNodeContainerModificationStrategy.mutateChildren(NormalizedNodeContainerModificationStrategy.java:127)[253:org.opendaylight.yangtools.yang-data-impl:0.7.0.SNAPSHOT]
at org.opendaylight.yangtools.yang.data.impl.schema.tree.NormalizedNodeContainerModificationStrategy.applySubtreeChange(NormalizedNodeContainerModificationStrategy.java:154)[253:org.opendaylight.yangtools.yang-data-impl:0.7.0.SNAPSHOT]
at org.opendaylight.yangtools.yang.data.impl.schema.tree.DataNodeContainerModificationStrategy$ListEntryModificationStrategy.applySubtreeChange(DataNodeContainerModificationStrategy.java:133)[253:org.opendaylight.yangtools.yang-data-impl:0.7.0.SNAPSHOT]
at org.opendaylight.yangtools.yang.data.impl.schema.tree.NormalizedNodeContainerModificationStrategy.applyMerge(NormalizedNodeContainerModificationStrategy.java:142)[253:org.opendaylight.yangtools.yang-data-impl:0.7.0.SNAPSHOT]
at org.opendaylight.yangtools.yang.data.impl.schema.tree.SchemaAwareApplyOperation.apply(SchemaAwareApplyOperation.java:213)[253:org.opendaylight.yangtools.yang-data-impl:0.7.0.SNAPSHOT]
at org.opendaylight.yangtools.yang.data.impl.schema.tree.NormalizedNodeContainerModificationStrategy.mutateChildren(NormalizedNodeContainerModificationStrategy.java:123)[253:org.opendaylight.yangtools.yang-data-impl:0.7.0.SNAPSHOT]
at org.opendaylight.yangtools.yang.data.impl.schema.tree.NormalizedNodeContainerModificationStrategy.applySubtreeChange(NormalizedNodeContainerModificationStrategy.java:154)[253:org.opendaylight.yangtools.yang-data-impl:0.7.0.SNAPSHOT]
at org.opendaylight.yangtools.yang.data.impl.schema.tree.NormalizedNodeContainerModificationStrategy$UnorderedMapModificationStrategy.applySubtreeChange(NormalizedNodeContainerModificationStrategy.java:312)[253:org.opendaylight.yangtools.yang-data-impl:0.7.0.SNAPSHOT]
at org.opendaylight.yangtools.yang.data.impl.schema.tree.NormalizedNodeContainerModificationStrategy.applyMerge(NormalizedNodeContainerModificationStrategy.java:142)[253:org.opendaylight.yangtools.yang-data-impl:0.7.0.SNAPSHOT]
at org.opendaylight.yangtools.yang.data.impl.schema.tree.SchemaAwareApplyOperation.apply(SchemaAwareApplyOperation.java:213)[253:org.opendaylight.yangtools.yang-data-impl:0.7.0.SNAPSHOT]
at org.opendaylight.yangtools.yang.data.impl.schema.tree.NormalizedNodeContainerModificationStrategy.mutateChildren(NormalizedNodeContainerModificationStrategy.java:123)[253:org.opendaylight.yangtools.yang-data-impl:0.7.0.SNAPSHOT]
at org.opendaylight.yangtools.yang.data.impl.schema.tree.NormalizedNodeContainerModificationStrategy.applySubtreeChange(NormalizedNodeContainerModificationStrategy.java:154)[253:org.opendaylight.yangtools.yang-data-impl:0.7.0.SNAPSHOT]
at org.opendaylight.yangtools.yang.data.impl.schema.tree.DataNodeContainerModificationStrategy$AugmentationModificationStrategy.applySubtreeChange(DataNodeContainerModificationStrategy.java:96)[253:org.opendaylight.yangtools.yang-data-impl:0.7.0.SNAPSHOT]
at org.opendaylight.yangtools.yang.data.impl.schema.tree.SchemaAwareApplyOperation.apply(SchemaAwareApplyOperation.java:209)[253:org.opendaylight.yangtools.yang-data-impl:0.7.0.SNAPSHOT]
at org.opendaylight.yangtools.yang.data.impl.schema.tree.InMemoryDataTreeModification.resolveSnapshot(InMemoryDataTreeModification.java:124)[253:org.opendaylight.yangtools.yang-data-impl:0.7.0.SNAPSHOT]
at org.opendaylight.yangtools.yang.data.impl.schema.tree.InMemoryDataTreeModification.readNode(InMemoryDataTreeModification.java:107)[253:org.opendaylight.yangtools.yang-data-impl:0.7.0.SNAPSHOT]
at org.opendaylight.controller.md.sal.dom.store.impl.SnapshotBackedWriteTransaction.readSnapshotNode(SnapshotBackedWriteTransaction.java:129)[313:org.opendaylight.controller.sal-inmemory-datastore:1.2.0.SNAPSHOT]
at org.opendaylight.controller.md.sal.dom.store.impl.SnapshotBackedReadWriteTransaction.read(SnapshotBackedReadWriteTransaction.java:49)[313:org.opendaylight.controller.sal-inmemory-datastore:1.2.0.SNAPSHOT]
at org.opendaylight.controller.md.sal.dom.broker.impl.DOMForwardedReadWriteTransaction.read(DOMForwardedReadWriteTransaction.java:47)[307:org.opendaylight.controller.sal-broker-impl:1.2.0.SNAPSHOT]
at org.opendaylight.controller.md.sal.binding.impl.AbstractForwardedTransaction.doRead(AbstractForwardedTransaction.java:63)[310:org.opendaylight.controller.sal-binding-broker-impl:1.2.0.SNAPSHOT]
at org.opendaylight.controller.md.sal.binding.impl.BindingDataReadWriteTransactionImpl.read(BindingDataReadWriteTransactionImpl.java:31)[310:org.opendaylight.controller.sal-binding-broker-impl:1.2.0.SNAPSHOT]
at org.opendaylight.controller.md.statistics.manager.impl.StatListenCommitFlow$1.applyOperation(StatListenCommitFlow.java:148)[339:org.opendaylight.controller.md.statistics-manager:1.2.0.SNAPSHOT]
at org.opendaylight.controller.md.statistics.manager.impl.StatisticsManagerImpl.run(StatisticsManagerImpl.java:196)[339:org.opendaylight.controller.md.statistics-manager:1.2.0.SNAPSHOT]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)[:1.7.0_67]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)[:1.7.0_67]
at java.lang.Thread.run(Thread.java:745)[:1.7.0_67]
Attachments
Issue Links
- blocks
-
YANGTOOLS-367 yang-data-impl: decrease memory overhead of wrapped maps
- Resolved
- is duplicated by
-
CONTROLLER-1027 Exception : Invocation of inefficient entrySet
- Resolved