ChronoPlayer
ChronoPlayer is the component responsible for the "story reading" side of the ChronoLog services, as it reads back the recorded data and serves the client applications' queries into the recorded events.
ChronoLog provides two complementary event consumption mechanisms:
- On-Demand Tail Read (
StoryHandle::playback): Directly queries the in-memoryKeeperChunkRetentionStoreon ChronoKeeper compute nodes for the most recent $N$ events with millisecond-scale latency (~0.4 ms median, 1–5 ms at p90–p99), bypassing ChronoPlayer and HDF5 storage entirely. See On-Demand Tail Read. - Historical Story Replay (
Client::ReplayStory): Queries ChronoPlayer for events across an arbitrary time range[start, end). ChronoPlayer reads the part of the range that is already persisted from the HDF5 archives and fetches the rest from the story's ChronoKeepers (see Durable Chunk Retention).
| Component | Description |
|---|---|
| Player Registry Client | The client side of RPC communication between the ChronoPlayer process and ChronoVisor's ProcessRegistryService. Used to send register/unregister and periodic heartbeat/statistics messages to ChronoVisor. |
| Player Data Store Admin Service | Listens to Start/Stop Story recording notifications from ChronoVisor. These notifications trigger instantiation or dismantling of the appropriate active StoryPipelines based on client data access requests. |
| Player Recording Service | The RPC service that receives StoryChunks pushed by ChronoKeepers configured with dual_endpoint_rdma_extractor. The shipped configuration no longer pushes to ChronoPlayer: replay fetches recent events from the keepers on demand. |
| Player Data Store | Tracks the active stories and the ChronoKeepers each one is recorded on (the roster ChronoVisor sends at story start), which replay queries for recent events. When chunks are pushed to ChronoPlayer it also merges them the way ChronoGrapher does. |
| Playback/Replay Service | Listens to replay queries from client applications and serves responses. It fetches the story's recent events from its ChronoKeepers (story_range_fetch), splits the range at the highest persisted watermark the keepers report, and reads the part below that from the HDF5 archives; see Durable Chunk Retention. Returns all sorted events for the story within the requested range. |
| Playback/Replay Response Transfer Agent | The RPC client responsible for bulk transfer of the range query response event series back to the requesting client application. Instantiated by the Playback Service for each client query, using the client's response-receiving service credentials provided in the query request. |
| Archive Reading Agent | Reads Chronicle and Story data persisted in HDF5 Archives, extracts the subset of events relevant to the requested range query as StoryChunks for use by the Playback Service. It finds a story's files through the archive manifest the ChronoGraphers keep, reading what the manifest gained before each query; see HDF5 Archive. |