Uploaded image for project: 'Ignite'
  1. Ignite
  2. IGNITE-6972

BinaryObjectBuilderImpl.build is stuck when server cluster is restarted

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Open
    • Major
    • Resolution: Unresolved
    • 2.3
    • None
    • binary
    • None

    Description

      When a client node is using a BinaryObjectBuilder to build a BinaryObject, the build() method could get stuck if the cluster is being restarted.

      Thread dump of the stack is

      "main" #1 prio=5 os_prio=0 tid=0x004d9000 nid=0x62ac waiting on condition [0x023bf000]
         java.lang.Thread.State: WAITING (parking)
              at sun.misc.Unsafe.park(Native Method)
              at java.util.concurrent.locks.LockSupport.park(LockSupport.java:304)
              at org.apache.ignite.internal.util.future.GridFutureAdapter.get0(GridFutureAdapter.java:177)
              at org.apache.ignite.internal.util.future.GridFutureAdapter.get(GridFutureAdapter.java:140)
              at org.apache.ignite.internal.processors.cache.binary.CacheObjectBinaryProcessorImpl.addMeta(CacheObjectBinaryProcessorImpl.java:441)
              at org.apache.ignite.internal.processors.cache.binary.CacheObjectBinaryProcessorImpl$2.addMeta(CacheObjectBinaryProcessorImpl.java:182)
              at org.apache.ignite.internal.binary.BinaryContext.registerUserClassDescriptor(BinaryContext.java:793)
              at org.apache.ignite.internal.binary.BinaryContext.registerClassDescriptor(BinaryContext.java:752)
              at org.apache.ignite.internal.binary.BinaryContext.descriptorForClass(BinaryContext.java:623)
              at org.apache.ignite.internal.binary.BinaryWriterExImpl.marshal0(BinaryWriterExImpl.java:164)
              at org.apache.ignite.internal.binary.BinaryWriterExImpl.marshal(BinaryWriterExImpl.java:147)
              at org.apache.ignite.internal.binary.BinaryWriterExImpl.marshal(BinaryWriterExImpl.java:134)
              at org.apache.ignite.internal.binary.BinaryWriterExImpl.doWriteObject(BinaryWriterExImpl.java:496)
              at org.apache.ignite.internal.binary.builder.BinaryBuilderSerializer.writeValue(BinaryBuilderSerializer.java:207)
              at org.apache.ignite.internal.binary.builder.BinaryValueWithType.writeTo(BinaryValueWithType.java:48)
              at org.apache.ignite.internal.binary.builder.BinaryBuilderSerializer.writeValue(BinaryBuilderSerializer.java:73)
              at org.apache.ignite.internal.binary.builder.BinaryBuilderSerializer.writeValue(BinaryBuilderSerializer.java:54)
              at org.apache.ignite.internal.binary.builder.BinaryObjectBuilderImpl.serializeTo(BinaryObjectBuilderImpl.java:313)
              at org.apache.ignite.internal.binary.builder.BinaryObjectBuilderImpl.build(BinaryObjectBuilderImpl.java:183)
      ...
      

      Possible solution
      Should we use the get(long timeout) instead of get() which never times out?

      Attachments

        Activity

          People

            Unassigned Unassigned
            jason.man@gmail.com Jason Man
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

              Created:
              Updated: