-
Type: Bug
-
Resolution: Duplicate
-
Priority: Major - P3
-
None
-
Affects Version/s: None
-
Component/s: None
-
Query Integration
-
ALL
Timeseries collections can include time and/or metadata in the shard key. A key assumption mongos makes is that whenever an insert creates a bucket, the 'control.min.time' is initialized by rounding the even time.
However, inserting events before 1970 results in a non-rounded 'control.min.time' value:
> db.createCollection('ts', {timeseries:{timeField:'t',metaField:'m'}}) { "ok" : 1 } > db.ts.insert({t: ISODate('1969-01-01T00:00:12.345')}) WriteResult({ "nInserted" : 1 }) > db.system.buckets.ts.find().pretty() { "_id" : ObjectId("fe1eccbc6f22cc96f1dd557f"), "control" : { "min" : { // Tight lower bound, not rounded. "t" : ISODate("1969-01-01T00:00:12.345Z") }, "max" : { // Rounded upper bound, not tight. "t" : ISODate("1969-01-01T00:01:00Z") } }, "data" : ... }
If a shard owns the rounded value, but not the actual non-rounded 'control.min.time' value, then this bucket is now an orphan. Shard-filtering queries exclude it, and presumably the balancer could delete it at some point.
Note that this is unrelated to time-series filter pushdown rewrites. The problem is that the insert path creates orphan buckets; queries will exclude those orphans regardless of optimization.
- duplicates
-
SERVER-67816 Time-series bucket rounding for pre-1970 dates behaves unexpectedly
- Closed
- is related to
-
SERVER-67816 Time-series bucket rounding for pre-1970 dates behaves unexpectedly
- Closed
- related to
-
SERVER-77888 Timeseries last-point query is incorrect for pre-1970 dates
- Backlog
-
SERVER-84049 Deprecate support for sharding time-series collections on time field
- Backlog
-
SERVER-67825 Investigate where time-series functionality relies on control summary timestamps
- Closed