# Package org.apache.cassandra.hints

Hints subsystem consists of several components.

See: Description

Interface Summary
HintsServiceMBean
InputPosition: Marker interface for file positions as provided by the various ChecksummedDataReader implementations.

Class Summary
ChecksummedDataInput: A `RandomAccessReader` wrapper that calculates the CRC in place.
CompressedChecksummedDataInput
CompressedHintsWriter
EncryptedChecksummedDataInput
EncryptedHintsWriter
Hint: Encapsulates the hinted mutation, its creation time, and the gc grace seconds param for each table involved.
HintMessage: The message we use to dispatch and forward hints.
HintMessage.Serializer
HintResponse: An empty successful response to a HintMessage.
HintsService: A singleton-ish wrapper over various hints components: - a catalog of all hints stores - a single-threaded write executor - a multi-threaded dispatch executor - the buffer pool for writing hints into The front-end for everything hints related.
HintVerbHandler: Verb handler used both for hint dispatch and streaming.
LegacyHintsMigrator: A migrator that goes through the legacy system.hints table and writes all the hints to the new hints storage format.

## Package org.apache.cassandra.hints Description

Hints subsystem consists of several components. `Hint` encodes all the required metadata and the mutation being hinted. `HintsBuffer` provides a temporary buffer for writing the hints to in a concurrent manner, before we flush them to disk. `HintsBufferPool` is responsible for submitting `HintsBuffer` instances for flushing when they exceed their capacity, and for maitaining a reserve `HintsBuffer` instance, and creating extra ones if flushing cannot keep up with arrival rate. `HintsWriteExecutor` is a single-threaded executor that performs all the writing to disk. `HintsDispatchExecutor` is a multi-threaded executor responsible for dispatch of the hints to their destinations. `HintsStore` tracks the state of all hints files (written and being written to) for a given host id destination. `HintsCatalog` maintains the mapping of host ids to `HintsStore` instances, and provides some aggregate APIs. `HintsService` wraps the catalog, the pool, and the two executors, acting as a front-end for hints.