[ https://issues.apache.org/jira/browse/KAFKA-4863?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15928902#comment-15928902 ]
Xavier Léauté commented on KAFKA-4863: -------------------------------------- The current patch appears to solve the specific case described above, but doesn't seem to fix the general case. Here's another example that is not addressed by the current patch: {code:java} final RocksDBWindowStoreSupplier<String, String> supplier = new RocksDBWindowStoreSupplier<>( "window", 0x7a00000000000000L, 2, true, Serdes.String(), Serdes.String(), 0x7a00000000000000L, true, Collections.<String, String>emptyMap(), false); windowStore = supplier.get(); windowStore.init(context, windowStore); windowStore.put("a", "0001", 0); windowStore.put("aa", "0002", 0); windowStore.put("a", "0003", 1); windowStore.put("aa", "0004", 1); windowStore.put("a", "0005", 0x7a00000000000000L - 1); final List expected = Utils.mkList("0001", "0003", "0005"); assertThat(toList(windowStore.fetch("a", 0, Long.MAX_VALUE)), equalTo(expected)); {code} > Querying window store may return unwanted keys > ---------------------------------------------- > > Key: KAFKA-4863 > URL: https://issues.apache.org/jira/browse/KAFKA-4863 > Project: Kafka > Issue Type: Bug > Components: streams > Affects Versions: 0.10.2.0 > Reporter: Xavier Léauté > Assignee: Damian Guy > Priority: Critical > > 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\]}}. > {code:java} > @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(); > } > } > {code} -- This message was sent by Atlassian JIRA (v6.3.15#6346)