End-to-end path
What makes the flow stateless
Shard data is treated as object-store state. Indexing nodes can write and upload Lucene commit content plus translog snapshots; search nodes read through cached object-store-backed Lucene directories. Allocation does not search for a previous local copy because local disk is not durable state.
Main runtime boundary
The runtime split is in the engine factory. Promotable shards get IndexEngine, a replicated translog config, and commit tracking. Searchable non-promotable shards get SearchEngine, which consumes commit notifications and reads through cache-backed directories.
if (config.isPromotableToPrimary()) {
... return newHollowOrIndexEngine(indexSettings, newConfig);
} else {
return new SearchEngine(...);
}
Data flow summary
Indexing side
- The plugin creates
ObjectStoreService,StatelessCommitService,TranslogReplicator, andHollowShardsService. IndexEnginereceives operations and the engine factory injects a translog callback toTranslogReplicator.add(...).- Flush/refresh commits are turned into
StatelessCommitRefinstances and appended into virtual batched compound commits. - Uploads are pushed to the blob store and search nodes are notified only when the data is safe for search visibility.
Search side
SearchEngine.onCommitNotificationreceives the latest commit and updates the known latest uploaded BCC.- The prefetcher can warm missing BCC ranges into shared blob cache before reader refresh.
SearchDirectory.updateCommit(...)swaps metadata so Lucene file opens resolve to blob ranges.BlobStoreCacheDirectory.openInput(...)returns an IndexInput backed by cache readers.
Component pages
- Bootstrap explains plugin service creation and index/search engine selection.
- Object Store explains repository-backed blob containers and upload APIs.
- Write Path explains operation buffering, translog sync, flush, and recovery reads.
- Commit Lifecycle explains VBCC creation, upload, notification, and retention.
- Search Cache explains notification processing, prefetch, reader refresh, and cached IndexInput.
- Allocation & Recovery explains role-aware placement, relocation, hollowing, and target activation.
- Cluster State explains lease-backed election and blob-store cluster-state commits.