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

Binary marshaller doesn't unmarshal a void type

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Major
    • Resolution: Fixed
    • 1.6
    • 1.6
    • cache

    Description

      The following code snippet failed with binary marshaller:

      BinaryMarshaller marsh = (BinaryMarshaller)ignite.configuration().getMarshaller();
      Map<Object, Object> map = new HashMap<>();
      map.put(Void.class, Void.TYPE);
      byte[] bytes = marsh.marshal(map);
      marsh.unmarshal(bytes, null);
      

      Got exception:

      class org.apache.ignite.binary.BinaryObjectException: Failed to unmarshal object with optimized marshaller
      	at org.apache.ignite.internal.binary.BinaryUtils.doReadOptimized(BinaryUtils.java:1555)
      	at org.apache.ignite.internal.binary.BinaryReaderExImpl.deserialize(BinaryReaderExImpl.java:1631)
      	at org.apache.ignite.internal.binary.BinaryUtils.doReadObject(BinaryUtils.java:1568)
      	at org.apache.ignite.internal.binary.BinaryUtils.deserializeOrUnmarshal(BinaryUtils.java:1915)
      	at org.apache.ignite.internal.binary.BinaryUtils.doReadMap(BinaryUtils.java:1899)
      	at org.apache.ignite.internal.binary.BinaryReaderExImpl.deserialize(BinaryReaderExImpl.java:1596)
      	at org.apache.ignite.internal.binary.GridBinaryMarshaller.deserialize(GridBinaryMarshaller.java:298)
      	at org.apache.ignite.internal.binary.BinaryMarshaller.unmarshal(BinaryMarshaller.java:112)
      	at org.apache.ignite.internal.processors.cache.BinarySerializationQuerySelfTest.testPlain(BinarySerializationQuerySelfTest.java:181)
      	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
      	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
      	at java.lang.reflect.Method.invoke(Method.java:606)
      	at junit.framework.TestCase.runTest(TestCase.java:176)
      	at org.apache.ignite.testframework.junits.GridAbstractTest.runTestInternal(GridAbstractTest.java:1723)
      	at org.apache.ignite.testframework.junits.GridAbstractTest.access$000(GridAbstractTest.java:118)
      	at org.apache.ignite.testframework.junits.GridAbstractTest$4.run(GridAbstractTest.java:1661)
      	at java.lang.Thread.run(Thread.java:745)
      Caused by: class org.apache.ignite.IgniteCheckedException: Failed to find class with given class loader for unmarshalling (make sure same versions of all classes are available on all nodes or enable peer-class-loading): sun.misc.Launcher$AppClassLoader@36d98810
      	at org.apache.ignite.marshaller.optimized.OptimizedMarshaller.unmarshal(OptimizedMarshaller.java:225)
      	at org.apache.ignite.internal.binary.BinaryUtils.doReadOptimized(BinaryUtils.java:1552)
      	... 17 more
      Caused by: java.lang.ClassNotFoundException: void
      	at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
      	at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
      	at java.security.AccessController.doPrivileged(Native Method)
      	at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
      	at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
      	at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
      	at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
      	at java.lang.Class.forName0(Native Method)
      	at java.lang.Class.forName(Class.java:274)
      	at org.apache.ignite.internal.util.IgniteUtils.forName(IgniteUtils.java:8213)
      	at org.apache.ignite.internal.MarshallerContextAdapter.getClass(MarshallerContextAdapter.java:185)
      	at org.apache.ignite.marshaller.optimized.OptimizedMarshallerUtils.classDescriptor(OptimizedMarshallerUtils.java:270)
      	at org.apache.ignite.marshaller.optimized.OptimizedObjectInputStream.readClass(OptimizedObjectInputStream.java:353)
      	at org.apache.ignite.marshaller.optimized.OptimizedObjectInputStream.readObjectOverride(OptimizedObjectInputStream.java:305)
      	at java.io.ObjectInputStream.readObject(ObjectInputStream.java:364)
      	at org.apache.ignite.marshaller.optimized.OptimizedMarshaller.unmarshal(OptimizedMarshaller.java:219)
      	... 18 more
      

      Attachments

        Activity

          People

            Unassigned Unassigned
            ntikhonov Nikolay Tikhonov
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: