graph LR
StateManager["StateManager"]
StateStore["StateStore"]
StateRecovery["StateRecovery"]
RocksDBPartition["RocksDBPartition"]
BaseTransaction["BaseTransaction"]
TimestampedRocksDBStore["TimestampedRocksDBStore"]
WindowedRocksDBTransaction["WindowedRocksDBTransaction"]
StateManager -- "Orchestrates the lifecycle of" --> StateStore
StateStore -- "Provides the abstract definition for" --> RocksDBPartition
StateRecovery -- "Writes recovered state data to" --> RocksDBPartition
BaseTransaction -- "Produces changelogs consumed by" --> StateRecovery
RocksDBPartition -- "Is a concrete implementation of" --> StateStore
RocksDBPartition -- "Serves as durable storage for" --> BaseTransaction
BaseTransaction -- "Performs atomic state modifications on" --> RocksDBPartition
BaseTransaction -- "Provides the core transactional framework for" --> TimestampedRocksDBStore
TimestampedRocksDBStore -- "Extends and specializes" --> RocksDBPartition
TimestampedRocksDBStore -- "Builds upon" --> BaseTransaction
WindowedRocksDBTransaction -- "Is a specialized form of" --> BaseTransaction
WindowedRocksDBTransaction -- "Operates on and modifies windowed data stored within" --> RocksDBPartition
The quixstreams.state subsystem provides robust state management capabilities. The StateManager acts as the central orchestrator, overseeing the lifecycle of StateStore instances, which define the interface for state persistence. RocksDBPartition serves as a concrete, durable implementation of StateStore, handling low-level key-value operations. BaseTransaction provides the transactional framework, ensuring atomic state modifications on RocksDBPartition and crucially, generating consistent and durable changelogs. For fault tolerance and recovery, StateRecovery consumes these changelogs to restore the state within RocksDBPartition instances. Specialized components like TimestampedRocksDBStore and WindowedRocksDBTransaction extend these core functionalities for specific use cases like time-series data and windowed aggregations.
Orchestrates the entire state management lifecycle, including the creation, registration, initialization, and closing of state store instances. It also configures and manages Kafka changelog topics for state persistence and fault tolerance.
Related Classes/Methods:
Defines the abstract interface and common contract for all concrete state store implementations, ensuring a consistent API for interacting with different underlying storage technologies.
Related Classes/Methods:
Manages the critical process of recovering state from Kafka changelog topics by consuming and replaying changelog messages, ensuring data consistency and fault tolerance during state restoration.
Related Classes/Methods:
Provides the concrete, persistent key-value storage mechanism for a single Kafka partition using RocksDB, handling low-level read and write operations to the disk-backed store.
Related Classes/Methods:
Establishes the foundational transactional capabilities for state operations, managing a cache of pending changes and coordinating with changelog producers to ensure atomicity and durability of state modifications.
Related Classes/Methods:
A specialized RocksDBPartition implementation designed for managing time-series data, offering functionalities for timestamp-based queries, range lookups, and data expiration.
Related Classes/Methods:
Provides transactional operations specifically tailored for windowed state aggregations, managing window boundaries, expiration logic, and ensuring consistent updates within defined time or count windows.
Related Classes/Methods: