What is the bug?
We are observing unexpected ingestion behavior in Mimir when inserting future data as a new series and on a completely new metric.
Configuration:
creation_grace_period = 7d
out_of_order = 6h
Observed Behavior: When future data is inserted with a new metric, all the existing live data already being ingested for that tenant is rejected with an "out of order" error resulting the data loss.
ts=2025-11-13T16:27:00.055561086Z caller=grpc_logging.go:76 level=warn method=/cortex.Ingester/Push duration=1.571926ms msg=gRPC err="user=test: the sample has been rejected because another sample with a more recent timestamp has already been ingested and this sample is beyond the out-of-order time window of 6h (err-mimir-sample-timestamp-too-old). The affected sample has timestamp 2025-11-13T16:27:00.002Z and is from series avalanche_metric_mmmmm_0_189{cycle_id=\"0\", grafana_alloy_agent=\"mimir-test-agent-0\", instance=\"localhost:9001\", job=\"avalanche-metrics\", label_key_kkkkk_0=\"label_val_vvvvv_0\", load_test_area=\"Avalanche-load-test-alloy\", pod=\"mimir-test-agent-0\", podname=\"mimir-test-agent-0\", series_id=\"0\"} (sampled 1/10)"
How to reproduce it?
- Configure Mimir with creation_grace_period=7d and out_of_order=6h.
- Insert live data for a tenant (normal ingestion works).
- Insert future data for a completely new metric under the same tenant.
- Observe that existing live data ingestion is rejected with "out of order".
What did you think would happen?
Since creation_grace_period is set to 7 days, inserting future data for a completely new metric and new series should be allowed without impacting ongoing ingestion. The live data already flowing into that tenant should continue to be accepted normally. The system should treat the future data as valid within the grace period, and not reject existing live data as “out of order.
What was your environment?
Kubernetes
Helms
Mimir 2.14.2v
Any additional context to share?
No response
What is the bug?
We are observing unexpected ingestion behavior in Mimir when inserting future data as a new series and on a completely new metric.
Configuration:
Observed Behavior: When future data is inserted with a new metric, all the existing live data already being ingested for that tenant is rejected with an "out of order" error resulting the data loss.
ts=2025-11-13T16:27:00.055561086Z caller=grpc_logging.go:76 level=warn method=/cortex.Ingester/Push duration=1.571926ms msg=gRPC err="user=test: the sample has been rejected because another sample with a more recent timestamp has already been ingested and this sample is beyond the out-of-order time window of 6h (err-mimir-sample-timestamp-too-old). The affected sample has timestamp 2025-11-13T16:27:00.002Z and is from series avalanche_metric_mmmmm_0_189{cycle_id=\"0\", grafana_alloy_agent=\"mimir-test-agent-0\", instance=\"localhost:9001\", job=\"avalanche-metrics\", label_key_kkkkk_0=\"label_val_vvvvv_0\", load_test_area=\"Avalanche-load-test-alloy\", pod=\"mimir-test-agent-0\", podname=\"mimir-test-agent-0\", series_id=\"0\"} (sampled 1/10)"How to reproduce it?
What did you think would happen?
Since creation_grace_period is set to 7 days, inserting future data for a completely new metric and new series should be allowed without impacting ongoing ingestion. The live data already flowing into that tenant should continue to be accepted normally. The system should treat the future data as valid within the grace period, and not reject existing live data as “out of order.
What was your environment?
Kubernetes
Helms
Mimir 2.14.2v
Any additional context to share?
No response