{"record":{"id":"89e88b5f35eebc5d","repo":"quickwit-oss/quickwit","slug":"indexing-service-should-be-initialized","errorCode":null,"errorMessage":"indexing service should be initialized","messagePattern":"indexing service should be initialized","errorType":"panic","errorClass":null,"httpStatus":null,"severity":"error","filePath":"quickwit/quickwit-serve/src/lib.rs","lineNumber":1533,"sourceCode":"        generation_id = %chitchat_id.generation_id,\n        \"removing node `{}` from indexer pool\",\n        chitchat_id.node_id,\n    );\n    let node_id: NodeId = node.node_id.clone();\n    Change::Remove(node_id)\n}\n\nfn build_indexing_service(\n    node: &ClusterNode,\n    indexing_service_opt: Option<Mailbox<IndexingService>>,\n    max_message_size: ByteSize,\n) -> IndexingServiceClient {\n    if node.is_self_node() {\n        // Here, since the service is available locally, we bypass the network stack\n        // and use the mailbox directly. However, we still want client-side metrics,\n        // so we use both metrics layers.\n        let indexing_service_mailbox =\n            indexing_service_opt.expect(\"indexing service should be initialized\");\n        let shared_layers = ServiceBuilder::new()\n            .layer(INDEXING_GRPC_CLIENT_METRICS_LAYER.clone())\n            .layer(INDEXING_GRPC_SERVER_METRICS_LAYER.clone())\n            .into_inner();\n        return IndexingServiceClient::tower()\n            .stack_layer(shared_layers)\n            .build_from_mailbox(indexing_service_mailbox);\n    }\n    IndexingServiceClient::tower()\n        .stack_layer(INDEXING_GRPC_CLIENT_METRICS_LAYER.clone())\n        .stack_layer(TimeoutLayer::new(GRPC_INDEXING_SERVICE_TIMEOUT))\n        .build_from_channel(\n            node.grpc_advertise_addr,\n            node.channel(),\n            max_message_size,\n            None,\n        )\n}","sourceCodeStart":1515,"sourceCodeEnd":1551,"githubUrl":"https://github.com/quickwit-oss/quickwit/blob/a39730c5cdcd1a4fe798403737ae293999ea21f8/quickwit/quickwit-serve/src/lib.rs#L1515-L1551","documentation":"`build_indexing_service` hit the self-node branch but the optional `Mailbox<IndexingService>` was `None`, violating the invariant that a node advertising itself as an indexer has a locally built indexing service actor. This expect fires on internal wiring inconsistency, not bad user input.","triggerScenarios":"Thrown at quickwit/quickwit-serve/src/lib.rs:1533 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Ensure the `indexer` service is enabled in the node's enabled_services","Check earlier logs for a failure while building the indexing service during startup","Report as a bug if the service is enabled but the expect still fires"],"exampleFix":null,"handlingStrategy":"type-guard","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"a39730c5cdcd1a4fe798403737ae293999ea21f8","analyzedAt":"2026-09-08T13:19:37.784Z","contentChangedAt":"2026-09-08T13:19:37.784Z","schemaVersion":2},"datasetVersion":"2026-09-17T15:17:12.973Z"}