Commit graph

44 commits

Author SHA1 Message Date
Bartek Płotka c065fa6957 Exposed helper methods for reading index bytes. (#492)
Changes:
* Make `NewReader` method useful. It was impossible to use it, because closer was always nil.
* ReadSymbols, TOC and ReadOffsetTable are not public functions (used by Thanos).
* decbufXXX are now functions.
* More verbose errors.
* Removed unused crc32 field.
* Some var name changes to make it more verbose:
  * symbols -> allocatedSymbols
  * symbolsSlice -> symbolsV1
  * symbols -> symbolsV2
  *
* Pre-calculate symbolsTableSize.
* Initialized symbols for Symbols() method with valid length.
* Added test for Symbol method.
* Made Decoder LookupSymbol method public. Kept Decode public as it is useful as helper from index package.

Signed-off-by: Bartek Plotka <bwplotka@gmail.com>
2019-01-11 17:31:26 +00:00
Brian Brazil 296f943ec4
More efficient Merge implementation. (#486)
Avoid a tree of merge objects, which can result in
what I suspect is n^2 calls to Seek when using Without.

With 100k metrics, and a regex of ^$ in BenchmarkHeadPostingForMatchers:

Before:
BenchmarkHeadPostingForMatchers-8              1        51633185216 ns/op      29745528 B/op      200357 allocs/op

After:
BenchmarkHeadPostingForMatchers-8             10         108924996 ns/op 25715025 B/op     101748 allocs/op

Signed-off-by: Brian Brazil <brian.brazil@robustperception.io>
2019-01-03 16:59:52 +00:00
Krasi Georgiev 48c439d26d
fix statick check errors (#475)
fix the tests for `check_license` and `staticcheck`

the static check also found some actual bugs.

Signed-off-by: Krasi Georgiev <kgeorgie@redhat.com>
2019-01-02 19:48:42 +03:00
Krasi Georgiev b4a2103a12
Release v0.3.0 (#464) 2018-12-04 16:50:11 +03:00
Brian Brazil 407e12d051 Make MemPostings nested.
This saves memory, about a quarter of the size of the postings map
itself with high-cardinality labels (not including the post ids).

Signed-off-by: Brian Brazil <brian.brazil@robustperception.io>
2018-11-22 09:36:39 +00:00
Brian Brazil fc99b8bb3a Make index reader postings nested.
This reduces memory by only having to store the string's 16
bytes+map overheard once per label name, rather than duplicating it in every
entry for the label value.

Signed-off-by: Brian Brazil <brian.brazil@robustperception.io>
2018-11-22 09:36:39 +00:00
Brian Brazil c93e261466 Reduce memory taken up by posting/symbol tables.
Reuse the string already allocated for symbols
in the posting tables.

Use a slice for symbols in v2 format.

Move symbol size logic into the index code.
Avoid duplication of lookupSymbol logic.

Signed-off-by: Brian Brazil <brian.brazil@robustperception.io>
2018-11-22 09:36:39 +00:00
Ganesh Vernekar 3a08a71d86 LabelNames() method to get all unique label names (#369)
* LabelNames() method to get all unique label names

Signed-off-by: Ganesh Vernekar <cs15btech11018@iith.ac.in>
2018-11-07 17:52:41 +02:00
Ganesh Vernekar a95323c021 Add license headers to missing files (#447)
Signed-off-by: Ganesh Vernekar <cs15btech11018@iith.ac.in>
2018-11-06 20:19:42 +02:00
Ben a8351dc9d0 Using filepath.Join() instead of strings with slashes (#428)
fixes: https://github.com/prometheus/tsdb/issues/426
Using `filepath.Join()` instead of strings containing forward slash path delimiters (needed for non-*nix OSes), as suggested by @krasi-georgiev
2018-10-25 10:32:57 +01:00
Kautilya Tripathi 3fd6d2f920 more meaningful names for serializedStringTuples and stringTuples (#377)
more meaningful names for serializedStringTuples and stringTuples structs

Signed-off-by: knrt10 <tripathi.kautilya@gmail.com>
Co-authored-by: Krasi Georgiev <kgeorgie@redhat.com>
2018-10-02 21:03:12 +03:00
Julius Volz 5ae6c60d39 Handle a bunch of unchecked errors (#365)
As discovered by "gosec".

Signed-off-by: Julius Volz <julius.volz@gmail.com>
2018-09-20 11:33:52 +03:00
Simon Pasquier f55ccd4ecb Add unit tests
Signed-off-by: Simon Pasquier <spasquie@redhat.com>
2018-06-25 11:25:22 +02:00
Simon Pasquier e8fc6c8774 index: fix another Uvarint() return check
Signed-off-by: Simon Pasquier <spasquie@redhat.com>
2018-06-08 14:42:24 +02:00
Alexey Palazhchenko 64cce683cc gofmt -s.
Signed-off-by: Alexey Palazhchenko <alexey.palazhchenko@gmail.com>
2018-05-07 15:39:54 +03:00
Mario Trangoni 09142e4dd1 fix unconvert issues: unnecessary conversion 2018-03-21 22:39:14 +01:00
Fabian Reinartz 3f06121dd0 Add Version getter for index reader 2018-02-21 21:06:19 +01:00
Fabian Reinartz 494acd3070
Merge pull request #273 from Gouthamve/large-idx-reader
Fix reader for large index files.
2018-02-15 12:29:47 +01:00
Ganesh Vernekar 0fb73ed622 Changed recursion into iteration for removedPostings.Next() 2018-02-14 19:27:35 +05:30
Fabian Reinartz a345231a0e Add test for block meta version and comments 2018-02-12 11:46:22 +01:00
Fabian Reinartz d09283f60a Add repair of bad index version 2018-02-09 13:11:03 +01:00
Goutham Veeramachaneni bb0e74b343
Fix reader for large index files.
Currently the offsets are cast into uint32 even though the index can
grow larger than 4GiB.

Signed-off-by: Goutham Veeramachaneni <cs14btech11014@iith.ac.in>
2018-02-05 13:51:22 +05:30
Goutham Veeramachaneni 467948f3c3
Merge pull request #262 from cstyan/callum-249
Reduce index file size caused by symbol references by using indicies rather than offsets
2018-01-18 14:02:54 +05:30
Callum Styan cd67584817 we don't want to write to index file in older version formats 2018-01-17 22:46:22 -08:00
Callum Styan 4792d2bbd1 handle v1 vs v2 for symbol offset vs index changes 2018-01-16 20:37:57 -08:00
Callum Styan a515b16299 use an incrementing index rather than an offset for symbols table 2018-01-16 20:07:59 -08:00
Goutham Veeramachaneni 2c3400ab4e Add block ULID to index reader errors
Signed-off-by: Goutham Veeramachaneni <cs14btech11014@iith.ac.in>
2018-01-16 23:48:58 +05:30
Shubheksha Jalan 618bceadb4 move version check into newReader() 2018-01-13 00:36:20 +05:30
Shubheksha Jalan faecfac2fa update docs, rename docs folder, add error condition 2018-01-11 14:06:49 +05:30
Shubheksha Jalan 7b27dc2109 address review comments, fix index tests 2018-01-11 13:20:42 +05:30
Shubheksha Jalan 510dc17066 fix tests, set version when initializing the index writer 2018-01-11 01:03:20 +05:30
Shubheksha Jalan 44052bc937 Make version for index format configurable 2018-01-11 00:49:16 +05:30
Shubheksha Jalan 129773b41a merge BlockMeta and blockMeta struct, implement v1 and v2 index readers 2018-01-08 23:03:35 +05:30
Shubheksha Jalan 77eb9fb56e add padding for series offsets 2018-01-05 18:28:09 +05:30
Fabian Reinartz 1e55b7987f Improve comments, handle allPostingsKey properly 2017-12-22 09:43:34 +01:00
Fabian Reinartz da9614fa54 Allow tombstone file to not exist 2017-12-21 12:07:27 +01:00
Fabian Reinartz b945098e3a index: extract decoder type 2017-12-21 12:02:05 +01:00
Fabian Reinartz 6dd2b83a7a index: don't use concatenated string for posting table 2017-12-21 12:02:05 +01:00
Fabian Reinartz 54205903f7 Move index and chunk encoders to own packages 2017-12-21 12:02:05 +01:00
Fabian Reinartz adb6be73dd move label read function int labels pkg 2017-12-21 11:55:58 +01:00
Fabian Reinartz 67f0ca8f0e Move index and chunk encoders to own packages 2017-12-21 11:27:54 +01:00
Fabian Reinartz 6f93a699e6 wipe 2016-12-02 17:49:05 +01:00
Fabian Reinartz 342aa82505 Fix pages and index package 2016-11-15 15:53:48 +01:00
Fabian Reinartz 752c7eea35 Add index package 2016-11-15 10:33:44 +01:00