2018-11-30 06:46:16 -08:00
## master / unreleased
2019-06-19 06:46:24 -07:00
- [FEATURE] Provide option to compress WAL records using Snappy. [#609 ](https://github.com/prometheus/tsdb/pull/609 )
2019-06-24 08:42:29 -07:00
- [BUGFIX] Re-calculate block size when calling `block.Delete` .
- [CHANGE] The meta file `BlockStats` no longer holds size information. This is now dynamically calculated and kept in memory. It also includes the meta file size which was not included before.
2019-04-10 04:58:20 -07:00
2019-05-17 03:39:03 -07:00
## 0.8.0
- [BUGFIX] Calling `Close` more than once on a querier returns an error instead of a panic.
- [BUGFIX] Don't panic and recover nicely when running out of disk space.
- [BUGFIX] Correctly handle empty labels.
- [BUGFIX] Don't crash on an unknown tombstone ref.
- [ENHANCEMENT] Re-add FromData function to create a chunk from bytes. It is used by Cortex and Thanos.
- [ENHANCEMENT] Simplify mergedPostings.Seek.
- [FEATURE] Added `currentSegment` metric for the current WAL segment it is being written to.
2019-04-24 05:20:45 -07:00
## 0.7.1
- [ENHANCEMENT] Reduce memory usage in mergedPostings.Seek
2019-04-10 04:58:20 -07:00
## 0.7.0
2019-04-03 01:16:54 -07:00
- [CHANGE] tsdb now requires golang 1.12 or higher.
2019-03-14 06:05:40 -07:00
- [REMOVED] `chunks.NewReader` is removed as it wasn't used anywhere.
2019-03-06 01:12:28 -08:00
- [REMOVED] `FromData` is considered unused so was removed.
2019-03-25 16:38:12 -07:00
- [FEATURE] Added option WALSegmentSize -1 to disable the WAL.
2019-04-08 05:27:06 -07:00
- [BUGFIX] Bugfix in selectOverlappingDirs. Only return the first overlapping blocks.
2019-04-01 06:23:45 -07:00
- [BUGFIX] Fsync the meta file to persist it on disk to avoid data loss in case of a host crash.
2019-04-03 01:34:04 -07:00
- [BUGFIX] Fix fd and vm_area leak on error path in chunks.NewDirReader.
- [BUGFIX] Fix fd and vm_area leak on error path in index.NewFileReader.
2019-04-10 04:58:20 -07:00
- [BUGFIX] Force persisting the tombstone file to avoid data loss in case of a host crash.
- [BUGFIX] Keep series that are still in WAL in checkpoints.
- [ENHANCEMENT] Fast path for EmptyPostings cases in Merge, Intersect and Without.
Be smarter in how we look at matchers. (#572)
* Add unittests for PostingsForMatcher.
* Selector methods are all stateless, don't need a reference.
* Be smarter in how we look at matchers.
Look at all matchers to see if a label can be empty.
Optimise Not handling, so i!="2" is a simple lookup
rather than an inverse postings list.
All all the Withouts together, rather than
having to subtract each from all postings.
Change the pre-expand the postings logic to always do it before doing a
Without only. Don't do that if it's already a list.
The initial goal here was that the oft-seen pattern
i=~"something.+",i!="foo",i!="bar" becomes more efficient.
benchmark old ns/op new ns/op delta
BenchmarkHeadPostingForMatchers/n="1"-4 5888 6160 +4.62%
BenchmarkHeadPostingForMatchers/n="1",j="foo"-4 7190 6640 -7.65%
BenchmarkHeadPostingForMatchers/j="foo",n="1"-4 6038 5923 -1.90%
BenchmarkHeadPostingForMatchers/n="1",j!="foo"-4 6030884 4850525 -19.57%
BenchmarkHeadPostingForMatchers/i=~".*"-4 887377940 230329137 -74.04%
BenchmarkHeadPostingForMatchers/i=~".+"-4 490316101 319931758 -34.75%
BenchmarkHeadPostingForMatchers/i=~""-4 594961991 130279313 -78.10%
BenchmarkHeadPostingForMatchers/i!=""-4 537542388 318751015 -40.70%
BenchmarkHeadPostingForMatchers/n="1",i=~".*",j="foo"-4 10460243 8565195 -18.12%
BenchmarkHeadPostingForMatchers/n="1",i=~".*",i!="2",j="foo"-4 44964267 8561546 -80.96%
BenchmarkHeadPostingForMatchers/n="1",i!="",j="foo"-4 42244885 29137737 -31.03%
BenchmarkHeadPostingForMatchers/n="1",i=~".+",j="foo"-4 35285834 32774584 -7.12%
BenchmarkHeadPostingForMatchers/n="1",i=~"1.+",j="foo"-4 8951047 8379024 -6.39%
BenchmarkHeadPostingForMatchers/n="1",i=~".+",i!="2",j="foo"-4 63813335 30672688 -51.93%
BenchmarkHeadPostingForMatchers/n="1",i=~".+",i!~"2.*",j="foo"-4 45381112 44924397 -1.01%
Signed-off-by: Brian Brazil <brian.brazil@robustperception.io>
2019-04-09 03:59:45 -07:00
- [ENHANCEMENT] Be smarter in how we look at matchers.
- [ENHANCEMENT] PostListings and NotMatcher now public.
2019-03-05 05:51:38 -08:00
## 0.6.1
2019-03-05 05:48:55 -08:00
- [BUGFIX] Update `last` after appending a non-overlapping chunk in `chunks.MergeOverlappingChunks` . [#539 ](https://github.com/prometheus/tsdb/pull/539 )
2019-03-01 12:57:53 -08:00
2019-03-02 05:54:49 -08:00
## 0.6.0
- [CHANGE] `AllowOverlappingBlock` is now `AllowOverlappingBlocks` .
2019-03-01 12:57:53 -08:00
## 0.5.0
2019-02-27 02:55:35 -08:00
- [FEATURE] Time-ovelapping blocks are now allowed. [#370 ](https://github.com/prometheus/tsdb/pull/370 )
- Disabled by default and can be enabled via `AllowOverlappingBlock` option.
2019-02-14 05:29:41 -08:00
- Added `MergeChunks` function in `chunkenc/xor.go` to merge 2 time-overlapping chunks.
- Added `MergeOverlappingChunks` function in `chunks/chunks.go` to merge multiple time-overlapping Chunk Metas.
- Added `MinTime` and `MaxTime` method for `BlockReader` .
2019-02-27 02:55:35 -08:00
- [FEATURE] New `dump` command to tsdb tool to dump all samples.
2019-03-25 16:38:12 -07:00
- [FEATURE] New `encoding` package for common binary encoding/decoding helpers.
2019-02-27 02:55:35 -08:00
- Added to remove some code duplication.
2018-12-07 15:06:48 -08:00
- [ENHANCEMENT] When closing the db any running compaction will be cancelled so it doesn't block.
2019-02-27 02:55:35 -08:00
- `NewLeveledCompactor` takes a context.
2019-03-01 12:57:53 -08:00
- [CHANGE] `prometheus_tsdb_storage_blocks_bytes_total` is now `prometheus_tsdb_storage_blocks_bytes` .
- [BUGFIX] Improved Postings Merge performance. Fixes a regression from the the previous release.
- [BUGFIX] LiveReader can get into an infinite loop on corrupt WALs.
2019-02-27 02:55:35 -08:00
2019-01-18 00:42:59 -08:00
## 0.4.0
2018-12-18 10:56:51 -08:00
- [CHANGE] New `WALSegmentSize` option to override the `DefaultOptions.WALSegmentSize` . Added to allow using smaller wal files. For example using tmpfs on a RPI to minimise the SD card wear out from the constant WAL writes. As part of this change the `DefaultOptions.WALSegmentSize` constant was also exposed.
2019-01-18 00:35:16 -08:00
- [CHANGE] Empty blocks are not written during compaction [#374 ](https://github.com/prometheus/tsdb/pull/374 )
2019-01-16 02:03:52 -08:00
- [FEATURE] Size base retention through `Options.MaxBytes` . As part of this change:
2019-02-14 05:29:41 -08:00
- Added new metrics - `prometheus_tsdb_storage_blocks_bytes_total` , `prometheus_tsdb_size_retentions_total` , `prometheus_tsdb_time_retentions_total`
- New public interface `SizeReader: Size() int64`
- `OpenBlock` signature changed to take a logger.
2018-12-28 10:13:02 -08:00
- [REMOVED] `PrefixMatcher` is considered unused so was removed.
2018-12-28 09:42:46 -08:00
- [CLEANUP] `Options.WALFlushInterval` is removed as it wasn't used anywhere.
2019-01-16 10:09:08 -08:00
- [FEATURE] Add new `LiveReader` to WAL pacakge. Added to allow live tailing of a WAL segment, used by Prometheus Remote Write after refactor. The main difference between the new reader and the existing `Reader` is that for `LiveReader` a call to `Next()` that returns false does not mean that there will never be more data to read.
2018-12-13 06:02:32 -08:00
## 0.3.1
2018-12-28 09:42:46 -08:00
- [BUGFIX] Fixed most windows test and some actual bugs for unclosed file readers.
2018-12-04 05:50:11 -08:00
## 0.3.0
- [CHANGE] `LastCheckpoint()` used to return just the segment name and now it returns the full relative path.
- [CHANGE] `NewSegmentsRangeReader()` can now read over miltiple wal ranges by using the new `SegmentRange{}` struct.
- [CHANGE] `CorruptionErr{}` now also exposes the Segment `Dir` which is added when displaying any errors.
2019-03-25 16:38:12 -07:00
- [CHANGE] `Head.Init()` is changed to `Head.Init(minValidTime int64)`
2018-12-04 05:50:11 -08:00
- [CHANGE] `SymbolTable()` renamed to `SymbolTableSize()` to make the name consistent with the `Block{ symbolTableSize uint64 }` field.
- [CHANGE] `wal.Reader{}` now exposes `Segment()` for the current segment being read and `Offset()` for the current offset.
2019-02-14 05:29:41 -08:00
- [FEATURE] tsdbutil analyze subcomand to find churn, high cardinality, etc.