Skip to main content
Version: 3.0.0

ChronoGrapher

ChronoGrapher is the component that continues the job of sequencing and merging of the partial StoryChunks created by the ChronoKeepers on the first tier, assembling the complete time-range bound StoryChunks out of them, and archiving the complete StoryChunks into the persistent storage tier.

The ChronoGrapher design follows the StoryPipeline Data Model and mirrors the design of the ChronoKeeper. The ChronoLog deployment allows for only one ChronoGrapher process within the RecordingGroup, and it's usually deployed on the storage node.

CHRONOGRAPHER COMPONENTSCHRONOGRAPHERPartial StoryChunks from ChronoKeepersGrapher Recording ServiceStoryChunk Ingestion QueueGRAPHER DATA STOREGrapher Data StoreStory 1 PipelineStory 2 PipelineStory 3 PipelineChronoGrapher Registrationand Heartbeat MsgsRecordingProcessRegistry ClientDataStore Admin ServiceStart/Stop Story notificationsNotifications from the ChronoVisorto Start & Stop Story RecordingStoryChunk Extraction QueueStoryChunk Archiving ExtractorPersistent Storage TierComplete StoryChunks are archived in the HDF5 archive
ComponentDescription
Recording Process Registry ClientThe client side of RPC communication between the ChronoGrapher process and ChronoVisor's RecordingProcessRegistryService. Used to send register/unregister and periodic heartbeat/statistics messages to ChronoVisor.
DataStore Admin ServiceListens to Start/Stop Story recording notifications from ChronoVisor. These notifications trigger instantiation or dismantling of the appropriate StoryPipelines based on client data access requests.
Grapher Recording ServiceThe RPC service that receives partial StoryChunks from ChronoKeeper processes using Thallium RDMA communication.
StoryChunk Ingestion QueueEnsures thread-safe communication between the ingestion threads of the Recording Service and the sequencing threads of the Grapher Data Store. Each active StoryPipeline has a pair of active and passive StoryChunkIngestionHandles to manage StoryChunk processing efficiently.
Grapher Data StoreMaintains a StoryPipeline for each active story, merging ingested partial StoryChunks into complete time-range bound StoryChunks and retiring the complete StoryChunks to the Story Chunk Extraction Queue.
StoryChunk Extraction QueueProvides a thread-safe communication boundary between the Grapher Data Store and the ExtractionModule as retired StoryChunks leave their StoryPipelines and wait to be picked up by an extraction stream.
ExtractionModuleA configurable pipeline of extractors that consumes retired StoryChunks from the extraction queue and forwards each chunk through every extractor in the chain. The module owns a fixed-size pool of extraction-stream threads (extraction_stream_count) that drain the queue in parallel. The default ChronoGrapher chain contains a single hdf5_extractor that serializes StoryChunks to the HDF5 archive under hdf5_archive_dir. Additional extractor types are available (csv_extractor, single_endpoint_rdma_extractor); the chain is assembled from JSON at startup — see Server Configuration → ExtractionModule.