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

Built-in serdes for signed numbers do not obey lexicographical ordering

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Open
    • Major
    • Resolution: Unresolved
    • None
    • None
    • streams
    • None

    Description

      Currently we assume consistent ordering between serialized and deserialized keys, e.g. if the objects obey objA < objB < objC then the serialized Bytes will also obey bytesA < bytesB < bytesC. This is not true in general of the built-in serdes for signed numerical types (eg Integer, Long). Specifically, it is broken by the negative number representations which are lexicographically greater than (all) positive number representations. 

       

      One consequence of this is that an interactive query of a key range with a negative lower bound and positive upper bound (eg keyValueStore.range(-1, 1) will result in "unexpected behavior" depending on the specific store type.

       

      For RocksDB stores with caching disabled, an empty iterator will be returned regardless of whether any records do exist in that range. 

      For in-memory stores and ANY store with caching enabled, Streams will throw an unchecked exception and crash.

      Attachments

        Activity

          People

            Unassigned Unassigned
            ableegoldman A. Sophie Blee-Goldman
            Votes:
            0 Vote for this issue
            Watchers:
            5 Start watching this issue

            Dates

              Created:
              Updated: