Hello! It will just take two first bytes from extras and turn them into a numeric variable.
Later on, if flags & 0xff00 == 0x1000000b, then it is byte array, else it is string. You should find a way to make your implementation send '-128' as fourth byte (If I understand endianness correctly). You could look it up in tcpdump. Regards, -- Ilya Kasnacheev чт, 18 окт. 2018 г. в 10:33, Michael Fong <[email protected]>: > Hi, > > Thanks for pointing out the mistake about the string data type. I used > python3 which supports bytes type and run the test case. Ignite would seems > still treat the received value as String type and would decode the data > correctly. I would like to try with a some simple C client program and see > how It works. > > In addition, I checked the source code, and it seems the data type of key > or value is > 1. computed via U.bytesToShort() method @ > https://github.com/apache/ignite/blob/ignite-2.6/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/protocols/tcp/GridTcpRestParser.java#L664 > 2. retrieved the type flag via masking bits off @ > https://github.com/apache/ignite/blob/ignite-2.6/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/protocols/tcp/GridTcpRestParser.java#L749 > > Could someone share some insight of what U.bytesToShort() does ? > > Thanks. > > > On Wed, Oct 17, 2018 at 8:29 PM Павлухин Иван <[email protected]> wrote: > >> Hi Michael, >> >> The troubles could be related to Python library. It seems in Python 2.7 >> there is no such thing as "byte array". And value passed to the client is >> string in this case. >> I checked that Ignite recognizes bytes array type and stores in as byte >> array internally. I did following experiment with Spymemcached [1]. >> public class Memcached { >> public static void main(String[] args) throws IOException { >> MemcachedClient client = new MemcachedClient( >> new BinaryConnectionFactory(), >> AddrUtil.getAddresses("127.0.0.1:11211")); >> >> client.add("a", Integer.MAX_VALUE, new byte[]{1, 2, 3}); >> client.add("b", Integer.MAX_VALUE, "123"); >> >> System.out.println(Arrays.toString((byte[])client.get("a"))); >> System.out.println(client.get("b")); >> >> System.exit(0); >> } >> } >> >> And I see expected output: >> [1, 2, 3] >> 123 >> >> [1] https://mvnrepository.com/artifact/net.spy/spymemcached/2.12.3 >> >> ср, 17 окт. 2018 г. в 10:25, Павлухин Иван <[email protected]>: >> >>> Hi Michael, >>> >>> Answering one of your questions. >>> > Does ignite internally have a way to store the data type when cache >>> entry is stored? >>> Yes, internally Ignite maintains data types for stored keys and values. >>> >>> Could you confirm that for real memcached your example works as >>> expected? I will try reproduce your Python example. It should not be hard >>> to check what exactly is stored inside Ignite. >>> >>> ср, 17 окт. 2018 г. в 5:25, Michael Fong <[email protected]>: >>> >>>> bump :) >>>> >>>> Could anyone please help to answer a newbie question? Thanks in advance! >>>> >>>> On Mon, Oct 15, 2018 at 4:22 PM Michael Fong <[email protected]> >>>> wrote: >>>> >>>>> Hi, >>>>> >>>>> I kind of able to reproduce it with a small python script >>>>> >>>>> import pylibmc >>>>> >>>>> client = pylibmc.Client (["127.0.0.1:11211"], binary=True) >>>>> >>>>> >>>>> ##abc >>>>> val = "abcd".decode("hex") >>>>> client.set("pyBin1", val) >>>>> >>>>> print "val decode w/ iso-8859-1: %s" % val.encode("hex") >>>>> >>>>> get_val = client.get("pyBin1") >>>>> >>>>> print "Value for 'pyBin1': %s" % get_val.encode("hex") >>>>> >>>>> >>>>> where the the program intends to insert a byte[] into ignite using >>>>> memcache binary protocol. >>>>> The output is >>>>> >>>>> val decode w/ iso-8859-1: abcd >>>>> Value for 'pyBin1': *efbfbdefbfbd* >>>>> >>>>> where, 'ef bf bd' are the replacement character for UTF-8 String. >>>>> Therefore, the value field seems to be treated as String in Ignite. >>>>> >>>>> Regards, >>>>> >>>>> Michael >>>>> >>>>> >>>>> >>>>> On Thu, Oct 4, 2018 at 9:38 PM Maxim.Pudov <[email protected]> >>>>> wrote: >>>>> >>>>>> Hi, it looks strange to me. Do you have a reproducer? >>>>>> >>>>>> >>>>>> >>>>>> -- >>>>>> Sent from: http://apache-ignite-users.70518.x6.nabble.com/ >>>>>> >>>>> >>> >>> -- >>> Best regards, >>> Ivan Pavlukhin >>> >> >> >> -- >> Best regards, >> Ivan Pavlukhin >> >
