Uploaded image for project: 'Kafka'
  1. Kafka
  2. KAFKA-4863

Querying window store may return unwanted keys

    Details

    • Type: Bug
    • Status: Resolved
    • Priority: Critical
    • Resolution: Fixed
    • Affects Version/s: 0.10.2.0
    • Fix Version/s: 0.10.2.1, 0.11.0.0
    • Component/s: streams
    • Labels:
      None

      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();
          }
      }
      

        Attachments

          Activity

            People

            • Assignee:
              damianguy Damian Guy
              Reporter:
              xvrl Xavier Léauté
            • Votes:
              0 Vote for this issue
              Watchers:
              4 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: