Commit Graph

277 Commits (c76f30682c55f958d60727216e730b173d141104)

Author SHA1 Message Date
Stuart Carnie c76f30682c
fix(storage): Feedback in response to PR review
* Adds clarifying documentation
* Regenerate protocol buffers with updated documentation
2020-04-16 15:19:28 -07:00
Stuart Carnie 6325591deb
feat(storage): New data types for measurement schema gRPC APIs
This commit

* adds new request and response data types for schema gRPC calls
* adds fmt.Stringer implementation to cursors.FieldType
* adds APIs to sort a slice of MeasurementField values,
* upgrades the gogo protobuf package to v1.3.1, which
  includes improvements to serialization.
2020-04-16 14:51:31 -07:00
Stuart Carnie 0d998c269a
chore(storage): Fix code documentation comments 2020-04-16 14:51:31 -07:00
Stuart Carnie 21e339a32f
chore(storage): Fix documentation to reflect correct time interval 2020-04-14 11:04:56 -07:00
Stuart Carnie fe0ed6cb7e
feat(storage): Provide public MeasurementFields API 2020-04-14 10:49:16 -07:00
Stuart Carnie a3dec4b120
Merge pull request #17728 from influxdata/sgc/issue/6550
chore(storage): Remove redundant gRPC service from protobuf definition
2020-04-14 10:46:23 -07:00
Stuart Carnie abb6821f89
chore(storage): Remove redundant gRPC service from protobuf definition 2020-04-13 16:27:58 -07:00
kun 80e71d6ee0 fix(storageflux): fix data race on tags map (#17702) 2020-04-11 18:40:50 +08:00
jlapacik 5fe5da4ec7
fix(flux): return internal influxdb error for cursor conflict (#17697)
* fix(flux): return internal influxdb error for cursor conflict

Closes https://github.com/influxdata/influxdb/issues/17680.

* refactor: update error code from EInternal to EInvalid
2020-04-09 14:40:41 -07:00
Faith Chikwekwe edc1a7413d fix(storage/reads): update sortKey sorting method to use null byte as delimeter 2020-04-06 14:52:19 -07:00
Ben Johnson e639f99d03 fix(storage): Add filter regression test 2020-04-06 14:19:16 -06:00
Ben Johnson abfe5a54a0 fix(storage): Fix query cursor read that caused cursor truncation.
Filter cursors buffer points in between calls to Next() if the number
of read points exceeds 1000. Previously, this buffer was being cleared
out before being iterated over which caused queries to return a resultset
which had a number of rows divisable by 1000.

This change moves the clearing of the buffer until after the points have
been read. This change affects any queries which read more than 1000 points
from a single series & have a filter that can be successfully applied to at
least one of those points.
2020-04-06 13:54:16 -06:00
Jonathan A. Sternberg 6e4cf7ffef
refactor: fix imports from go template files (#17615) 2020-04-03 17:40:36 -05:00
Jonathan A. Sternberg 0ae8bebd75
refactor: rewrite imports to include the /v2 suffix for version 2 2020-04-03 12:39:20 -05:00
Stuart Carnie d424d7d1f5
feat(tsdb): Add new measurement based schema APIs
These APIs require a measurement, permitting an additional optimization
to reduce the search space against the TSM index. Specifically, the
search key prefix is extended from `org+bucket` to
`org+bucket,\x00=<measurement>`

* MeasurementNames
* MeasurementTagKeys
* MeasurementTagValues
* Adds an api to the models package for efficiently parsing the
  measurement tag (\x00) from a normalized series key
2020-04-02 08:33:58 -07:00
Yiqun (Ethan) Zhang 48efdb52ea
build(flux): update Flux to v0.65.0 (#17484) 2020-03-27 18:42:19 -04:00
Jacob Marble 386098da36
refactor(storage): move and remove to help cleanup tsdb package (#17275)
* refactor(tsdb): move series file config to seriesfile package

* refactor(tsdb): removed unchecked const EOF

* refactor(tsdb): unexport errors

* refactor(tsdb): remove unused TagValueIterators

* refactor(tsdb): remove SeriesIDIterator usage in tsdb/seriesfile

* refactor(tsdb): remove one-use MeasurementIterators

* refactor(tsdb): remove unused type measurementSliceIterator

* refactor(tsdb): remove unused types TagKeyIterators and tagKeySliceIterator

* refactor(storage): remove unused method Engine.ApplyFnToSeriesIDSet

* refactor(tsdb): rename AllSeriesIDs() -> SeriesIDs()
2020-03-16 12:23:15 -07:00
Jacob Marble 7dbc07beda
chore: Revert "refactor(storage): move and remove to help cleanup tsdb package (#17241)" (#17272)
This reverts commit 4b8a71b97f.

Fixes incident #inc-aws-error-rate-spi-5e6c1423
2020-03-13 17:14:51 -07:00
Jacob Marble 4b8a71b97f
refactor(storage): move and remove to help cleanup tsdb package (#17241)
* refactor(tsdb): move series file config to seriesfile package

* refactor(tsdb): removed unchecked const EOF

* refactor(tsdb): unexport errors

* refactor(tsdb): remove unused TagValueIterators

* refactor(tsdb): remove SeriesIDIterator usage in tsdb/seriesfile

* refactor(tsdb): remove one-use MeasurementIterators

* refactor(tsdb): remove unused type measurementSliceIterator

* refactor(tsdb): remove unused types TagKeyIterators and tagKeySliceIterator

* refactor(storage): remove unused method Engine.ApplyFnToSeriesIDSet

* refactor(tsdb): remove read from unexported field
2020-03-13 13:04:58 -07:00
Jacob Marble 26ca766459
refactor(tsdb): move series file to its own package (#17224)
* refactor(storage): move type ByTagKey to the only package that uses it

* refactor(tsdb): use types in tsdb/cursors

* refactor(tsdb): remove unused type SeriesIDElems

* refactor(tsdb): inline only use of tsdb.ReadAllSeriesIDIterator

* refactor(tsdb): move series file to its own package

* refactor(storage): remove platform->influxdb aliases
2020-03-12 11:32:52 -07:00
Jacob Marble cdbf532f57
refactor(storage): remove dead code and rename a few things (#17217)
* refactor(storage): remove CursorIterators type

* refactor(storage): remove unused tsdb.MarshalTags()

* refactor(storage): remove unused package tsdb/internal

* refactor(storage): rename tsdb/metrics.go to tsdb/series_file_metrics.go

* refactor(storage): remove unused type tagValueSliceIterator

* refactor(storage): rename field row to seriesRow

* refactor(storage): rename tsdb/index.go to tsdb/series_iterators.go
2020-03-12 10:45:48 -07:00
Sebastian Borza eeece73675
chore(storageflux): update failing tests 2020-03-10 17:54:07 -05:00
Sebastian Borza a50e69451e
feat(storageflux): move flux components out to separate package 2020-03-10 17:54:04 -05:00
Jacob Marble 9e8da7c313
refactor(storage): cleanup in storage/reads (#17163)
* refactor(storage): remove cursorContext.limit and .count

* refactor(storage): remove one-impl interface

* refactor(storage): remove one-line multiShardArrayCursors.newAggregateCursor()

* refactor(storage): mostly rename fields and variables

* refactor(storage): multiShardArrayCursors has one shard

* refactor(storage): drop misleading 'multiShard' from names
2020-03-10 07:50:47 -07:00
Jacob Marble 8bfe05e554
refactor(storage): remove reads.ResponseWriter (#17137)
ResponseWriter is only used in IDPE, so move it to that repo.
2020-03-06 15:54:11 -08:00
Jacob Marble 39b7c2ab76
refactor(storage): export IndexSeriesCursor (#17134)
* refactor(storage): add readSource field accessors

* refactor(storage): remove unused limitSeriesCursor

* refactor(storage): export IndexSeriesCursor

This allows IDPE to use the same implementation, rather than duplicate
code. Also copied unit tests from IDPE.

* chore: go fmt
2020-03-06 14:05:03 -08:00
Jacob Marble 5efde876d7
refactor(storage): rename things so flux and influxql influence is clear (#17108)
* refactor(storage): rename things so flux and influxql influence is clear

* chore: go fmt
2020-03-05 15:23:05 -08:00
Jacob Marble 1facad82dd
refactor(storage): move unused code to repo that needs it (#17090)
* refactor(storage): move unused code to repo that needs it

Turns out that a bunch of code is only needed in IDPE. This change
removes that code, and another PR adds it to IDPE.

* refactor(storage): export KeyMerger

* refactor(storage): export NilSortHi and NilSortLo

* refactor(storage): move StringIterator & friends to IDPE

* refactor(storage): unexport a few test helper funcs
2020-03-05 14:15:51 -08:00
Jacob Marble 83818e9592
fix(storage): incremental improvments (#17011)
* fix(storage): simplify storage/seriesCursor

storage/seriesCursor releases series file and TSI references sooner.

Remove unhelpful request object, inherited from 1.x

* chore(storage): replace SeriesCursor interface with sole implementation
2020-02-28 11:12:43 -08:00
Jacob Marble 9f71cad966 fix(storage): small improvements to readservice/store
Use tracing properly, simplify a few lines.
2020-02-24 13:31:36 -08:00
Stuart Carnie f1990cc92c
feat(mock): Add SeriesGenerator to ResultSet transformation
In addition, adds a ResultSetToLineProtocol function, which
transforms a `ResultSet` into InfluxDB line protocol.
2020-02-12 14:20:31 -07:00
Jacob Marble a56e0226e6
fix(storage): check engine closed before collecting index metrics (#16656) 2020-01-23 15:27:25 -08:00
Jacob Marble b836ab9c17
feat(storage): implement backup and restore (#16504)
* feat(backup): `influx backup` creates data backup

* feat(backup): initial restore work

* feat(restore): initial restore impl

Adds a restore tool which does offline restore of data and metadata.

* fix(restore): pr cleanup

* fix(restore): fix data dir creation

* fix(restore): pr cleanup

* chore: amend CHANGELOG

* fix: restore to empty dir fails differently

* feat(backup): backup and restore credentials

Saves the credentials file to backups and restores it from backups.

Additionally adds some logging for errors when fetching backup files.

* fix(restore): add missed commit

* fix(restore): pr cleanup

* fix(restore): fix default credentials restore path

* fix(backup): actually copy the credentials file for the backup

* fix: dirs get 0777, files get 0666

* fix: small review feedback

Co-authored-by: tmgordeeva <tanya@influxdata.com>
2020-01-21 14:22:45 -08:00
Edd Robinson de36a868f7 refactor: add engine write benchmarks 2020-01-16 21:01:57 +00:00
Edd Robinson 5a179b1f95
Merge pull request #16265 from influxdata/er-dump-wal-pred
feat: add predicate output to WAL dump tool
2020-01-02 11:46:57 +00:00
Johnny Steenbergen e6f1805e5e chore(inmem): nuke the duplicative inmem store
use kv store... its a thing
2019-12-30 11:04:45 -08:00
David McKay 8db09124e6 fix: update test to use 'valid' marshalled predicate 2019-12-18 15:33:44 +00:00
Edd Robinson e24b66d78a feat: add predicate output to WAL dump tool 2019-12-18 12:05:26 +00:00
Greg 41e771a464
feat(http): expose list of available telegraf plugins (#16233) 2019-12-17 16:53:19 -07:00
Jonathan A. Sternberg fe94c5cae4
feat(storage/reads): add cache to reuse tags when reading from storage (#16041)
This adds an lru cache for the columns that are produced as tags. When
producing the columns that are part of the group key, it will generate
the column and then keep it in an lru cache to reuse for future tables.
The start and stop column are effectively cached for every table because
they are special and will be the same for all of the tables.

For the tags, it retains the most recently used since they may be used
by a future table. That way most of the columns will get shared with
each other.

When the size differs, a slice is used so the underlying data is still
shared, but the size is different.
2019-11-27 08:31:53 -06:00
Jonathan A. Sternberg 2b4e6283ce
perf(storage/reads): remove the duplicate filter (#16024)
This removes the duplicate filter that is used by the reader. The
storage engine shouldn't be sending us duplicate tables anyway and this
code hurts performance in high cardinality queries because of the memory
it uses to keep track of all of the keys that have been seen.
2019-11-22 12:38:16 -06:00
Edd Robinson 0999f88273 fix: prevent integer overflow 2019-11-22 14:06:21 +00:00
Chris Goller 0f5df301ca refactor(storage/readservice): rename View interface to Viewer 2019-11-20 16:10:37 -06:00
Chris Goller 7de2cafb13 feat(storage/readservice): define engine interface
We added an interface for the *storage.Engine to make it easier
to add end-to-end tests.

Co-authored-by: Bucky Schwarz <d.w.schwarz@gmail.com>
2019-11-20 15:54:32 -06:00
Edd Robinson 8f6701d4b1 feat(storage): add full compaction semaphore
By default this feature is disabled; the full compaction behaviour does
not change. When this feature is enabled compactions can be limited
across multiple storage engines running in multiple processes.

The mechanism by which this happens is not part of the abstraction added
here.
2019-10-23 19:45:01 +01:00
Brandon Farmer ea82dc3470 fix(tasks): tasks look up system bucket id 2019-10-21 14:48:47 -07:00
Brandon Farmer 2e0749b3ba feat(influxdb): Add system buckets on org creation
* Only allow users to create user buckets
* Only accept bucket creation parameters on post
2019-10-21 14:48:47 -07:00
Kelvin Wang 62f4042853 feat(influxdb): add predicate package 2019-10-18 12:02:52 -04:00
Edd Robinson 179c57ab2e feat(storage): allow compaction limiter to be injected 2019-10-04 12:35:21 -07:00
elbehery c0b87c657c fix(storage): remove level=0 from TSM disk bytes metrics. 2019-09-25 15:57:25 +02:00