You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@ignite.apache.org by rishi007bansod <ri...@gmail.com> on 2018/11/27 21:02:54 UTC

“Binary type has different field types” Error when using Date type field in Key or Value

I am trying to use java.util.Date type field in my Ignite Key and Value
objects. But when I start caching data in same Ignite cache using Java code,
I get following error.

*[12:43:01,485][SEVERE][pool-8-thread-1][] Message is ignored due to an
error [msg=MessageAndMetadata(test1,2,Message(magic = 1, attributes = 0,
CreateTime = -1, crc = 3705259101, key = java.nio.HeapByteBuffer[pos=0 lim=4
cap=3288], payload = java.nio.HeapByteBuffer[pos=0 lim=3280
cap=3280]),302,kafka.serializer.DefaultDecoder@2d50c6a2,kafka.serializer.DefaultDecoder@1ff7596c,-1,CreateTime)]
class org.apache.ignite.binary.BinaryObjectException: Binary type has
different field types [typeName=test.demo.DataKey, fieldName=tstamp,
fieldTypeName1=String, fieldTypeName2=Date]
    at
org.apache.ignite.internal.binary.BinaryUtils.mergeMetadata(BinaryUtils.java:1027)
    at
org.apache.ignite.internal.processors.cache.binary.BinaryMetadataTransport$MetadataUpdateProposedListener.onCustomEvent(BinaryMetadataTransport.java:293)
    at
org.apache.ignite.internal.processors.cache.binary.BinaryMetadataTransport$MetadataUpdateProposedListener.onCustomEvent(BinaryMetadataTransport.java:258)
    at
org.apache.ignite.internal.managers.discovery.GridDiscoveryManager$4.onDiscovery0(GridDiscoveryManager.java:707)
    at
org.apache.ignite.internal.managers.discovery.GridDiscoveryManager$4.onDiscovery(GridDiscoveryManager.java:589)
    at
org.apache.ignite.spi.discovery.tcp.ServerImpl$RingMessageWorker.notifyDiscoveryListener(ServerImpl.java:5479)
    at
org.apache.ignite.spi.discovery.tcp.ServerImpl$RingMessageWorker.processCustomMessage(ServerImpl.java:5305)
    at
org.apache.ignite.spi.discovery.tcp.ServerImpl$RingMessageWorker.processMessage(ServerImpl.java:2765)
    at
org.apache.ignite.spi.discovery.tcp.ServerImpl$RingMessageWorker.processMessage(ServerImpl.java:2536)
    at
org.apache.ignite.spi.discovery.tcp.ServerImpl$MessageWorkerAdapter.body(ServerImpl.java:6775)
    at
org.apache.ignite.spi.discovery.tcp.ServerImpl$RingMessageWorker.body(ServerImpl.java:2621)
    at org.apache.ignite.spi.IgniteSpiThread.run(IgniteSpiThread.java:62)*



Where DataKey is Ignite cache Key which is defined as follows,


*package test.demo;
import java.util.Date;

public class DataKey{

    private Long sess_id ;                                                                                  
    private Long   s_id;                                                                    
    private Long   version;                                                                     
    private Date tstamp;


    public DataKey(Long sess_id, Long s_id, Long version,
            Date tstamp) {
        super();
        this.sess_id = sess_id;
        this.s_id = s_id;
        this.version = version;
        this.tstamp = tstamp;
    }


    @Override
    public int hashCode() {
        final int prime = 31;
        int result = 1;
        result = prime * result
                + ((s_id == null) ? 0 : s_id.hashCode());
        result = prime * result
                + ((sess_id == null) ? 0 : sess_id.hashCode());
        result = prime * result
                + ((tstamp == null) ? 0 : tstamp.hashCode());
        result = prime * result + ((version == null) ? 0 :
version.hashCode());
        return result;
    }


    @Override
    public boolean equals(Object obj) {
        if (this == obj)
            return true;
        if (obj == null)
            return false;
        if (getClass() != obj.getClass())
            return false;
        DataKey other = (DataKey) obj;
        if (s_id == null) {
            if (other.s_id != null)
                return false;
        } else if (!s_id.equals(other.s_id))
            return false;
        if (sess_id == null) {
            if (other.sess_id != null)
                return false;
        } else if (!sess_id.equals(other.sess_id))
            return false;
        if (tstamp == null) {
            if (other.tstamp != null)
                return false;
        } else if (!tstamp.equals(other.tstamp))
            return false;
        if (version == null) {
            if (other.version != null)
                return false;
        } else if (!version.equals(other.version))
            return false;
        return true;
    }
}*

As mentioned in link 
http://apache-ignite-users.70518.x6.nabble.com/Binary-type-has-different-fields-error-td21540.html
<http://apache-ignite-users.70518.x6.nabble.com/Binary-type-has-different-fields-error-td21540.html>  
, I even deleted contents from $IGNITE_HOME/work/ directory and restarted
the node. But still error is there. What is causing this error? Also same
error occurs if java.util.Date type field is only used in cache value(not in
key).



--
Sent from: http://apache-ignite-users.70518.x6.nabble.com/

Re: “Binary type has different field types” Error when using Date type field in Key or Value

Posted by Ilya Kasnacheev <il...@gmail.com>.
Hello!

Can you post a small reproducer project which will demonstrate this
behavior?

Regards,
-- 
Ilya Kasnacheev


ср, 28 нояб. 2018 г. в 00:03, rishi007bansod <ri...@gmail.com>:

> I am trying to use java.util.Date type field in my Ignite Key and Value
> objects. But when I start caching data in same Ignite cache using Java
> code,
> I get following error.
>
> *[12:43:01,485][SEVERE][pool-8-thread-1][] Message is ignored due to an
> error [msg=MessageAndMetadata(test1,2,Message(magic = 1, attributes = 0,
> CreateTime = -1, crc = 3705259101, key = java.nio.HeapByteBuffer[pos=0
> lim=4
> cap=3288], payload = java.nio.HeapByteBuffer[pos=0 lim=3280
> cap=3280]),302,kafka.serializer.DefaultDecoder@2d50c6a2
> ,kafka.serializer.DefaultDecoder@1ff7596c,-1,CreateTime)]
> class org.apache.ignite.binary.BinaryObjectException: Binary type has
> different field types [typeName=test.demo.DataKey, fieldName=tstamp,
> fieldTypeName1=String, fieldTypeName2=Date]
>     at
>
> org.apache.ignite.internal.binary.BinaryUtils.mergeMetadata(BinaryUtils.java:1027)
>     at
>
> org.apache.ignite.internal.processors.cache.binary.BinaryMetadataTransport$MetadataUpdateProposedListener.onCustomEvent(BinaryMetadataTransport.java:293)
>     at
>
> org.apache.ignite.internal.processors.cache.binary.BinaryMetadataTransport$MetadataUpdateProposedListener.onCustomEvent(BinaryMetadataTransport.java:258)
>     at
>
> org.apache.ignite.internal.managers.discovery.GridDiscoveryManager$4.onDiscovery0(GridDiscoveryManager.java:707)
>     at
>
> org.apache.ignite.internal.managers.discovery.GridDiscoveryManager$4.onDiscovery(GridDiscoveryManager.java:589)
>     at
>
> org.apache.ignite.spi.discovery.tcp.ServerImpl$RingMessageWorker.notifyDiscoveryListener(ServerImpl.java:5479)
>     at
>
> org.apache.ignite.spi.discovery.tcp.ServerImpl$RingMessageWorker.processCustomMessage(ServerImpl.java:5305)
>     at
>
> org.apache.ignite.spi.discovery.tcp.ServerImpl$RingMessageWorker.processMessage(ServerImpl.java:2765)
>     at
>
> org.apache.ignite.spi.discovery.tcp.ServerImpl$RingMessageWorker.processMessage(ServerImpl.java:2536)
>     at
>
> org.apache.ignite.spi.discovery.tcp.ServerImpl$MessageWorkerAdapter.body(ServerImpl.java:6775)
>     at
>
> org.apache.ignite.spi.discovery.tcp.ServerImpl$RingMessageWorker.body(ServerImpl.java:2621)
>     at org.apache.ignite.spi.IgniteSpiThread.run(IgniteSpiThread.java:62)*
>
>
>
> Where DataKey is Ignite cache Key which is defined as follows,
>
>
> *package test.demo;
> import java.util.Date;
>
> public class DataKey{
>
>     private Long sess_id ;
>
>     private Long   s_id;
>
>     private Long   version;
>
>     private Date tstamp;
>
>
>     public DataKey(Long sess_id, Long s_id, Long version,
>             Date tstamp) {
>         super();
>         this.sess_id = sess_id;
>         this.s_id = s_id;
>         this.version = version;
>         this.tstamp = tstamp;
>     }
>
>
>     @Override
>     public int hashCode() {
>         final int prime = 31;
>         int result = 1;
>         result = prime * result
>                 + ((s_id == null) ? 0 : s_id.hashCode());
>         result = prime * result
>                 + ((sess_id == null) ? 0 : sess_id.hashCode());
>         result = prime * result
>                 + ((tstamp == null) ? 0 : tstamp.hashCode());
>         result = prime * result + ((version == null) ? 0 :
> version.hashCode());
>         return result;
>     }
>
>
>     @Override
>     public boolean equals(Object obj) {
>         if (this == obj)
>             return true;
>         if (obj == null)
>             return false;
>         if (getClass() != obj.getClass())
>             return false;
>         DataKey other = (DataKey) obj;
>         if (s_id == null) {
>             if (other.s_id != null)
>                 return false;
>         } else if (!s_id.equals(other.s_id))
>             return false;
>         if (sess_id == null) {
>             if (other.sess_id != null)
>                 return false;
>         } else if (!sess_id.equals(other.sess_id))
>             return false;
>         if (tstamp == null) {
>             if (other.tstamp != null)
>                 return false;
>         } else if (!tstamp.equals(other.tstamp))
>             return false;
>         if (version == null) {
>             if (other.version != null)
>                 return false;
>         } else if (!version.equals(other.version))
>             return false;
>         return true;
>     }
> }*
>
> As mentioned in link
>
> http://apache-ignite-users.70518.x6.nabble.com/Binary-type-has-different-fields-error-td21540.html
> <
> http://apache-ignite-users.70518.x6.nabble.com/Binary-type-has-different-fields-error-td21540.html>
>
> , I even deleted contents from $IGNITE_HOME/work/ directory and restarted
> the node. But still error is there. What is causing this error? Also same
> error occurs if java.util.Date type field is only used in cache value(not
> in
> key).
>
>
>
> --
> Sent from: http://apache-ignite-users.70518.x6.nabble.com/
>