Hello again Starting to check compatibility between thin clients in java/c++ and py/php/nodejs and met some problems
1) Found that UUID mixed in a strange way if we taken it from Java/C++ to PY/PHP/JS client and backwards Have issue about it https://issues.apache.org/jira/browse/IGNITE-10691, please look at it 2) Is more like conversation about seamless experience between all thin clients PY/PHP/JS/C++/Java have Timestamp data type which is contain tuple(millis, nanos) Main concern about nanos In PHP/JS/Py Nanos count like "nanoseconds of the last millisecond" but in Java and C++ its like we have millis and same millis but with nanos and its strange for PHP/PY/JS if we take Java how is Base thin client For example in Java we have new Timestamp(111111) and it (fastTime=111000, nanos=111000000) In C++ if we getting this cache we take (millis=111111, nanos=111000000) which is kind a right and same as in java But in py/php/js its look like (millis=111111, nanos=0), its kind a understandable what logic is, but sill different behavior and experience What you thinking about it? For now i can't understand why its done how its done, looks like it should be same but something going wrong пт, 30 нояб. 2018 г. в 01:18, Alexey Kosenchuk < alexey.kosenc...@nobitlost.com>: > Hi Stepan, > > pls check the Ignite cfg you use - see the comments in the jira. > > Also, the examples executors (including AuthTlsExample) are included > into NodeJS test suite in TeamCity which run periodically and > successfully passed. Eg. the latest one: > > https://ci.ignite.apache.org/viewLog.html?buildId=2426645&tab=buildResultsDiv&buildTypeId=IgniteTests24Java8_ThinClientNodeJs > > Regards, > -Alexey > > 28.11.2018 17:08, Stepan Pilschikov пишет: > > Hello again > > > > If NodeJS sources found that example AuthTlsExample.js throwing exception > > during execution > > Output and grid configuration in > > https://issues.apache.org/jira/browse/IGNITE-10447 > > > > Can someone have a look at it? > > > > вс, 25 нояб. 2018 г. в 19:11, Stepan Pilschikov < > pilshchikov....@gmail.com>: > > > >> My bad, > >> You right > >> > >> вс, 25 нояб. 2018 г. в 05:37, Dmitry Melnichuk < > >> dmitry.melnic...@nobitlost.com>: > >> > >>> Stepan, > >>> > >>> AFAIK Map type did always behave correctly on client side, as it does > >>> now. This is a corresponding piece of my test suite: > >>> > >>> ``` > >>> def test_put_get_map(client): > >>> > >>> cache = client.get_or_create_cache('test_map_cache') > >>> > >>> cache.put( > >>> 'test_map', > >>> ( > >>> MapObject.HASH_MAP, > >>> { > >>> (123, IntObject): 'test_data', > >>> 456: ((1, [456, 'inner_test_string', 789]), > >>> CollectionObject), > >>> 'test_key': 32.4, > >>> } > >>> ), > >>> value_hint=MapObject > >>> ) > >>> value = cache.get('test_map') > >>> assert value == (MapObject.HASH_MAP, { > >>> 123: 'test_data', > >>> 456: (1, [456, 'inner_test_string', 789]), > >>> 'test_key': 32.4, > >>> }) > >>> > >>> ``` > >>> > >>> Or is there another, more specific problem with maps? > >>> > >>> Dmitry > >>> > >>> On 11/25/18 3:56 AM, Stepan Pilschikov wrote: > >>>> Dmitry, > >>>> > >>>> Great, checked, now all things woks well > >>>> Hope that Igor made review for this PR > >>>> > >>>> But what about Maps? Looks like different ticket? or it can be done in > >>> same > >>>> ticket scope? > >>>> > >>>> пт, 23 нояб. 2018 г. в 23:58, Dmitry Melnichuk < > >>>> dmitry.melnic...@nobitlost.com>: > >>>> > >>>>> Stepan, > >>>>> > >>>>> Sorry, I forgot to update from upstream prior to start working on > this > >>>>> issue, and thus brought a regression. My bad. Just merged with the > >>>>> latest master. Please, check it out again. > >>>>> > >>>>> Dmitry > >>>>> > >>>>> On 11/24/18 1:37 AM, Stepan Pilschikov wrote: > >>>>>> Dmitry, > >>>>>> > >>>>>> Iv checked and its actually work > >>>>>> But a specially in this branch i found another bug > >>>>>> Please look at my last comment: > >>>>>> > >>>>> > >>> > https://issues.apache.org/jira/browse/IGNITE-10358?focusedCommentId=16697285&page=com.atlassian.jira.plugin.system.issuetabpanels%3Acomment-tabpanel#comment-16697285 > >>>>>> > >>>>>> пт, 23 нояб. 2018 г. в 01:21, Dmitry Melnichuk < > >>>>>> dmitry.melnic...@nobitlost.com>: > >>>>>> > >>>>>>> Stepan, > >>>>>>> > >>>>>>> Thank you for your great job in evaluating Python thin client, as > >>> well > >>>>>>> as other thin clients. > >>>>>>> > >>>>>>> There was indeed a bug in Python client regarding the handling of > >>> type > >>>>>>> hints in Collection type. I created a fix and did a PR under > >>>>>>> IGNITE-10358 task, but the same PR is also fixes the problem in > >>>>>>> IGNITE-10230 task. > >>>>>>> > >>>>>>> As of handling the type mapping in gists you provided, I left > >>> comments > >>>>>>> on both tasks. > >>>>>>> > >>>>>>> Dmitry > >>>>>>> > >>>>>>> On 11/21/18 6:37 PM, Stepan Pilschikov wrote: > >>>>>>>> Dmitry, Alexey > >>>>>>>> > >>>>>>>> Thank you for help, this answers help me a lot with understanding > >>> how > >>>>>>>> clients are work > >>>>>>>> > >>>>>>>> Not so long time ago i met problem which is have expected > behavior, > >>> but > >>>>>>> its > >>>>>>>> may broke some workflows in future for some users > >>>>>>>> > >>>>>>>> Its all about not specified data types in collections and map's > >>>>>>>> All description and examples in > >>>>>>>> https://issues.apache.org/jira/browse/IGNITE-10358 > >>>>>>>> > >>>>>>>> Dmitry, can you have a quick look at it and maybe in future > somehow > >>> fix > >>>>>>> it? > >>>>>>>> > >>>>>>>> пт, 26 окт. 2018 г. в 19:05, Dmitry Melnichuk < > >>>>>>>> dmitry.melnic...@nobitlost.com>: > >>>>>>>> > >>>>>>>>> Stepan! > >>>>>>>>> > >>>>>>>>> TL/DR: what you got with Python client in your gist is an > intended > >>>>>>>>> behavior. > >>>>>>>>> > >>>>>>>>> Explanation: As per docs, Object array contains of type ID (which > >>> is > >>>>>>>>> defaults to -1) and an array of objects. > >>>>>>>>> > >>>>>>>>> > >>>>>>>>> > >>>>>>> > >>>>> > >>> > https://apacheignite.readme.io/docs/binary-client-protocol-data-format#section-object-array > >>>>>>>>> > >>>>>>>>> Your gist might be fixed accordingly: > >>>>>>>>> > >>>>>>>>> ``` > >>>>>>>>> from pyignite import Client > >>>>>>>>> from pyignite.datatypes import * > >>>>>>>>> > >>>>>>>>> OBJECT_ARRAY_TYPE_ID = -1 > >>>>>>>>> OBJECT_ARRAY_CONTENTS = [1, 2] > >>>>>>>>> > >>>>>>>>> client = Client() > >>>>>>>>> client.connect('127.0.0.1', 10800) > >>>>>>>>> cache = client.get_or_create_cache("PY_OBJECT_ARRAY") > >>>>>>>>> cache.put( > >>>>>>>>> 1, > >>>>>>>>> (OBJECT_ARRAY_TYPE_ID, OBJECT_ARRAY_CONTENTS), > >>>>>>>>> key_hint=IntObject, > >>>>>>>>> value_hint=ObjectArrayObject, > >>>>>>>>> ) > >>>>>>>>> > >>>>>>>>> # Python output: print(cache.get(1)) > >>>>>>>>> # (-1, [1, 2]) > >>>>>>>>> ``` > >>>>>>>>> > >>>>>>>>> The situation is similar with Map and Collection, they have > types. > >>>>> Types > >>>>>>>>> and type IDs are mostly useless in Python, but I left them for > >>>>>>>>> interoperability reasons. If you think I should kick them out, > just > >>>>> let > >>>>>>>>> me know. > >>>>>>>>> > >>>>>>>>> The usage of these 3 data types is documented and tested. You can > >>>>> refer > >>>>>>>>> to the table in “Data types” section: > >>>>>>>>> > >>>>>>>>> > >>>>>>>>> > >>>>>>> > >>>>> > >>> > https://apache-ignite-binary-protocol-client.readthedocs.io/en/latest/datatypes/parsers.html > >>>>>>>>> > >>>>>>>>> The tests are here: > >>>>>>>>> > >>>>>>>>> > >>>>>>>>> > >>>>>>> > >>>>> > >>> > https://github.com/apache/ignite/blob/master/modules/platforms/python/tests/test_datatypes.py#L116-L124 > >>>>>>>>> > >>>>>>>>> On 10/26/18 11:57 PM, Stepan Pilschikov wrote: > >>>>>>>>>> Hi, everyone > >>>>>>>>>> > >>>>>>>>>> Create new thread to centralize cross compatibility and others > >>> common > >>>>>>>>>> problems between thin clients > >>>>>>>>>> > >>>>>>>>>> Tying to use Object array to exchange different data between JS, > >>> PHP > >>>>>>> and > >>>>>>>>>> Python thin clients > >>>>>>>>>> > >>>>>>>>>> JS and PHP simply can't put any type of arrays > >>>>>>>>>> Python can put data, but if you take it, data would be > completely > >>>>>>>>>> different, maybe during this put process data is changed > >>>>>>>>>> > >>>>>>>>>> Code and output: > >>>>>>>>>> PHP - > >>>>>>>>> > >>> https://gist.github.com/pilshchikov/e887d31d4f2f36923470fead14c7801a > >>>>>>>>>> JS - > >>>>>>>>> > >>> https://gist.github.com/pilshchikov/ba49067fd8924ebdf4414ec63838b86d > >>>>>>>>>> Python - > >>>>>>>>>> > >>> https://gist.github.com/pilshchikov/f4bbf76e31547e2dca7d4cc5d55bd24f > >>>>>>>>>> > >>>>>>>>>> I'm tried different data types (string, double, float, complex > >>>>> objects, > >>>>>>>>>> just random objects, char, byte, Date), still > >>>>>>>>>> > >>>>>>>>>> How, from my perspective, it should works: > >>>>>>>>>> put array of any type and then get this array. > >>>>>>>>>> Example: put [1,2,3] -> get [1,2,3] or put [new Date(), new > >>> Date()] > >>>>> -> > >>>>>>>>>> get [[Date object], [Date object]] (like in java thin client) > >>>>>>>>>> > >>>>>>>>>> Looks like bug in all clients, what you think? > >>>>>>>>>> > >>>>>>>>>> I wanted to try Collections, but i think this type have same > >>> problem > >>>>>>>>> > >>>>>>>> > >>>>>>> > >>>>>>> > >>>>>> > >>>>> > >>>>> > >>>> > >>> > >>> > > >