{"record":{"id":"a2f2fdb1819386a7","repo":"quickwit-oss/quickwit","slug":"max-queue-disk-usage-must-be-at-least-max-que","errorCode":null,"errorMessage":"max_queue_disk_usage ({}) must be at least max_queue_memory_usage ({})","messagePattern":"max_queue_disk_usage \\((.+?)\\) must be at least max_queue_memory_usage \\((.+?)\\)","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"quickwit/quickwit-config/src/node_config/mod.rs","lineNumber":812,"sourceCode":"    }\n\n    pub fn grpc_compression_encoding(&self) -> Option<CompressionEncoding> {\n        self.grpc_compression_algorithm\n            .as_ref()\n            .map(|algorithm| match algorithm {\n                CompressionAlgorithm::Gzip => CompressionEncoding::Gzip,\n                CompressionAlgorithm::Zstd => CompressionEncoding::Zstd,\n            })\n    }\n\n    fn validate(&self) -> anyhow::Result<()> {\n        self.warn_if_replication_factor_is_set();\n        ensure!(\n            self.max_queue_disk_usage > ByteSize::mib(256),\n            \"max_queue_disk_usage must be at least 256 MiB, got `{}`\",\n            self.max_queue_disk_usage.display().si()\n        );\n        ensure!(\n            self.max_queue_disk_usage >= self.max_queue_memory_usage,\n            \"max_queue_disk_usage ({}) must be at least max_queue_memory_usage ({})\",\n            self.max_queue_disk_usage.display().si(),\n            self.max_queue_memory_usage.display().si()\n        );\n        info!(\n            \"ingestion shard throughput limit: {}\",\n            self.shard_throughput_limit.display().si()\n        );\n        ensure!(\n            self.shard_throughput_limit >= ByteSize::mib(1)\n                && self.shard_throughput_limit <= ByteSize::mib(20),\n            \"shard_throughput_limit ({}) must be within 1mb and 20mb\",\n            self.shard_throughput_limit.display().si()\n        );\n        // The newline delimited format is persisted as something a bit larger\n        // (lines prefixed with their length)\n        let estimated_persist_size = ByteSize::b(3 * self.content_length_limit.as_u64() / 2);","sourceCodeStart":794,"sourceCodeEnd":830,"githubUrl":"https://github.com/quickwit-oss/quickwit/blob/a39730c5cdcd1a4fe798403737ae293999ea21f8/quickwit/quickwit-config/src/node_config/mod.rs#L794-L830","documentation":"Ingest queue validation requires that the on-disk queue capacity is at least as large as the in-memory queue capacity (`max_queue_disk_usage >= max_queue_memory_usage`). The disk queue is the spill/overflow area for the memory queue, so a smaller disk queue is an invalid configuration and produces this error listing both SI-formatted sizes.","triggerScenarios":"Node config where `max_queue_disk_usage` is smaller than `max_queue_memory_usage`, detected during ingest config validation at startup.","commonSituations":"Increasing `max_queue_memory_usage` (e.g. to 1gib) without raising the disk limit; tuned-down disk quota on a small node while memory defaults stayed high; unit confusion between mib/gib values.","solutions":["Increase `max_queue_disk_usage` until it is >= `max_queue_memory_usage`","Decrease `max_queue_memory_usage` to fit under the current disk limit","Set both explicitly in the config so their relationship is obvious"],"exampleFix":"// before\nmax_queue_memory_usage: 1gib\nmax_queue_disk_usage: 512mib\n// after\nmax_queue_memory_usage: 512mib\nmax_queue_disk_usage: 1gib","handlingStrategy":"validation","validationCode":"fn ensure_disk_geq_memory(memory: ByteSize, disk: ByteSize) -> anyhow::Result<()> {\n    if disk < memory {\n        anyhow::bail!(\n            \"max_queue_disk_usage ({}) must be >= max_queue_memory_usage ({})\",\n            disk.display().si(), memory.display().si()\n        );\n    }\n    Ok(())\n}","typeGuard":null,"tryCatchPattern":"if let Err(e) = ingest_config.validate() {\n    if e.to_string().contains(\"must be at least max_queue_memory_usage\") {\n        eprintln!(\"Increase max_queue_disk_usage or decrease max_queue_memory_usage.\");\n    }\n}","preventionTips":["Update memory and disk queue limits together in one config change","Keep disk usage strictly larger than memory usage (e.g. 2x) for headroom","Watch unit suffixes (mib vs gib) when editing sizes"],"tags":["config","ingest","validation"],"backgroundTag":"conflicting-config-options","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"}