Skip to main content
Version: 3.3.0

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-memory KeeperChunkRetentionStore on 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).
CHRONOPLAYER COMPONENTSCHRONOPLAYERPartial StoryChunks from ChronoKeepersPlayer Recording ServiceChronoPlayer Registrationand Heartbeat MsgsPlayer Registry ClientPlayer Data StoreAdmin ServiceNotifications from the ChronoVisorto Start & Stop Story RecordingPLAYER DATA STOREPlayer Data StoreStory 1 PipelineStory 2 PipelineStory 3 PipelinePlayback/Replay Requestsfrom Client ApplicationsPlayback/Replay ServicePlayback/Replay Response Transfer Agent for Story 1Playback/Replay Response Transfer Agent for Story 2Playback/Replay Responsesto Client ApplicationsArchive Reading AgentReads from HDF5 ArchivesPersistent Storage TierComplete StoryChunks are retrieved from the HDF5 archive
ComponentDescription
Player Registry ClientThe 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 ServiceListens 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 ServiceThe 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 StoreTracks 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 ServiceListens 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 AgentThe 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 AgentReads 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.