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 <ptupit...@gridgain.com> 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 <pg...@gridgain.com> 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-connector-#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.BinaryAbstractInputStream.ensureEnoughData(BinaryAbstractInputStream.java:305)
>>      at 
>> org.apache.ignite.internal.binary.streams.BinaryAbstractInputStream.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(ClientCacheConfigurationSerializer.java:125)
>>      at 
>> org.apache.ignite.internal.processors.platform.client.cache.ClientCacheCreateWithConfigurationRequest.<init>(ClientCacheCreateWithConfigurationRequest.java:45)
>>      at 
>> org.apache.ignite.internal.processors.platform.client.ClientMessageParser.decode(ClientMessageParser.java:333)
>>      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)
>> 
>> 
>> 

Reply via email to