Description
Using variable length keys in a window store may cause unwanted results to be returned when querying certain ranges.
Below is a test case for RocksDBWindowStoreTest that shows the problem. It fails, returning [0001, 0003, 0002, 0004, 0005] instead of [0001, 0003, 0005].
@Test public void testPutAndFetchSanity() throws IOException { final RocksDBWindowStoreSupplier<String, String> supplier = new RocksDBWindowStoreSupplier<>( "window", 60 * 1000L * 2, 3, true, Serdes.String(), Serdes.String(), windowSize, true, Collections.<String, String>emptyMap(), false ); final WindowStore<String, String> store = supplier.get(); store.init(context, store); try { store.put("a", "0001", 0); store.put("aa", "0002", 0); store.put("a", "0003", 1); store.put("aa", "0004", 1); store.put("a", "0005", 60000); assertEquals(Utils.mkList("0001", "0003", "0005"), toList(store.fetch("a", 0, Long.MAX_VALUE))); } finally { store.close(); } }