# Package org.apache.cassandra.hints

Hints subsystem consists of several components.

See: Description

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

- Class Summary
  Class | Description
  --- | ---
  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.

Copyright © 2018 The Apache Software Foundation