Repository-backed startup
On start, the service creates a non-project repository from stateless object-store settings, starts it, and releases upload permits. In multi-project mode, additional project object stores are applied from cluster state.
Repository repository = repositoriesService.createNonProjectRepository(getRepositoryMetadata(settings));
this.objectStore = (BlobStoreRepository) repository;
this.objectStore.start();
this.permits.release(UPLOAD_PERMITS);
Upload entry points
Indexing code does not write blobs directly. Translog files and batched compound commits are enqueued as object-store tasks, which keeps backpressure and retry behavior centralized.
public void uploadTranslogFile(String fileName, BytesReference reference, ActionListener<Void> listener) {
enqueueTask(listener, uploadTranslogTaskRunner, l -> new TranslogFileUploadTask(fileName, reference, l));
}
public void uploadBatchedCompoundCommitFile(...) {
enqueueTask(listener, uploadTaskRunner, l -> new BatchedCommitFileUploadTask(...));
}
Blob namespace
The service exposes different containers for different data classes. The key prefixes make the object store the durable boundary between node-local runtime state and cluster state that survives node replacement.
indices/and per-index containers hold shard commit files.nodes/<ephemeral-id>/translogholds replicated node translog files.cluster_state/holds stateless coordination and persisted metadata files.- Delete queues clean translog and commit blobs asynchronously after retention rules say they are safe.