Hi Yakov, Thanks for your reply. :)
Please allow me to explain the whole situation and how to reproduce the problem: In the PR of IGNITE-7153, I added a test case under RedisProtocolConnectSelfTest, sending some binary data via Jedis client, large enough (> 8192 bytes) to reproduce the original problem of IGNITE-7153 from my understanding. Later on, I found another problem which I explain in the previous email that payload is sometimes not fully read via GridNioServer.processRead(). This, however, does not seem to be a Redis protocol parsing problem. Unfortunately, the only way that I found to reproduce this NioServer packet-reading problem is to add a for-loop in the new test case. I would say 95% of time, it will occur, i.e. for(int i = 0; i < 100; i ++) { String randomString1 = RandomStringUtils.random(8 << 10, true, true); //8192 try (Jedis jedis = pool.getResource()) { jedis.set("b1".getBytes(), randomString1.getBytes()); Assert.assertEquals(randomString1, jedis.get("b1")); Thread.sleep(100); } } For troubleshooting, I simply print out the content of ByteBuffer along the data flow, and that is how I got packet in the previous email. I could try to emulate the erroneous packet then add the added in another test case via pure socket connection per your request. Thanks! Regards, Michael On Tue, Oct 30, 2018 at 6:00 PM Yakov Zhdanov <yzhda...@apache.org> wrote: > Michael, can you please share a reproducer? Is it possible to snapshot a > packet that causes the error and just emulate packet send with manually > opened socket bypassing Redis client lib? > > --Yakov >