Loki: Add a configurable ability to fudge incoming timestamps for guaranteed query sort order when receiving entries for the same stream that have duplicate timestamps. (#6042)
* Add a per tenant ability to fudge duplicate timestamps in the distributor
Signed-off-by: Edward Welch <edward.welch@grafana.com>
* update docs
Signed-off-by: Edward Welch <edward.welch@grafana.com>
* lint
Signed-off-by: Edward Welch <edward.welch@grafana.com>
* update changelog
Signed-off-by: Edward Welch <edward.welch@grafana.com>
* [5685](https://github.com/grafana/loki/pull/5685) **chaudum**: Assert that push values tuples consist of string values
##### Changes
* [6042](https://github.com/grafana/loki/pull/6042) **slim-bean**: Add a new configuration to allow fudging of ingested timestamps to guarantee sort order of duplicate timestamps at query time.
* [5777](https://github.com/grafana/loki/pull/5777) **tatchiuleung**: storage: make Azure blobID chunk delimiter configurable
* [5650](https://github.com/grafana/loki/pull/5650) **cyriltovena**: Remove more chunkstore and schema version below v9
* [5643](https://github.com/grafana/loki/pull/5643) **simonswine**: Introduce a ChunkRef type as part of logproto
f.IntVar(&l.MaxLabelValueLength,"validation.max-length-label-value",2048,"Maximum length accepted for label value. This setting also applies to the metric name")
f.IntVar(&l.MaxLabelNamesPerSeries,"validation.max-label-names-per-series",30,"Maximum number of label names per series.")
f.BoolVar(&l.RejectOldSamples,"validation.reject-old-samples",true,"Reject old samples.")
f.BoolVar(&l.FudgeDuplicateTimestamp,"validation.fudge-duplicate-timestamps",false,"Fudge the timestamp of a log line by one nanosecond in the future from a previous entry for the same stream with the same timestamp, guarantees sort order at query time.")
_=l.RejectOldSamplesMaxAge.Set("7d")
f.Var(&l.RejectOldSamplesMaxAge,"validation.reject-old-samples.max-age","Maximum accepted sample age before rejecting.")