Pavel, thanks for a quick turnaround. Please ping Prachi when you merge the improvement so that she can update the readme doc.
— Denis > On Dec 22, 2017, at 4:43 AM, Pavel Tupitsyn <[email protected]> wrote: > > Ticket created: https://issues.apache.org/jira/browse/IGNITE-7288 > I'll implement this next week. > > On Fri, Dec 22, 2017 at 10:06 AM, Pavel Tupitsyn <[email protected]> > wrote: > >> Hi Denis, >> >> I think we can assign an id to each parameter. It is not difficult to add. >> >>> not to tell about this operation >> Hiding stuff is not a good approach. Any decent engineer will have a look >> at the server code and see it. >> >> Pavel >> >> On Fri, Dec 22, 2017 at 3:45 AM, Denis Magda <[email protected]> wrote: >> >>> Hi Pavel, >>> >>> If it’s supposed to be used this way then it’s better not to tell about >>> this operation at all until it’s simplified from a user standpoint. >>> >>> My suggestion would be to design the operation so that I can pass only >>> those configuration parameters that need to be different from the defaults. >>> How difficult is this and can the improvement go into 2.4? >>> >>> — >>> Denis >>> >>>> On Dec 20, 2017, at 10:48 PM, Pavel Tupitsyn <[email protected]> >>> wrote: >>>> >>>> Hi Prachi, >>>> >>>> Yes, you have to provide full configuration. The error is caused by >>>> incomplete request message. >>>> >>>> Alternatively, define cache templates on server (configs with * in them) >>>> and then use OP_CACHE_CREATE_WITH_NAME from thin client. >>>> >>>> Thanks, >>>> Pavel >>>> >>>> On Thu, Dec 21, 2017 at 3:47 AM, Prachi Garg <[email protected]> >>> wrote: >>>> >>>>> Pavel, >>>>> >>>>> I tried to create a cache with configuration, using the thin protocol. >>>>> >>>>> 1. Do I need to provide every configuration as mentioned in the wiki, >>> or I >>>>> can just provide a few and the rest can be default? >>>>> >>>>> 2. Using the below code: >>>>> >>>>> DataOutputStream out = new DataOutputStream(socket.getOutputStream()); >>>>> >>>>> // Message length >>>>> writeIntLittleEndian(22, out); >>>>> >>>>> // Op code = OP_CACHE_CREATE_WITH_CONFIGURATION >>>>> writeShortLittleEndian(1053, out); >>>>> >>>>> // Request id (can be anything) >>>>> long reqId = 1; >>>>> writeLongLittleEndian(reqId, out); >>>>> >>>>> // CacheAtomicityMode >>>>> writeIntLittleEndian(0, out); >>>>> >>>>> // Backups >>>>> writeIntLittleEndian(2, out); >>>>> >>>>> // CacheMode >>>>> writeIntLittleEndian(2, out); >>>>> >>>>> // Read result >>>>> DataInputStream in = new DataInputStream(socket.getInputStream()); >>>>> >>>>> // Response length >>>>> final int len = readIntLittleEndian(in); >>>>> System.out.println("len: " + len); >>>>> >>>>> // Request id >>>>> long resReqId = readLongLittleEndian(in); >>>>> System.out.println("resReqId: " + resReqId); >>>>> >>>>> // Success >>>>> int statusCode = readIntLittleEndian(in); >>>>> System.out.println("status code: " + statusCode); >>>>> >>>>> >>>>> I get the following error: >>>>> >>>>> [2017-12-20 16:43:32,800][ERROR][client-co >>> nnector-#45][ClientListenerNioListener] Failed to parse client request. >>>>> class org.apache.ignite.binary.BinaryObjectException: Not enough data >>> to read the value [position=22, requiredBytes=4, remainingBytes=0] >>>>> at org.apache.ignite.internal.binary.streams.BinaryAbstractInpu >>> tStream.ensureEnoughData(BinaryAbstractInputStream.java:305) >>>>> at org.apache.ignite.internal.binary.streams.BinaryAbstractInpu >>> tStream.readInt(BinaryAbstractInputStream.java:127) >>>>> at org.apache.ignite.internal.binary.BinaryReaderExImpl.readInt >>> (BinaryReaderExImpl.java:743) >>>>> at org.apache.ignite.internal.processors.platform.client.cache. >>> ClientCacheConfigurationSerializer.read(ClientCacheConfigura >>> tionSerializer.java:125) >>>>> at org.apache.ignite.internal.processors.platform.client.cache. >>> ClientCacheCreateWithConfigurationRequest.<init>(ClientCache >>> CreateWithConfigurationRequest.java:45) >>>>> at org.apache.ignite.internal.processors.platform.client.Client >>> MessageParser.decode(ClientMessageParser.java:333) >>>>> at org.apache.ignite.internal.processors.platform.client.Client >>> MessageParser.decode(ClientMessageParser.java:220) >>>>> at org.apache.ignite.internal.processors.odbc.ClientListenerNio >>> Listener.onMessage(ClientListenerNioListener.java:119) >>>>> at org.apache.ignite.internal.processors.odbc.ClientListenerNio >>> Listener.onMessage(ClientListenerNioListener.java:40) >>>>> at org.apache.ignite.internal.util.nio.GridNioFilterChain$TailF >>> ilter.onMessageReceived(GridNioFilterChain.java:279) >>>>> at org.apache.ignite.internal.util.nio.GridNioFilterAdapter.pro >>> ceedMessageReceived(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(GridWo >>> rker.java:110) >>>>> at org.apache.ignite.internal.util.worker.GridWorkerPool$1.run( >>> GridWorkerPool.java:70) >>>>> at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPool >>> Executor.java:1142) >>>>> at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoo >>> lExecutor.java:617) >>>>> at java.lang.Thread.run(Thread.java:745) >>>>> >>>>> >>>>> >>> >>> >>
