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