[MDSAL-213] Serializing DataObject to JSON causes frozen class exception Created: 21/Dec/16 Updated: 12/Jun/18 Resolved: 06/Jun/18 |
|
| Status: | Resolved |
| Project: | mdsal |
| Component/s: | Binding runtime |
| Affects Version/s: | None |
| Fix Version/s: | None |
| Type: | Bug | ||
| Reporter: | Guy Sela | Assignee: | Michael Vorburger |
| Resolution: | Cannot Reproduce | Votes: | 0 |
| Labels: | None | ||
| Remaining Estimate: | Not Specified | ||
| Time Spent: | Not Specified | ||
| Original Estimate: | Not Specified | ||
| Environment: |
Operating System: All |
||
| Attachments: |
|
||||||||||||||||||||||||||||
| Issue Links: |
|
||||||||||||||||||||||||||||
| External issue ID: | 7420 | ||||||||||||||||||||||||||||
| Description |
|
Working with a version close to stable/boron. 2016-12-21 14:10:17,114 | ERROR | pool-63-thread-4 | FederationProducerMgr | 360 - org.opendaylight.federation.service-impl - 0.1.2.SNAPSHOT | com.google.common.util.concurrent.UncheckedExecutionException: java.lang.RuntimeException: org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.OvsdbNodeAugmentation$StreamWriter: frozen class (cannot edit)
com.google.common.util.concurrent.UncheckedExecutionException: com.google.common.util.concurrent.UncheckedExecutionException: java.lang.RuntimeException: org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.OvsdbNodeAugmentation$StreamWriter: frozen class (cannot edit)
at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2203)[38:com.google.guava:18.0.0]
at com.google.common.cache.LocalCache.get(LocalCache.java:3937)[38:com.google.guava:18.0.0]
at com.google.common.cache.LocalCache.getOrLoad(LocalCache.java:3941)[38:com.google.guava:18.0.0]
at com.google.common.cache.LocalCache$LocalLoadingCache.get(LocalCache.java:4824)[38:com.google.guava:18.0.0]
at com.google.common.cache.LocalCache$LocalLoadingCache.getUnchecked(LocalCache.java:4830)[38:com.google.guava:18.0.0]
at org.opendaylight.yangtools.binding.data.codec.impl.BindingNormalizedNodeCodecRegistry.getSerializer(BindingNormalizedNodeCodecRegistry.java:72)[92:org.opendaylight.mdsal.binding-dom-codec:0.9.2.SNAPSHOT]
at org.opendaylight.yangtools.binding.data.codec.util.AugmentableDispatchSerializer.emitAugmentation(AugmentableDispatchSerializer.java:77)[92:org.opendaylight.mdsal.binding-dom-codec:0.9.2.SNAPSHOT]
at org.opendaylight.yangtools.binding.data.codec.util.AugmentableDispatchSerializer.serialize(AugmentableDispatchSerializer.java:51)[92:org.opendaylight.mdsal.binding-dom-codec:0.9.2.SNAPSHOT]
at org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Node$StreamWriter.serialize(DataObjectSerializerPrototype.java)[57:org.opendaylight.mdsal.model.ietf-topology:2013.10.21.9_2-SNAPSHOT]
at org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.Topology$StreamWriter.serialize(DataObjectSerializerPrototype.java)[57:org.opendaylight.mdsal.model.ietf-topology:2013.10.21.9_2-SNAPSHOT]
at org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.NetworkTopology$StreamWriter.serialize(DataObjectSerializerPrototype.java)[57:org.opendaylight.mdsal.model.ietf-topology:2013.10.21.9_2-SNAPSHOT]
at org.opendaylight.yangtools.binding.data.codec.impl.BindingNormalizedNodeCodecRegistry$DataObjectSerializerProxy.serialize(BindingNormalizedNodeCodecRegistry.java:295)[92:org.opendaylight.mdsal.binding-dom-codec:0.9.2.SNAPSHOT]
at org.opendaylight.federation.service.api.message.BindingAwareJsonConverter.jsonStringFromDataObject(BindingAwareJsonConverter.java:147)[359:org.opendaylight.federation.service-api:0.1.2.SNAPSHOT]
|
| Comments |
| Comment by Guy Sela [ 21/Dec/16 ] |
|
Attachment karafagain.zip has been added with description: karaf log |
| Comment by Guy Sela [ 21/Dec/16 ] |
|
Attachment karaf.zip has been added with description: Another karaf log experiencing this issue |
| Comment by Peter Kajsa [ 21/Dec/16 ] |
|
It seems like an issue in binding generator, hence moved to md-sal. |
| Comment by Martin Ciglan [ 22/Dec/16 ] |
|
Hi what do you mean by "close to stable" ? |
| Comment by Martin Ciglan [ 22/Dec/16 ] |
|
It looks like we came across this issue in the past https://lists.opendaylight.org/pipermail/sfc-dev/2015-November/002344.html investigating ... |
| Comment by Guy Sela [ 22/Dec/16 ] |
|
Synced from stable boron at 15/12/2016. |
| Comment by Guy Sela [ 25/Dec/16 ] |
|
Now I got the same exception while calling tx.merge in a write transaction. It made me think that maybe the concurrent operations i'm doing are:
Can this explain the failure? I'm attaching the log of the new failure |
| Comment by Guy Sela [ 25/Dec/16 ] |
|
Attachment karaf.log.gz has been added with description: Karaf log that fails in merge tx |
| Comment by Guy Sela [ 25/Dec/16 ] |
|
So as a workaround I added a Thread.sleep of 500 millis and retried the operation, and it actually fixed the problem. |
| Comment by Guy Sela [ 25/Dec/16 ] |
|
Okay so apparently I can't apply this workaround, because the frozen class issue can stem from places that are not in my control: |
| Comment by Robert Varga [ 30/Jan/18 ] |
|
I suspect we need to move away from javassist to get rid of this issue. I suspect this happens because the class loaders are not completely cleaned up and we end up with untracked codec classes. |
| Comment by Michael Vorburger [ 08/May/18 ] |
|
We've hit this one again, and apparently we (not myself but aswins JankiChhatbar smalleni ?) can now fairly reliably reproduce this... MDSAL maintainers rovarga tpantelis martin.ciglan can you help with this? Otherwise I guess I'll have to dig into this code to see if I can make any sense of this... |
| Comment by Michael Vorburger [ 08/May/18 ] |
|
FTR: As was discussed in 2018-04-30T15:08:33,051 | ERROR | org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.FlowCapableNode_AsyncClusteredDataTreeChangeListenerBase-DataTreeChangeHandler-0 | AsyncClusteredDataTreeChangeListenerBase | 263 - org.opendaylight.genius.mdsalutil-api - 0.4.0.redhat-8 | Thread terminated due to uncaught exception: org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.FlowCapableNode_AsyncClusteredDataTreeChangeListenerBase-DataTreeChangeHandler-0
com.google.common.util.concurrent.UncheckedExecutionException: com.google.common.util.concurrent.UncheckedExecutionException: com.google.common.util.concurrent.UncheckedExecutionException: com.google.common.util.concurrent.UncheckedExecutionException: java.lang.RuntimeException: org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.Metadata$StreamWriter: frozen class (cannot edit)
at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2218) [32:com.google.guava:23.3.0.jre]
at com.google.common.cache.LocalCache.get(LocalCache.java:4147) [32:com.google.guava:23.3.0.jre]
at com.google.common.cache.LocalCache.getOrLoad(LocalCache.java:4151) [32:com.google.guava:23.3.0.jre]
at com.google.common.cache.LocalCache$LocalLoadingCache.get(LocalCache.java:5140) [32:com.google.guava:23.3.0.jre]
at com.google.common.cache.LocalCache$LocalLoadingCache.getUnchecked(LocalCache.java:5146) [32:com.google.guava:23.3.0.jre]
at org.opendaylight.mdsal.binding.dom.codec.impl.BindingNormalizedNodeCodecRegistry.getSerializer(BindingNormalizedNodeCodecRegistry.java:72) [290:org.opendaylight.mdsal.binding-dom-codec:0.12.0.redhat-8]
at org.opendaylight.mdsal.binding.dom.codec.impl.BindingNormalizedNodeCodecRegistry.toNormalizedNode(BindingNormalizedNodeCodecRegistry.java:107) [290:org.opendaylight.mdsal.binding-dom-codec:0.12.0.redhat-8]
at org.opendaylight.controller.md.sal.binding.impl.BindingToNormalizedNodeCodec.toNormalizedNode(BindingToNormalizedNodeCodec.java:134) [220:org.opendaylight.controller.sal-binding-broker-impl:1.7.0.redhat-8]
at org.opendaylight.controller.md.sal.binding.impl.AbstractWriteTransaction.put(AbstractWriteTransaction.java:39) [220:org.opendaylight.controller.sal-binding-broker-impl:1.7.0.redhat-8]
at org.opendaylight.genius.mdsalutil.internal.MDSALManager.writeFlowEntityInternal(MDSALManager.java:183) [264:org.opendaylight.genius.mdsalutil-impl:0.4.0.redhat-8]
at org.opendaylight.genius.mdsalutil.internal.MDSALManager.installFlowInternal(MDSALManager.java:142) [264:org.opendaylight.genius.mdsalutil-impl:0.4.0.redhat-8]
at org.opendaylight.genius.mdsalutil.internal.MDSALManager.installFlow(MDSALManager.java:609) [264:org.opendaylight.genius.mdsalutil-impl:0.4.0.redhat-8]
at Proxydde4f757_0177_4930_af4f_a514886e67a6.installFlow(Unknown Source) [?:?]
at Proxy12933f77_31f6_4e8b_b7ca_4582b0b424a9.installFlow(Unknown Source) [?:?]
at org.opendaylight.netvirt.ipv6service.Ipv6NodeListener.createTableMissEntry(Ipv6NodeListener.java:91) [356:org.opendaylight.netvirt.ipv6service-impl:0.6.0.redhat-8]
at org.opendaylight.netvirt.ipv6service.Ipv6NodeListener.add(Ipv6NodeListener.java:74) [356:org.opendaylight.netvirt.ipv6service-impl:0.6.0.redhat-8]
at org.opendaylight.netvirt.ipv6service.Ipv6NodeListener.add(Ipv6NodeListener.java:36) [356:org.opendaylight.netvirt.ipv6service-impl:0.6.0.redhat-8]
at org.opendaylight.genius.datastoreutils.AsyncClusteredDataTreeChangeListenerBase$DataTreeChangeHandler.run(AsyncClusteredDataTreeChangeListenerBase.java:155) [263:org.opendaylight.genius.mdsalutil-api:0.4.0.redhat-8]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [?:?]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [?:?]
at java.lang.Thread.run(Thread.java:748) [?:?]
Caused by: com.google.common.util.concurrent.UncheckedExecutionException: com.google.common.util.concurrent.UncheckedExecutionException: com.google.common.util.concurrent.UncheckedExecutionException: java.lang.RuntimeException: org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.Metadata$StreamWriter: frozen class (cannot edit)
at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2218) ~[32:com.google.guava:23.3.0.jre]
at com.google.common.cache.LocalCache.get(LocalCache.java:4147) ~[32:com.google.guava:23.3.0.jre]
at com.google.common.cache.LocalCache.getOrLoad(LocalCache.java:4151) ~[32:com.google.guava:23.3.0.jre]
at com.google.common.cache.LocalCache$LocalLoadingCache.get(LocalCache.java:5140) ~[32:com.google.guava:23.3.0.jre]
at com.google.common.cache.LocalCache$LocalLoadingCache.getUnchecked(LocalCache.java:5146) ~[32:com.google.guava:23.3.0.jre]
at org.opendaylight.mdsal.binding.dom.codec.gen.impl.AbstractStreamWriterGenerator.getSerializer(AbstractStreamWriterGenerator.java:87) ~[290:org.opendaylight.mdsal.binding-dom-codec:0.12.0.redhat-8]
at org.opendaylight.mdsal.binding.dom.codec.impl.BindingNormalizedNodeCodecRegistry$GeneratorLoader.load(BindingNormalizedNodeCodecRegistry.java:283) ~[290:org.opendaylight.mdsal.binding-dom-codec:0.12.0.redhat-8]
at org.opendaylight.mdsal.binding.dom.codec.impl.BindingNormalizedNodeCodecRegistry$GeneratorLoader.load(BindingNormalizedNodeCodecRegistry.java:280) ~[290:org.opendaylight.mdsal.binding-dom-codec:0.12.0.redhat-8]
at com.google.common.cache.LocalCache$LoadingValueReference.loadFuture(LocalCache.java:3708) ~[32:com.google.guava:23.3.0.jre]
at com.google.common.cache.LocalCache$Segment.loadSync(LocalCache.java:2416) ~[32:com.google.guava:23.3.0.jre]
at com.google.common.cache.LocalCache$Segment.lockedGetOrLoad(LocalCache.java:2299) ~[32:com.google.guava:23.3.0.jre]
at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2212) ~[32:com.google.guava:23.3.0.jre]
... 20 more
Caused by: com.google.common.util.concurrent.UncheckedExecutionException: com.google.common.util.concurrent.UncheckedExecutionException: java.lang.RuntimeException: org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.Metadata$StreamWriter: frozen class (cannot edit)
at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2218) ~[32:com.google.guava:23.3.0.jre]
at com.google.common.cache.LocalCache.get(LocalCache.java:4147) ~[32:com.google.guava:23.3.0.jre]
at com.google.common.cache.LocalCache.getOrLoad(LocalCache.java:4151) ~[32:com.google.guava:23.3.0.jre]
at com.google.common.cache.LocalCache$LocalLoadingCache.get(LocalCache.java:5140) ~[32:com.google.guava:23.3.0.jre]
at com.google.common.cache.LocalCache$LocalLoadingCache.getUnchecked(LocalCache.java:5146) ~[32:com.google.guava:23.3.0.jre]
at org.opendaylight.mdsal.binding.dom.codec.gen.impl.AbstractStreamWriterGenerator.loadSerializerFor(AbstractStreamWriterGenerator.java:97) ~[290:org.opendaylight.mdsal.binding-dom-codec:0.12.0.redhat-8]
at org.opendaylight.mdsal.binding.dom.codec.gen.impl.DataObjectSerializerSource.staticInvokeEmitter(DataObjectSerializerSource.java:144) ~[290:org.opendaylight.mdsal.binding-dom-codec:0.12.0.redhat-8]
at org.opendaylight.mdsal.binding.dom.codec.gen.impl.DataNodeContainerSerializerSource.emitChildInner(DataNodeContainerSerializerSource.java:184) ~[290:org.opendaylight.mdsal.binding-dom-codec:0.12.0.redhat-8]
at org.opendaylight.mdsal.binding.dom.codec.gen.impl.DataNodeContainerSerializerSource.emitChild(DataNodeContainerSerializerSource.java:158) ~[290:org.opendaylight.mdsal.binding-dom-codec:0.12.0.redhat-8]
at org.opendaylight.mdsal.binding.dom.codec.gen.impl.DataNodeContainerSerializerSource.emitBody(DataNodeContainerSerializerSource.java:148) ~[290:org.opendaylight.mdsal.binding-dom-codec:0.12.0.redhat-8]
at org.opendaylight.mdsal.binding.dom.codec.gen.impl.DataNodeContainerSerializerSource.getSerializerBody(DataNodeContainerSerializerSource.java:83) ~[290:org.opendaylight.mdsal.binding-dom-codec:0.12.0.redhat-8]
at org.opendaylight.mdsal.binding.dom.codec.gen.impl.AbstractStreamWriterGenerator.lambda$generateEmitter0$0(AbstractStreamWriterGenerator.java:205) ~[290:org.opendaylight.mdsal.binding-dom-codec:0.12.0.redhat-8]
at org.opendaylight.yangtools.util.ClassLoaderUtils.withClassLoader(ClassLoaderUtils.java:51) ~[425:org.opendaylight.yangtools.util:2.0.1.redhat-8]
at org.opendaylight.mdsal.binding.dom.codec.gen.impl.AbstractStreamWriterGenerator.generateEmitter0(AbstractStreamWriterGenerator.java:204) ~[290:org.opendaylight.mdsal.binding-dom-codec:0.12.0.redhat-8]
at org.opendaylight.mdsal.binding.dom.codec.gen.impl.AbstractStreamWriterGenerator.access$300(AbstractStreamWriterGenerator.java:45) ~[290:org.opendaylight.mdsal.binding-dom-codec:0.12.0.redhat-8]
at org.opendaylight.mdsal.binding.dom.codec.gen.impl.AbstractStreamWriterGenerator$SerializerImplementationLoader.generateSerializer(AbstractStreamWriterGenerator.java:138) ~[290:org.opendaylight.mdsal.binding-dom-codec:0.12.0.redhat-8]
at org.opendaylight.mdsal.binding.dom.codec.gen.impl.AbstractStreamWriterGenerator$SerializerImplementationLoader.load(AbstractStreamWriterGenerator.java:124) ~[290:org.opendaylight.mdsal.binding-dom-codec:0.12.0.redhat-8]
at org.opendaylight.mdsal.binding.dom.codec.gen.impl.AbstractStreamWriterGenerator$SerializerImplementationLoader.load(AbstractStreamWriterGenerator.java:100) ~[290:org.opendaylight.mdsal.binding-dom-codec:0.12.0.redhat-8]
at com.google.common.cache.LocalCache$LoadingValueReference.loadFuture(LocalCache.java:3708) ~[32:com.google.guava:23.3.0.jre]
at com.google.common.cache.LocalCache$Segment.loadSync(LocalCache.java:2416) ~[32:com.google.guava:23.3.0.jre]
at com.google.common.cache.LocalCache$Segment.lockedGetOrLoad(LocalCache.java:2299) ~[32:com.google.guava:23.3.0.jre]
at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2212) ~[32:com.google.guava:23.3.0.jre]
at com.google.common.cache.LocalCache.get(LocalCache.java:4147) ~[32:com.google.guava:23.3.0.jre]
at com.google.common.cache.LocalCache.getOrLoad(LocalCache.java:4151) ~[32:com.google.guava:23.3.0.jre]
at com.google.common.cache.LocalCache$LocalLoadingCache.get(LocalCache.java:5140) ~[32:com.google.guava:23.3.0.jre]
at com.google.common.cache.LocalCache$LocalLoadingCache.getUnchecked(LocalCache.java:5146) ~[32:com.google.guava:23.3.0.jre]
at org.opendaylight.mdsal.binding.dom.codec.gen.impl.AbstractStreamWriterGenerator.getSerializer(AbstractStreamWriterGenerator.java:87) ~[290:org.opendaylight.mdsal.binding-dom-codec:0.12.0.redhat-8]
at org.opendaylight.mdsal.binding.dom.codec.impl.BindingNormalizedNodeCodecRegistry$GeneratorLoader.load(BindingNormalizedNodeCodecRegistry.java:283) ~[290:org.opendaylight.mdsal.binding-dom-codec:0.12.0.redhat-8]
at org.opendaylight.mdsal.binding.dom.codec.impl.BindingNormalizedNodeCodecRegistry$GeneratorLoader.load(BindingNormalizedNodeCodecRegistry.java:280) ~[290:org.opendaylight.mdsal.binding-dom-codec:0.12.0.redhat-8]
at com.google.common.cache.LocalCache$LoadingValueReference.loadFuture(LocalCache.java:3708) ~[32:com.google.guava:23.3.0.jre]
at com.google.common.cache.LocalCache$Segment.loadSync(LocalCache.java:2416) ~[32:com.google.guava:23.3.0.jre]
at com.google.common.cache.LocalCache$Segment.lockedGetOrLoad(LocalCache.java:2299) ~[32:com.google.guava:23.3.0.jre]
at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2212) ~[32:com.google.guava:23.3.0.jre]
... 20 more
Caused by: com.google.common.util.concurrent.UncheckedExecutionException: java.lang.RuntimeException: org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.Metadata$StreamWriter: frozen class (cannot edit)
at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2218) ~[32:com.google.guava:23.3.0.jre]
at com.google.common.cache.LocalCache.get(LocalCache.java:4147) ~[32:com.google.guava:23.3.0.jre]
at com.google.common.cache.LocalCache.getOrLoad(LocalCache.java:4151) ~[32:com.google.guava:23.3.0.jre]
at com.google.common.cache.LocalCache$LocalLoadingCache.get(LocalCache.java:5140) ~[32:com.google.guava:23.3.0.jre]
at com.google.common.cache.LocalCache$LocalLoadingCache.getUnchecked(LocalCache.java:5146) ~[32:com.google.guava:23.3.0.jre]
at org.opendaylight.mdsal.binding.dom.codec.gen.impl.AbstractStreamWriterGenerator.loadSerializerFor(AbstractStreamWriterGenerator.java:97) ~[290:org.opendaylight.mdsal.binding-dom-codec:0.12.0.redhat-8]
at org.opendaylight.mdsal.binding.dom.codec.gen.impl.DataObjectSerializerSource.staticInvokeEmitter(DataObjectSerializerSource.java:144) ~[290:org.opendaylight.mdsal.binding-dom-codec:0.12.0.redhat-8]
at org.opendaylight.mdsal.binding.dom.codec.gen.impl.DataNodeContainerSerializerSource.emitChildInner(DataNodeContainerSerializerSource.java:184) ~[290:org.opendaylight.mdsal.binding-dom-codec:0.12.0.redhat-8]
at org.opendaylight.mdsal.binding.dom.codec.gen.impl.DataNodeContainerSerializerSource.emitChild(DataNodeContainerSerializerSource.java:158) ~[290:org.opendaylight.mdsal.binding-dom-codec:0.12.0.redhat-8]
at org.opendaylight.mdsal.binding.dom.codec.gen.impl.DataNodeContainerSerializerSource.emitBody(DataNodeContainerSerializerSource.java:148) ~[290:org.opendaylight.mdsal.binding-dom-codec:0.12.0.redhat-8]
at org.opendaylight.mdsal.binding.dom.codec.gen.impl.DataNodeContainerSerializerSource.getSerializerBody(DataNodeContainerSerializerSource.java:83) ~[290:org.opendaylight.mdsal.binding-dom-codec:0.12.0.redhat-8]
at org.opendaylight.mdsal.binding.dom.codec.gen.impl.AbstractStreamWriterGenerator.lambda$generateEmitter0$0(AbstractStreamWriterGenerator.java:205) ~[290:org.opendaylight.mdsal.binding-dom-codec:0.12.0.redhat-8]
at org.opendaylight.yangtools.util.ClassLoaderUtils.withClassLoader(ClassLoaderUtils.java:51) ~[425:org.opendaylight.yangtools.util:2.0.1.redhat-8]
at org.opendaylight.mdsal.binding.dom.codec.gen.impl.AbstractStreamWriterGenerator.generateEmitter0(AbstractStreamWriterGenerator.java:204) ~[290:org.opendaylight.mdsal.binding-dom-codec:0.12.0.redhat-8]
at org.opendaylight.mdsal.binding.dom.codec.gen.impl.AbstractStreamWriterGenerator.access$300(AbstractStreamWriterGenerator.java:45) ~[290:org.opendaylight.mdsal.binding-dom-codec:0.12.0.redhat-8]
at org.opendaylight.mdsal.binding.dom.codec.gen.impl.AbstractStreamWriterGenerator$SerializerImplementationLoader.generateSerializer(AbstractStreamWriterGenerator.java:138) ~[290:org.opendaylight.mdsal.binding-dom-codec:0.12.0.redhat-8]
at org.opendaylight.mdsal.binding.dom.codec.gen.impl.AbstractStreamWriterGenerator$SerializerImplementationLoader.load(AbstractStreamWriterGenerator.java:124) ~[290:org.opendaylight.mdsal.binding-dom-codec:0.12.0.redhat-8]
at org.opendaylight.mdsal.binding.dom.codec.gen.impl.AbstractStreamWriterGenerator$SerializerImplementationLoader.load(AbstractStreamWriterGenerator.java:100) ~[290:org.opendaylight.mdsal.binding-dom-codec:0.12.0.redhat-8]
at com.google.common.cache.LocalCache$LoadingValueReference.loadFuture(LocalCache.java:3708) ~[32:com.google.guava:23.3.0.jre]
at com.google.common.cache.LocalCache$Segment.loadSync(LocalCache.java:2416) ~[32:com.google.guava:23.3.0.jre]
at com.google.common.cache.LocalCache$Segment.lockedGetOrLoad(LocalCache.java:2299) ~[32:com.google.guava:23.3.0.jre]
at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2212) ~[32:com.google.guava:23.3.0.jre]
at com.google.common.cache.LocalCache.get(LocalCache.java:4147) ~[32:com.google.guava:23.3.0.jre]
at com.google.common.cache.LocalCache.getOrLoad(LocalCache.java:4151) ~[32:com.google.guava:23.3.0.jre]
at com.google.common.cache.LocalCache$LocalLoadingCache.get(LocalCache.java:5140) ~[32:com.google.guava:23.3.0.jre]
at com.google.common.cache.LocalCache$LocalLoadingCache.getUnchecked(LocalCache.java:5146) ~[32:com.google.guava:23.3.0.jre]
at org.opendaylight.mdsal.binding.dom.codec.gen.impl.AbstractStreamWriterGenerator.loadSerializerFor(AbstractStreamWriterGenerator.java:97) ~[290:org.opendaylight.mdsal.binding-dom-codec:0.12.0.redhat-8]
at org.opendaylight.mdsal.binding.dom.codec.gen.impl.DataObjectSerializerSource.staticInvokeEmitter(DataObjectSerializerSource.java:144) ~[290:org.opendaylight.mdsal.binding-dom-codec:0.12.0.redhat-8]
at org.opendaylight.mdsal.binding.dom.codec.gen.impl.DataNodeContainerSerializerSource.emitChildInner(DataNodeContainerSerializerSource.java:184) ~[290:org.opendaylight.mdsal.binding-dom-codec:0.12.0.redhat-8]
at org.opendaylight.mdsal.binding.dom.codec.gen.impl.DataNodeContainerSerializerSource.emitChild(DataNodeContainerSerializerSource.java:158) ~[290:org.opendaylight.mdsal.binding-dom-codec:0.12.0.redhat-8]
at org.opendaylight.mdsal.binding.dom.codec.gen.impl.DataNodeContainerSerializerSource.emitBody(DataNodeContainerSerializerSource.java:148) ~[290:org.opendaylight.mdsal.binding-dom-codec:0.12.0.redhat-8]
at org.opendaylight.mdsal.binding.dom.codec.gen.impl.DataNodeContainerSerializerSource.getSerializerBody(DataNodeContainerSerializerSource.java:83) ~[290:org.opendaylight.mdsal.binding-dom-codec:0.12.0.redhat-8]
at org.opendaylight.mdsal.binding.dom.codec.gen.impl.AbstractStreamWriterGenerator.lambda$generateEmitter0$0(AbstractStreamWriterGenerator.java:205) ~[290:org.opendaylight.mdsal.binding-dom-codec:0.12.0.redhat-8]
at org.opendaylight.yangtools.util.ClassLoaderUtils.withClassLoader(ClassLoaderUtils.java:51) ~[425:org.opendaylight.yangtools.util:2.0.1.redhat-8]
at org.opendaylight.mdsal.binding.dom.codec.gen.impl.AbstractStreamWriterGenerator.generateEmitter0(AbstractStreamWriterGenerator.java:204) ~[290:org.opendaylight.mdsal.binding-dom-codec:0.12.0.redhat-8]
at org.opendaylight.mdsal.binding.dom.codec.gen.impl.AbstractStreamWriterGenerator.access$300(AbstractStreamWriterGenerator.java:45) ~[290:org.opendaylight.mdsal.binding-dom-codec:0.12.0.redhat-8]
at org.opendaylight.mdsal.binding.dom.codec.gen.impl.AbstractStreamWriterGenerator$SerializerImplementationLoader.generateSerializer(AbstractStreamWriterGenerator.java:138) ~[290:org.opendaylight.mdsal.binding-dom-codec:0.12.0.redhat-8]
at org.opendaylight.mdsal.binding.dom.codec.gen.impl.AbstractStreamWriterGenerator$SerializerImplementationLoader.load(AbstractStreamWriterGenerator.java:124) ~[290:org.opendaylight.mdsal.binding-dom-codec:0.12.0.redhat-8]
at org.opendaylight.mdsal.binding.dom.codec.gen.impl.AbstractStreamWriterGenerator$SerializerImplementationLoader.load(AbstractStreamWriterGenerator.java:100) ~[290:org.opendaylight.mdsal.binding-dom-codec:0.12.0.redhat-8]
at com.google.common.cache.LocalCache$LoadingValueReference.loadFuture(LocalCache.java:3708) ~[32:com.google.guava:23.3.0.jre]
at com.google.common.cache.LocalCache$Segment.loadSync(LocalCache.java:2416) ~[32:com.google.guava:23.3.0.jre]
at com.google.common.cache.LocalCache$Segment.lockedGetOrLoad(LocalCache.java:2299) ~[32:com.google.guava:23.3.0.jre]
at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2212) ~[32:com.google.guava:23.3.0.jre]
at com.google.common.cache.LocalCache.get(LocalCache.java:4147) ~[32:com.google.guava:23.3.0.jre]
at com.google.common.cache.LocalCache.getOrLoad(LocalCache.java:4151) ~[32:com.google.guava:23.3.0.jre]
at com.google.common.cache.LocalCache$LocalLoadingCache.get(LocalCache.java:5140) ~[32:com.google.guava:23.3.0.jre]
at com.google.common.cache.LocalCache$LocalLoadingCache.getUnchecked(LocalCache.java:5146) ~[32:com.google.guava:23.3.0.jre]
at org.opendaylight.mdsal.binding.dom.codec.gen.impl.AbstractStreamWriterGenerator.getSerializer(AbstractStreamWriterGenerator.java:87) ~[290:org.opendaylight.mdsal.binding-dom-codec:0.12.0.redhat-8]
at org.opendaylight.mdsal.binding.dom.codec.impl.BindingNormalizedNodeCodecRegistry$GeneratorLoader.load(BindingNormalizedNodeCodecRegistry.java:283) ~[290:org.opendaylight.mdsal.binding-dom-codec:0.12.0.redhat-8]
at org.opendaylight.mdsal.binding.dom.codec.impl.BindingNormalizedNodeCodecRegistry$GeneratorLoader.load(BindingNormalizedNodeCodecRegistry.java:280) ~[290:org.opendaylight.mdsal.binding-dom-codec:0.12.0.redhat-8]
at com.google.common.cache.LocalCache$LoadingValueReference.loadFuture(LocalCache.java:3708) ~[32:com.google.guava:23.3.0.jre]
at com.google.common.cache.LocalCache$Segment.loadSync(LocalCache.java:2416) ~[32:com.google.guava:23.3.0.jre]
at com.google.common.cache.LocalCache$Segment.lockedGetOrLoad(LocalCache.java:2299) ~[32:com.google.guava:23.3.0.jre]
at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2212) ~[32:com.google.guava:23.3.0.jre]
... 20 more
Caused by: java.lang.RuntimeException: org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.Metadata$StreamWriter: frozen class (cannot edit)
at javassist.ClassPool.checkNotFrozen(ClassPool.java:617) ~[66:javassist:3.21.0.GA]
at javassist.CtClassType.setName(CtClassType.java:353) ~[66:javassist:3.21.0.GA]
at javassist.ClassPool.getAndRename(ClassPool.java:408) ~[66:javassist:3.21.0.GA]
at org.opendaylight.mdsal.binding.generator.util.JavassistUtils.instantiatePrototype(JavassistUtils.java:127) ~[293:org.opendaylight.mdsal.binding-generator-impl:0.12.0.redhat-8]
at org.opendaylight.mdsal.binding.dom.codec.gen.impl.AbstractStreamWriterGenerator.generateEmitter0(AbstractStreamWriterGenerator.java:208) ~[290:org.opendaylight.mdsal.binding-dom-codec:0.12.0.redhat-8]
at org.opendaylight.mdsal.binding.dom.codec.gen.impl.AbstractStreamWriterGenerator.access$300(AbstractStreamWriterGenerator.java:45) ~[290:org.opendaylight.mdsal.binding-dom-codec:0.12.0.redhat-8]
at org.opendaylight.mdsal.binding.dom.codec.gen.impl.AbstractStreamWriterGenerator$SerializerImplementationLoader.generateSerializer(AbstractStreamWriterGenerator.java:138) ~[290:org.opendaylight.mdsal.binding-dom-codec:0.12.0.redhat-8]
at org.opendaylight.mdsal.binding.dom.codec.gen.impl.AbstractStreamWriterGenerator$SerializerImplementationLoader.load(AbstractStreamWriterGenerator.java:124) ~[290:org.opendaylight.mdsal.binding-dom-codec:0.12.0.redhat-8]
at org.opendaylight.mdsal.binding.dom.codec.gen.impl.AbstractStreamWriterGenerator$SerializerImplementationLoader.load(AbstractStreamWriterGenerator.java:100) ~[290:org.opendaylight.mdsal.binding-dom-codec:0.12.0.redhat-8]
at com.google.common.cache.LocalCache$LoadingValueReference.loadFuture(LocalCache.java:3708) ~[32:com.google.guava:23.3.0.jre]
at com.google.common.cache.LocalCache$Segment.loadSync(LocalCache.java:2416) ~[32:com.google.guava:23.3.0.jre]
at com.google.common.cache.LocalCache$Segment.lockedGetOrLoad(LocalCache.java:2299) ~[32:com.google.guava:23.3.0.jre]
at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2212) ~[32:com.google.guava:23.3.0.jre]
at com.google.common.cache.LocalCache.get(LocalCache.java:4147) ~[32:com.google.guava:23.3.0.jre]
at com.google.common.cache.LocalCache.getOrLoad(LocalCache.java:4151) ~[32:com.google.guava:23.3.0.jre]
at com.google.common.cache.LocalCache$LocalLoadingCache.get(LocalCache.java:5140) ~[32:com.google.guava:23.3.0.jre]
at com.google.common.cache.LocalCache$LocalLoadingCache.getUnchecked(LocalCache.java:5146) ~[32:com.google.guava:23.3.0.jre]
at org.opendaylight.mdsal.binding.dom.codec.gen.impl.AbstractStreamWriterGenerator.loadSerializerFor(AbstractStreamWriterGenerator.java:97) ~[290:org.opendaylight.mdsal.binding-dom-codec:0.12.0.redhat-8]
at org.opendaylight.mdsal.binding.dom.codec.gen.impl.DataObjectSerializerSource.staticInvokeEmitter(DataObjectSerializerSource.java:144) ~[290:org.opendaylight.mdsal.binding-dom-codec:0.12.0.redhat-8]
at org.opendaylight.mdsal.binding.dom.codec.gen.impl.DataNodeContainerSerializerSource.emitChildInner(DataNodeContainerSerializerSource.java:184) ~[290:org.opendaylight.mdsal.binding-dom-codec:0.12.0.redhat-8]
at org.opendaylight.mdsal.binding.dom.codec.gen.impl.DataNodeContainerSerializerSource.emitChild(DataNodeContainerSerializerSource.java:158) ~[290:org.opendaylight.mdsal.binding-dom-codec:0.12.0.redhat-8]
at org.opendaylight.mdsal.binding.dom.codec.gen.impl.DataNodeContainerSerializerSource.emitBody(DataNodeContainerSerializerSource.java:148) ~[290:org.opendaylight.mdsal.binding-dom-codec:0.12.0.redhat-8]
at org.opendaylight.mdsal.binding.dom.codec.gen.impl.DataNodeContainerSerializerSource.getSerializerBody(DataNodeContainerSerializerSource.java:83) ~[290:org.opendaylight.mdsal.binding-dom-codec:0.12.0.redhat-8]
at org.opendaylight.mdsal.binding.dom.codec.gen.impl.AbstractStreamWriterGenerator.lambda$generateEmitter0$0(AbstractStreamWriterGenerator.java:205) ~[290:org.opendaylight.mdsal.binding-dom-codec:0.12.0.redhat-8]
at org.opendaylight.yangtools.util.ClassLoaderUtils.withClassLoader(ClassLoaderUtils.java:51) ~[425:org.opendaylight.yangtools.util:2.0.1.redhat-8]
at org.opendaylight.mdsal.binding.dom.codec.gen.impl.AbstractStreamWriterGenerator.generateEmitter0(AbstractStreamWriterGenerator.java:204) ~[290:org.opendaylight.mdsal.binding-dom-codec:0.12.0.redhat-8]
at org.opendaylight.mdsal.binding.dom.codec.gen.impl.AbstractStreamWriterGenerator.access$300(AbstractStreamWriterGenerator.java:45) ~[290:org.opendaylight.mdsal.binding-dom-codec:0.12.0.redhat-8]
at org.opendaylight.mdsal.binding.dom.codec.gen.impl.AbstractStreamWriterGenerator$SerializerImplementationLoader.generateSerializer(AbstractStreamWriterGenerator.java:138) ~[290:org.opendaylight.mdsal.binding-dom-codec:0.12.0.redhat-8]
at org.opendaylight.mdsal.binding.dom.codec.gen.impl.AbstractStreamWriterGenerator$SerializerImplementationLoader.load(AbstractStreamWriterGenerator.java:124) ~[290:org.opendaylight.mdsal.binding-dom-codec:0.12.0.redhat-8]
at org.opendaylight.mdsal.binding.dom.codec.gen.impl.AbstractStreamWriterGenerator$SerializerImplementationLoader.load(AbstractStreamWriterGenerator.java:100) ~[290:org.opendaylight.mdsal.binding-dom-codec:0.12.0.redhat-8]
at com.google.common.cache.LocalCache$LoadingValueReference.loadFuture(LocalCache.java:3708) ~[32:com.google.guava:23.3.0.jre]
at com.google.common.cache.LocalCache$Segment.loadSync(LocalCache.java:2416) ~[32:com.google.guava:23.3.0.jre]
at com.google.common.cache.LocalCache$Segment.lockedGetOrLoad(LocalCache.java:2299) ~[32:com.google.guava:23.3.0.jre]
at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2212) ~[32:com.google.guava:23.3.0.jre]
at com.google.common.cache.LocalCache.get(LocalCache.java:4147) ~[32:com.google.guava:23.3.0.jre]
at com.google.common.cache.LocalCache.getOrLoad(LocalCache.java:4151) ~[32:com.google.guava:23.3.0.jre]
at com.google.common.cache.LocalCache$LocalLoadingCache.get(LocalCache.java:5140) ~[32:com.google.guava:23.3.0.jre]
at com.google.common.cache.LocalCache$LocalLoadingCache.getUnchecked(LocalCache.java:5146) ~[32:com.google.guava:23.3.0.jre]
at org.opendaylight.mdsal.binding.dom.codec.gen.impl.AbstractStreamWriterGenerator.loadSerializerFor(AbstractStreamWriterGenerator.java:97) ~[290:org.opendaylight.mdsal.binding-dom-codec:0.12.0.redhat-8]
at org.opendaylight.mdsal.binding.dom.codec.gen.impl.DataObjectSerializerSource.staticInvokeEmitter(DataObjectSerializerSource.java:144) ~[290:org.opendaylight.mdsal.binding-dom-codec:0.12.0.redhat-8]
at org.opendaylight.mdsal.binding.dom.codec.gen.impl.DataNodeContainerSerializerSource.emitChildInner(DataNodeContainerSerializerSource.java:184) ~[290:org.opendaylight.mdsal.binding-dom-codec:0.12.0.redhat-8]
at org.opendaylight.mdsal.binding.dom.codec.gen.impl.DataNodeContainerSerializerSource.emitChild(DataNodeContainerSerializerSource.java:158) ~[290:org.opendaylight.mdsal.binding-dom-codec:0.12.0.redhat-8]
at org.opendaylight.mdsal.binding.dom.codec.gen.impl.DataNodeContainerSerializerSource.emitBody(DataNodeContainerSerializerSource.java:148) ~[290:org.opendaylight.mdsal.binding-dom-codec:0.12.0.redhat-8]
at org.opendaylight.mdsal.binding.dom.codec.gen.impl.DataNodeContainerSerializerSource.getSerializerBody(DataNodeContainerSerializerSource.java:83) ~[290:org.opendaylight.mdsal.binding-dom-codec:0.12.0.redhat-8]
at org.opendaylight.mdsal.binding.dom.codec.gen.impl.AbstractStreamWriterGenerator.lambda$generateEmitter0$0(AbstractStreamWriterGenerator.java:205) ~[290:org.opendaylight.mdsal.binding-dom-codec:0.12.0.redhat-8]
at org.opendaylight.yangtools.util.ClassLoaderUtils.withClassLoader(ClassLoaderUtils.java:51) ~[425:org.opendaylight.yangtools.util:2.0.1.redhat-8]
at org.opendaylight.mdsal.binding.dom.codec.gen.impl.AbstractStreamWriterGenerator.generateEmitter0(AbstractStreamWriterGenerator.java:204) ~[290:org.opendaylight.mdsal.binding-dom-codec:0.12.0.redhat-8]
at org.opendaylight.mdsal.binding.dom.codec.gen.impl.AbstractStreamWriterGenerator.access$300(AbstractStreamWriterGenerator.java:45) ~[290:org.opendaylight.mdsal.binding-dom-codec:0.12.0.redhat-8]
at org.opendaylight.mdsal.binding.dom.codec.gen.impl.AbstractStreamWriterGenerator$SerializerImplementationLoader.generateSerializer(AbstractStreamWriterGenerator.java:138) ~[290:org.opendaylight.mdsal.binding-dom-codec:0.12.0.redhat-8]
at org.opendaylight.mdsal.binding.dom.codec.gen.impl.AbstractStreamWriterGenerator$SerializerImplementationLoader.load(AbstractStreamWriterGenerator.java:124) ~[290:org.opendaylight.mdsal.binding-dom-codec:0.12.0.redhat-8]
at org.opendaylight.mdsal.binding.dom.codec.gen.impl.AbstractStreamWriterGenerator$SerializerImplementationLoader.load(AbstractStreamWriterGenerator.java:100) ~[290:org.opendaylight.mdsal.binding-dom-codec:0.12.0.redhat-8]
at com.google.common.cache.LocalCache$LoadingValueReference.loadFuture(LocalCache.java:3708) ~[32:com.google.guava:23.3.0.jre]
at com.google.common.cache.LocalCache$Segment.loadSync(LocalCache.java:2416) ~[32:com.google.guava:23.3.0.jre]
at com.google.common.cache.LocalCache$Segment.lockedGetOrLoad(LocalCache.java:2299) ~[32:com.google.guava:23.3.0.jre]
at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2212) ~[32:com.google.guava:23.3.0.jre]
at com.google.common.cache.LocalCache.get(LocalCache.java:4147) ~[32:com.google.guava:23.3.0.jre]
at com.google.common.cache.LocalCache.getOrLoad(LocalCache.java:4151) ~[32:com.google.guava:23.3.0.jre]
at com.google.common.cache.LocalCache$LocalLoadingCache.get(LocalCache.java:5140) ~[32:com.google.guava:23.3.0.jre]
at com.google.common.cache.LocalCache$LocalLoadingCache.getUnchecked(LocalCache.java:5146) ~[32:com.google.guava:23.3.0.jre]
at org.opendaylight.mdsal.binding.dom.codec.gen.impl.AbstractStreamWriterGenerator.getSerializer(AbstractStreamWriterGenerator.java:87) ~[290:org.opendaylight.mdsal.binding-dom-codec:0.12.0.redhat-8]
at org.opendaylight.mdsal.binding.dom.codec.impl.BindingNormalizedNodeCodecRegistry$GeneratorLoader.load(BindingNormalizedNodeCodecRegistry.java:283) ~[290:org.opendaylight.mdsal.binding-dom-codec:0.12.0.redhat-8]
at org.opendaylight.mdsal.binding.dom.codec.impl.BindingNormalizedNodeCodecRegistry$GeneratorLoader.load(BindingNormalizedNodeCodecRegistry.java:280) ~[290:org.opendaylight.mdsal.binding-dom-codec:0.12.0.redhat-8]
at com.google.common.cache.LocalCache$LoadingValueReference.loadFuture(LocalCache.java:3708) ~[32:com.google.guava:23.3.0.jre]
at com.google.common.cache.LocalCache$Segment.loadSync(LocalCache.java:2416) ~[32:com.google.guava:23.3.0.jre]
at com.google.common.cache.LocalCache$Segment.lockedGetOrLoad(LocalCache.java:2299) ~[32:com.google.guava:23.3.0.jre]
at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2212) ~[32:com.google.guava:23.3.0.jre]
... 20 more
|
| Comment by Michael Vorburger [ 08/May/18 ] |
|
> Otherwise I guess I'll have to dig into this code to see if I can make any sense of this... This having been a purely rhetorical
@Test
public void testMDSAL_213() throws NotFoundException, CannotCompileException {
JavassistUtils javassistUtils = JavassistUtils.forClassPool(ClassPool.getDefault());
Class<String> type = String.class;
CtClass poolClass = javassistUtils.instantiatePrototype(type.getName(), "Something$StreamWriter", cls -> { });
@SuppressWarnings({ "unchecked", "unused" })
Class<? extends DataObjectSerializerImplementation> javaClass = poolClass.toClass(type.getClassLoader(), type.getProtectionDomain());
javassistUtils.instantiatePrototype(type.getName(), "Something$StreamWriter", cls -> { });
}
Above is inspired from the real code in org.opendaylight.mdsal.binding.dom.codec.gen.impl.AbstractStreamWriterGenerator but simplified a bit (and we use String as the type instead of the real DataObjectSerializerPrototype just because that is not available in mdsal-binding-dom-codec). If we copy/paste that e.g. into org.opendaylight.mdsal.binding.generator.util.JavassistUtilsTest, then the 2nd instantiatePrototype() indeed causes: java.lang.RuntimeException: Something$StreamWriter: frozen class (cannot edit) But if, and only if, the poolClass.toClass() already happened! So this smells of some concurrency problem - we may be creating the $StreamWriter in parallel? The fact that this problem is only seen in cluster load tests, but not eay gone standard CSITs supports that hypothesis. The trouble is... the way I currently understand the code in AbstractStreamWriterGenerator it SHOULD be concurrency/thread safe? But clearly it's not, as we are hitting this problem (and can reproduce it) - so what am I missing? If not found, we could perhaps also build a dumb band aid fix... the way I understand things, that 2nd new $StreamWriter should be the same as the original one? So... we could cheat, and brush the frozen yogurt RuntimeException under the carpet, IFF we meanwhile have the class in the cache? I'll propose something like that - for discussion. I'll also add some additional logging to see if perhaps that could help to make more sense of what is really going on here. |
| Comment by Robert Varga [ 08/May/18 ] |
|
I think this boils down to classloader vs. classpool vs. cache lifecycle. I do not believe we can just sweep it under the carpet – for that you need to be sure you are sweeping, not smearing ... |
| Comment by Michael Vorburger [ 08/May/18 ] |
|
> I think this boils down to classloader vs. classpool vs. cache lifecycle. right... so the ClassPool (currently) ultimately used in AbstractStreamWriterGenerator is fixed, unless I'm completely mistaken, it's the private static final JavassistUtils JAVASSIST = JavassistUtils.forClassPool(ClassPool.getDefault()); from the BindingToNormalizedNodeCodecFactory? the classloader vs. cache lifecycle is a little unclear to me so far, but one of the changes I've raised today under this JIRA (see above) adds more (debug) logging; if I can get that to run on where we can apparently reproduce this fairly reliably, perhaps we'll learn more. |
| Comment by Michael Vorburger [ 08/May/18 ] |
|
Just for the record, this looks funky, but I don't thinks is our problem here, because we do not evict, at least not programmatically (but GC?): * https://softwaremill.com/race-condition-cache-guava-caffeine/ but we DO have weak Class keys - one of my Gerrits today proposes to remove them. |
| Comment by Robert Varga [ 15/May/18 ] |
|
While we are using weak keys, it is on Class objects – which means that a GC-induced invalidation of the key simply cannot happen while we are using it for lookup. |
| Comment by Michael Vorburger [ 31/May/18 ] |
|
jluhrsen meanwhile has also hit this in NETVIRT-1089, and will try to provide us the new debug logs I recently added. I've just stumbled upon |
| Comment by Michael Vorburger [ 04/Jun/18 ] |
|
|
| Comment by Michael Vorburger [ 06/Jun/18 ] |
|
jluhrsen's NETVIRT-1089 is no longer able to reproduce this after |
| Comment by Michael Vorburger [ 12/Jun/18 ] |
|
FTR: The additional DEBUG logigng for this (c/71890) went into Oxygen SR2 (not only SR3; which |