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
>>
>

Reply via email to