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

Enhance ByteStore exceptions with more context information

    XMLWordPrintableJSON

    Details

    • Type: Improvement
    • Status: Resolved
    • Priority: Minor
    • Resolution: Fixed
    • Affects Version/s: 1.1.0
    • Fix Version/s: 2.0.0
    • Component/s: streams
    • Labels:

      Description

      In KIP-182 we refactored all stores to by plain Bytes/byte[] stores and only have concrete key/value types on outer layers/wrappers of the stores.

      For this reason, the most inner RocksDBStore cannot provide useful error messages anymore if a put/get/delete operation fails as it only handles plain bytes.

      In addition, the corresponding calls to record changelog records to record collectors will also be sending byte arrays only, and hence when there is an error happening, the record collector can only display the key but not the value since it is all bytes:

      [ERROR] org.apache.kafka.streams.processor.internals.RecordCollectorImpl   -
      task [2_2] Error sending record (key {"eventId":XXX,"version":123}
      value [<byte array>] timestamp YYY) to topic TTT
      due to ...
      

      Therefore, we should enhance exceptions thrown from RocksDBStore with corresponding information for which key/value the operation failed in the wrapping stores (KeyValueStore, WindowedStored, and SessionStore).

      Cf https://github.com/apache/kafka/pull/4518 that cleans up RocksDBStore exceptions.

      This ticket is resolved for the store exceptions. The RecordCollectorImpl issue is tracked via KAFKA-7015

        Attachments

          Issue Links

            Activity

              People

              • Assignee:
                jadireddi Jagadesh Adireddi
                Reporter:
                mjsax Matthias J. Sax
              • Votes:
                0 Vote for this issue
                Watchers:
                3 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved: