ignite-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Denis Magda <dma...@apache.org>
Subject Re: Thin Client Protocol documentation
Date Fri, 15 Dec 2017 20:05:01 GMT
Hi Andrey,

I’m afraid there are no plans for this features yet (at least I didn’t spot any relevant
discussion on @dev).

Feel free to start a separate discussion proposing the protocol expansion. It’s better not
to intermix this with the documentation thread.

—
Denis

> On Dec 15, 2017, at 11:12 AM, Andrey Kornev <andrewkornev@hotmail.com> wrote:
> 
> Pavel, could you please at least share your time frame wrt adding compute, clustering
and services features to the spec?
> 
> Thanks
> Andrey
> ________________________________
> From: Pavel Tupitsyn <ptupitsyn@gridgain.com>
> Sent: Tuesday, December 5, 2017 11:15 PM
> To: dev@ignite.apache.org
> Subject: Re: Thin Client Protocol documentation
> 
> Andrey,
> 
> As I understand, you suggest to document every prospective feature right
> now.
> That would be (at least) compute, clustering, transactions, services,
> messages, events, failover, data structures, metrics.
> 
> I don't think it makes sense to do that. Another problem is that it will
> take weeks :)
> But, of course, you are welcome to take the initiative.
> 
> Thanks,
> Pavel
> 
> On Tue, Dec 5, 2017 at 10:20 PM, Andrey Kornev <andrewkornev@hotmail.com>
> wrote:
> 
>> Pavel,
>> 
>> I have absolutely no doubts that support for all those features will be
>> added eventually. And if so, wouldn't it be the right thing to do to
>> document the operations and their semantics right now without
>> necessarily implementing them? It should really help to ensure that the
>> protocol can accommodate all those use cases before it gets released to the
>> public.
>> 
>> Thanks
>> Andrey
>> ------------------------------
>> *From:* Pavel Tupitsyn <ptupitsyn@gridgain.com>
>> *Sent:* Tuesday, December 5, 2017 12:07 AM
>> *Cc:* dev@ignite.apache.org
>> *Subject:* Re: Thin Client Protocol documentation
>> 
>> Andrey,
>> 
>> All of this is to come :)
>> 
>> 
>> Prachi,
>> 
>> 1) There are no flags, see the doc
>> 2) String is simply 4 byte length (n) + n bytes
>> 3) Op codes have changed
>> 
>> writeByteLittleEndian(1051, out); // Type code
>> writeIntLittleEndian(20, out); // String length
>> out.writeUTF("myNewCache"); // Cache name
>> 
>> On Tue, Dec 5, 2017 at 4:39 AM, Prachi Garg <pgarg@gridgain.com> wrote:
>> 
>>> Hi Pavel,
>>> 
>>> I am trying to use the OP_CACHE_CREATE_WITH_NAME operation, but can't get
>>> it to work.  Digging deeper into the source code, it seems like I have to
>>> provide a flag, string length, and position, in addition to the type code
>>> and the actual string. Is that correct?
>>> 
>>> Here is the request I am sending to the server-
>>> 
>>> DataOutputStream out = new DataOutputStream(socket.getOutputStream());
>>> 
>>> // Message length
>>> writeIntLittleEndian(24, out);
>>> 
>>> // Op code = OP_CACHE_CREATE_WITH_NAME
>>> writeShortLittleEndian(1051, out);
>>> 
>>> // Request id
>>> long reqId = 1;
>>> writeLongLittleEndian(reqId, out);
>>> 
>>> // String (cache name)
>>> writeByteLittleEndian(9, out); // Type code
>>> writeByteLittleEndian(0, out); // Flag
>>> writeIntLittleEndian(20, out); // String length
>>> writeIntLittleEndian(0, out); // Position
>>> out.writeUTF("myNewCache"); // Cache name
>>> 
>>> // Send request
>>> out.flush();
>>> 
>>> But I get the following error on the server side.
>>> 
>>> [2017-12-04 17:27:39,421][ERROR][client-connector-#53][
>> ClientListenerNioListener]
>>> Failed to parse client request.
>>> java.lang.StringIndexOutOfBoundsException: String index out of range:
>> 2575
>>> at java.lang.String.checkBounds(String.java:385)
>>> at java.lang.String.<init>(String.java:462)
>>> at org.apache.ignite.internal.binary.BinaryUtils.
>>> doReadString(BinaryUtils.java:1314)
>>> at org.apache.ignite.internal.binary.BinaryReaderExImpl.
>>> readString(BinaryReaderExImpl.java:1055)
>>> at org.apache.ignite.internal.processors.platform.client.cache.
>>> ClientCacheCreateWithNameRequest.<init>(ClientCacheCreateWithNameReque
>>> st.java:43)
>>> at org.apache.ignite.internal.processors.platform.client.
>>> ClientMessageParser.decode(ClientMessageParser.java:318)
>>> at org.apache.ignite.internal.processors.platform.client.
>>> ClientMessageParser.decode(ClientMessageParser.java:220)
>>> at org.apache.ignite.internal.processors.odbc.ClientListenerNioListener.
>>> onMessage(ClientListenerNioListener.java:119)
>>> at org.apache.ignite.internal.processors.odbc.ClientListenerNioListener.
>>> onMessage(ClientListenerNioListener.java:40)
>>> at org.apache.ignite.internal.util.nio.GridNioFilterChain$
>>> TailFilter.onMessageReceived(GridNioFilterChain.java:279)
>>> at org.apache.ignite.internal.util.nio.GridNioFilterAdapter.
>>> proceedMessageReceived(GridNioFilterAdapter.java:109)
>>> at org.apache.ignite.internal.util.nio.GridNioAsyncNotifyFilter$3.
>>> body(GridNioAsyncNotifyFilter.java:97)
>>> at org.apache.ignite.internal.util.worker.GridWorker.run(
>>> GridWorker.java:110)
>>> at org.apache.ignite.internal.util.worker.GridWorkerPool$1.
>>> run(GridWorkerPool.java:70)
>>> at java.util.concurrent.ThreadPoolExecutor.runWorker(
>>> ThreadPoolExecutor.java:1142)
>>> at java.util.concurrent.ThreadPoolExecutor$Worker.run(
>>> ThreadPoolExecutor.java:617)
>>> at java.lang.Thread.run(Thread.java:745)
>>> 
>>> What am I missing here? Can you provide an example of how to send a
>>> 'String' type request?
>>> 
>>> -Prachi
>>> 
>>> On Mon, Dec 4, 2017 at 1:06 PM, Andrey Kornev <andrewkornev@hotmail.com>
>>> wrote:
>>> 
>>>> Pavel,
>>>> 
>>>> Thanks! While we're at it, are there any plans to add cluster-related
>>>> operations? For example, I think it'd be nice to allow the thin clients
>> to
>>>> obtain a current topology snapshot. This would make it possible the
>> clients
>>>> to send requests directly to the affinity host for colocated
>> computation.
>>>> To make it even more useful, all server responses could optionally
>> include
>>>> the topology version the operation has been executed against. This would
>>>> effectively give us a kind out-of-band topology change notification
>>>> mechanism. This way the clients can detect a topology change and refresh
>>>> the topology snapshot next time they need to compute affinity.
>>>> 
>>>> Regards
>>>> Andrey
>>>> ________________________________
>>>> From: Pavel Tupitsyn <ptupitsyn@apache.org>
>>>> Sent: Sunday, December 3, 2017 9:23 AM
>>>> To: dev@ignite.apache.org
>>>> Subject: Re: Thin Client Protocol documentation
>>>> 
>>>> Hi Andrey,
>>>> 
>>>> Compute and other APIs are certainly planned, cache is just a start.
>>>> We intentionally limit the scope to actually release something in 2.4
>> and
>>>> not delay it further.
>>>> 
>>>> Adding operations to existing protocol is relatively easy.
>>>> Current focus is to make sure that the protocol itself is solid and
>>>> future-proof.
>>>> 
>>>> Thanks,
>>>> Pavel
>>>> 
>>> 
>>> 
>> 


Mime
View raw message