Uploaded image for project: 'controller'
  1. controller
  2. CONTROLLER-1627

LinkageError for union type after switchover or warm restart of instances cluster causing write tx to fail

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Done
    • None
    • None
    • clustering
    • None
    • Operating System: All
      Platform: All

    • 8143

      With Boron-SR2, after I bring up my cluster or some instances are restarted in the cluster, I sometimes see that instances throw a IllegalStateException when I perform a writeTransaction to a container within a list where the key for the list is of type "inet:host". This works most of the times, but 1/10 runs I get this error for my periodic write operation?

      Exact call:
      -----------
      modification.merge(logicalDatastoreType, iid, data, true);

      Instance identifier
      -------------------
      InstanceIdentifier

      {targetType=interface org.opendaylight.yang.gen.v1.urn.acme.system.compute.rev160510.compute.element.state.State, path=[ org.opendaylight.yang.gen.v1.urn.acme.system.rev160510.System, org.opendaylight.yang.gen.v1.urn.acme.system.compute.rev160510.SystemComputes, org.opendaylight.yang.gen.v1.urn.acme.system.compute.rev160510.system.ComputeElements, org.opendaylight.yang.gen.v1.urn.acme.system.compute.rev160510.compute.elements.grouping.ComputeElement[key=ComputeElementKey [_host=Host [_domainName=DomainName [_value=172.17.5.237]]]], org.opendaylight.yang.gen.v1.urn.acme.system.compute.rev160510.compute.element.state.State]}

      data:
      ------
      State [_cpuInfo=CpuInfo [_processorCount=6, _usage=1.28, augmentation=[]], _memInfo=MemInfo [_memFree=1206198272, _memTotal=12302811136, augmentation=[]], augmentation=[]]

      Full stacktrace:
      ----------------
      java.lang.IllegalStateException: Unable to load codec for class org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Host
      at org.opendaylight.yangtools.binding.data.codec.impl.BindingCodecContext.getCodecForBindingClass(BindingCodecContext.java:306)[91:org.opendaylight.mdsal.binding-dom-codec:0.9.2.Boron-SR2]
      at org.opendaylight.yangtools.binding.data.codec.impl.BindingCodecContext.getCodec(BindingCodecContext.java:291)[91:org.opendaylight.mdsal.binding-dom-codec:0.9.2.Boron-SR2]
      at org.opendaylight.yangtools.binding.data.codec.impl.BindingCodecContext.getCodec(BindingCodecContext.java:274)[91:org.opendaylight.mdsal.binding-dom-codec:0.9.2.Boron-SR2]
      at org.opendaylight.yangtools.binding.data.codec.impl.BindingCodecContext.getLeafNodesUsingReflection(BindingCodecContext.java:262)[91:org.opendaylight.mdsal.binding-dom-codec:0.9.2.Boron-SR2]
      at org.opendaylight.yangtools.binding.data.codec.impl.BindingCodecContext.getLeafNodes(BindingCodecContext.java:229)[91:org.opendaylight.mdsal.binding-dom-codec:0.9.2.Boron-SR2]
      at org.opendaylight.yangtools.binding.data.codec.impl.DataObjectCodecContext.<init>(DataObjectCodecContext.java:84)[91:org.opendaylight.mdsal.binding-dom-codec:0.9.2.Boron-SR2]
      at org.opendaylight.yangtools.binding.data.codec.impl.ListNodeCodecContext.<init>(ListNodeCodecContext.java:22)[91:org.opendaylight.mdsal.binding-dom-codec:0.9.2.Boron-SR2]
      at org.opendaylight.yangtools.binding.data.codec.impl.KeyedListNodeCodecContext.<init>(KeyedListNodeCodecContext.java:29)[91:org.opendaylight.mdsal.binding-dom-codec:0.9.2.Boron-SR2]
      at org.opendaylight.yangtools.binding.data.codec.impl.DataContainerCodecPrototype.createInstance(DataContainerCodecPrototype.java:129)[91:org.opendaylight.mdsal.binding-dom-codec:0.9.2.Boron-SR2]
      at org.opendaylight.yangtools.binding.data.codec.impl.DataContainerCodecPrototype.get(DataContainerCodecPrototype.java:112)[91:org.opendaylight.mdsal.binding-dom-codec:0.9.2.Boron-SR2]
      at org.opendaylight.yangtools.binding.data.codec.impl.DataObjectCodecContext.bindingPathArgumentChild(DataObjectCodecContext.java:184)[91:org.opendaylight.mdsal.binding-dom-codec:0.9.2.Boron-SR2]
      at org.opendaylight.yangtools.binding.data.codec.impl.BindingCodecContext.getCodecContextNode(BindingCodecContext.java:127)[91:org.opendaylight.mdsal.binding-dom-codec:0.9.2.Boron-SR2]
      at org.opendaylight.yangtools.binding.data.codec.impl.BindingCodecContext.newWriter(BindingCodecContext.java:104)[91:org.opendaylight.mdsal.binding-dom-codec:0.9.2.Boron-SR2]
      at org.opendaylight.yangtools.binding.data.codec.impl.BindingNormalizedNodeCodecRegistry.toNormalizedNode(BindingNormalizedNodeCodecRegistry.java:102)[91:org.opendaylight.mdsal.binding-dom-codec:0.9.2.Boron-SR2]
      at org.opendaylight.controller.md.sal.binding.impl.BindingToNormalizedNodeCodec.toNormalizedNode(BindingToNormalizedNodeCodec.java:132)[163:org.opendaylight.controller.sal-binding-broker-impl:1.4.2.Boron-SR2]
      at org.opendaylight.controller.md.sal.binding.impl.AbstractWriteTransaction.merge(AbstractWriteTransaction.java:53)[163:org.opendaylight.controller.sal-binding-broker-impl:1.4.2.Boron-SR2]
      at org.acme.utils.transaction.GenericTransactionUtils.writeData(GenericTransactionUtils.java:40)[301:org.acme.utils.transaction:0.1.0.SNAPSHOT]
      at org.acme.utils.transaction.GenericTransactionUtils.writeData(GenericTransactionUtils.java:28)[301:org.acme.utils.transaction:0.1.0.SNAPSHOT]
      at org.acme.infra.ha.manager.impl.InstancePropertyMonitor.updateComputeElementInfo(InstancePropertyMonitor.java:246)[295:org.acme.infra.hamgr.impl:0.1.0.SNAPSHOT]
      at org.acme.infra.ha.manager.impl.InstancePropertyMonitor.access$300(InstancePropertyMonitor.java:61)[295:org.acme.infra.hamgr.impl:0.1.0.SNAPSHOT]
      at org.acme.infra.ha.manager.impl.InstancePropertyMonitor$2.run(InstancePropertyMonitor.java:106)[295:org.acme.infra.hamgr.impl:0.1.0.SNAPSHOT]
      at java.util.TimerThread.mainLoop(Timer.java:555)[:1.8.0_111]
      at java.util.TimerThread.run(Timer.java:505)[:1.8.0_111]
      Caused by: java.lang.IllegalStateException: Unable to load codec for class org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddress
      at org.opendaylight.yangtools.binding.data.codec.impl.BindingCodecContext.getCodecForBindingClass(BindingCodecContext.java:306)[91:org.opendaylight.mdsal.binding-dom-codec:0.9.2.Boron-SR2]
      at org.opendaylight.yangtools.binding.data.codec.impl.BindingCodecContext.getCodec(BindingCodecContext.java:291)[91:org.opendaylight.mdsal.binding-dom-codec:0.9.2.Boron-SR2]
      at org.opendaylight.yangtools.binding.data.codec.impl.UnionTypeCodec.lambda$loader$0(UnionTypeCodec.java:35)[91:org.opendaylight.mdsal.binding-dom-codec:0.9.2.Boron-SR2]
      at org.opendaylight.yangtools.binding.data.codec.impl.BindingCodecContext.getCodecForBindingClass(BindingCodecContext.java:304)[91:org.opendaylight.mdsal.binding-dom-codec:0.9.2.Boron-SR2]
      ... 22 more
      Caused by: java.lang.IllegalStateException: Failed to access constructor for class org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv4Address in type class org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddress
      at org.opendaylight.yangtools.binding.data.codec.impl.UnionValueOptionContext.<init>(UnionValueOptionContext.java:43)[91:org.opendaylight.mdsal.binding-dom-codec:0.9.2.Boron-SR2]
      at org.opendaylight.yangtools.binding.data.codec.impl.UnionTypeCodec.lambda$loader$0(UnionTypeCodec.java:36)[91:org.opendaylight.mdsal.binding-dom-codec:0.9.2.Boron-SR2]
      at org.opendaylight.yangtools.binding.data.codec.impl.BindingCodecContext.getCodecForBindingClass(BindingCodecContext.java:304)[91:org.opendaylight.mdsal.binding-dom-codec:0.9.2.Boron-SR2]
      ... 25 more
      Caused by: java.lang.IllegalAccessException: no such constructor: org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddress.<init>(Ipv4Address)void/newInvokeSpecial
      at java.lang.invoke.MemberName.makeAccessException(MemberName.java:867)[:1.8.0_111]
      at java.lang.invoke.MemberName$Factory.resolveOrFail(MemberName.java:1003)[:1.8.0_111]
      at java.lang.invoke.MethodHandles$Lookup.resolveOrFail(MethodHandles.java:1381)[:1.8.0_111]
      at java.lang.invoke.MethodHandles$Lookup.findConstructor(MethodHandles.java:919)[:1.8.0_111]
      at org.opendaylight.yangtools.binding.data.codec.impl.UnionValueOptionContext.<init>(UnionValueOptionContext.java:40)[91:org.opendaylight.mdsal.binding-dom-codec:0.9.2.Boron-SR2]
      ... 27 more
      Caused by: java.lang.LinkageError: loader constraint violation: when resolving method "org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddress.<init>(Lorg/opendaylight/yang/gen/v1/urn/ietf/params/xml/ns/yang/ietf/inet/types/rev130715/Ipv4Address;)V" the class loader (instance of <bootloader>) of the current class, java/lang/Object, and the class loader (instance of org/eclipse/osgi/internal/baseadaptor/DefaultClassLoader) for the method's defining class, org/opendaylight/yang/gen/v1/urn/ietf/params/xml/ns/yang/ietf/inet/types/rev130715/IpAddress, have different Class objects for the type org/opendaylight/yang/gen/v1/urn/ietf/params/xml/ns/yang/ietf/inet/types/rev130715/Ipv4Address used in the signature
      at java.lang.invoke.MethodHandleNatives.resolve(Native Method)[:1.8.0_111]
      at java.lang.invoke.MemberName$Factory.resolve(MemberName.java:975)[:1.8.0_111]
      at java.lang.invoke.MemberName$Factory.resolveOrFail(MemberName.java:1000)[:1.8.0_111]
      ... 30 more

            rovarga Robert Varga
            srini.seetharaman@gmail.com Srini Seetharaman
            Votes:
            0 Vote for this issue
            Watchers:
            5 Start watching this issue

              Created:
              Updated:
              Resolved: