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 <pg...@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 <andrewkor...@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 <ptupit...@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 >> > >