Commit Graph

3593 Commits (e1e31637520a08421d93180b27e5c534571b6ea1)

Author SHA1 Message Date
Marco Neumann e1e3163752 refactor: rework DB init state machine
Since adding new features like "sequencer replay" or init retries would
make the current code too complex, a refactor is required:

Config:
The config struct now holds a `DatabaseState` which is a simple linear
state machine representing the different stages of the database init.

Init:
The init module now has a fixpoint-loop which looks at the state,
decides what to do based on it and repeats until either the DB is
initialized or an error occured. This also makes it easier to continue
the init process "in the middle", e.g. when the preserved catalog is
broken or the sequencer (e.g. Kafka) could not be reached.
2021-07-01 13:47:51 +02:00
kodiakhq[bot] 8174af9137
Merge pull request #1856 from influxdata/crepererum/parquet_metadata_protobuf
refactor: use protobuf for in-parquet metadata
2021-07-01 08:00:27 +00:00
kodiakhq[bot] b817ea88dd
Merge branch 'main' into crepererum/parquet_metadata_protobuf 2021-07-01 07:52:39 +00:00
Raphael Taylor-Davies cc038010cd
feat: add persist_age_threshold to LifecycleRules (#1853)
Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com>
2021-06-30 21:27:06 +00:00
Andrew Lamb cfa06e1497
chore: Add query tests for compacted chunks (#1861)
Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com>
2021-06-30 20:59:29 +00:00
kodiakhq[bot] 99093b18fb
Merge pull request #1862 from influxdata/ntran/timeout
fix: change timeout to have all tests passed on slow laptop
2021-06-30 20:17:39 +00:00
kodiakhq[bot] 0d24584ed3
Merge branch 'main' into ntran/timeout 2021-06-30 20:10:18 +00:00
Nga Tran f6731c60d7 fix: change timeout to have all tests passed on slow laptop 2021-06-30 16:04:02 -04:00
Raphael Taylor-Davies 99a15cd452
refactor: single lifecycle error enumeration (#1859)
* refactor: single lifecycle error enumeration

* fix: fmt

Co-authored-by: Andrew Lamb <andrew@nerdnetworks.org>
2021-06-30 18:35:57 +00:00
Andrew Lamb 817a480cde
refactor: move lifecycle implementations out of db.rs and into their own modules (#1858)
* refactor: move lifecycle implementations out of db.rs and into their own modules

* fix: clippy
2021-06-30 17:24:04 +00:00
Andrew Lamb 9e1723620c
refactor: rename load_chunk_to_read_buffer to move_chunk_to_read_buffer (#1857)
Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com>
2021-06-30 16:53:18 +00:00
kodiakhq[bot] a849c50749
Merge pull request #1848 from influxdata/er/refactor/gRPC_logging
refactor: improve logging level for gRPC errors
2021-06-30 15:49:46 +00:00
kodiakhq[bot] 0beb5a888c
Merge branch 'main' into er/refactor/gRPC_logging 2021-06-30 15:42:03 +00:00
Edd Robinson 1049cb0a2a refactor: improve logging level for gRPC errors 2021-06-30 16:41:22 +01:00
Marco Neumann 4204127b05 refactor: use protobuf for in-parquet metadata 2021-06-30 16:51:37 +02:00
kodiakhq[bot] 9448b8044e
Merge pull request #1850 from influxdata/crepererum/safer_min_max_sequence
refactor: make `MinMaxSequence` safer to use
2021-06-30 14:45:41 +00:00
kodiakhq[bot] a2246fd890
Merge branch 'main' into crepererum/safer_min_max_sequence 2021-06-30 14:38:37 +00:00
Marco Neumann 043890369f refactor: make `MinMaxSequence` safer to use 2021-06-30 16:37:48 +02:00
Raphael Taylor-Davies 635e4d0a7d
refactor: plumbing to prevent compaction starving persistence (#1852)
Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com>
2021-06-30 13:43:25 +00:00
Raphael Taylor-Davies 530b5cdf22
feat: namespace issues in git-log-prs (#1849)
Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com>
2021-06-30 13:35:34 +00:00
pierwill b86fb88f60
docs: Edit Quick Start (#1839)
* docs: start editing Quick Start

* docs: edit Quick Start in README

* fix: reorder Quick start steps

* fix: Edit git instructions

* fix: s/values/options

* fix: Add a line

* fix: Edit release mode section

* fix: note that docker is optional

* fix: fix line break

* fix: fix link

* fix: more edits

* fix: s/Quick Start/Get started

* fix: rename API compatibility section

* fix: fix link

* fix: Apply code review suggestions

Co-authored-by: Andrew Lamb <andrew@nerdnetworks.org>

* fix: fix link path

* fix: remove rust version check instruction

Co-authored-by: pierwill <pierwill@users.noreply.github.com>
Co-authored-by: Andrew Lamb <andrew@nerdnetworks.org>
Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com>
2021-06-30 13:27:49 +00:00
Andrew Lamb 89757d7232
fix: do not print test output to logs except on failure (#1840)
* fix: do not print test output to logs except on failure

* docs: update CONTRIBUTING.md
2021-06-30 13:20:11 +00:00
kodiakhq[bot] 403f7297e1
Merge pull request #1844 from influxdata/crepererum/no_catalog_on_db_creation
feat: do NOT load preserved catalogs on late DB creation
2021-06-30 10:11:17 +00:00
kodiakhq[bot] 983062f6fa
Merge branch 'main' into crepererum/no_catalog_on_db_creation 2021-06-30 10:04:00 +00:00
kodiakhq[bot] 438b65cb94
Merge pull request #1845 from influxdata/er/refactor/read_buffer/table_names
refactor: remove table name from Read Buffer API.
2021-06-30 09:50:23 +00:00
kodiakhq[bot] e5cf08d05c
Merge branch 'main' into er/refactor/read_buffer/table_names 2021-06-30 09:43:41 +00:00
Edd Robinson d52807eb2b
Merge branch 'main' into er/refactor/read_buffer/table_names 2021-06-30 10:43:39 +01:00
Raphael Taylor-Davies 62d3305923
feat: optimize the dictionaries in the output of deduplicate node (#1827) (#1832)
* feat: optimize dedup dictionaries (#1827)

* fix: handle sliced null bitmasks

* chore: review feedback
2021-06-30 09:30:16 +00:00
Edd Robinson 2e430ac7f0 refactor: remove table name from read_filter schema 2021-06-30 09:50:53 +01:00
Edd Robinson 62f274cc1b refactor: remove table name from column_values 2021-06-30 09:46:54 +01:00
Edd Robinson 5737c9d962 refactor: remove table name from column_names 2021-06-30 09:43:41 +01:00
Marco Neumann c4e054f909 feat: do NOT load preserved catalogs on late DB creation
When a DB is created AFTER the server is initialized, then we can assume
it is a new DB (because the rules file did not exist beforehand). We
shall treat it as a new DB with no data and should not try to load some
leftover / stale / whatever preserved catalog for it. How this catalog
came into existence we do not know and it was certainly not properly
managed by IOx. So we error if there is a catalog.

Furthermore the old implementation was kinda broken since it loaded the
perserved catalog "in-sync" with the gRPC call that issued the DB
creation (we only have a delayed init concept for DBs that are loaded on
instance startup). In production that would very likely provoke nasty
timeouts.

On top of that this new behavior will also be somewhat more sane when we
think about sequencer (e.g. Kafka) replays. We certainly do not wanna do
any replays for newly created DBs.

TLDR: New behavior for DBs created via gRPC is "new empty DB". This does
NOT affect DBs loaded on instance startup (aka existing DBs).
2021-06-30 10:12:38 +02:00
Marco Neumann 58310abfee refactor: de-duplicate code in `server::db::load` 2021-06-30 10:08:25 +02:00
Andrew Lamb fef160e24f
feat: Implement data driven query_tests and port explain tests (#1814)
* feat: Implment data driven query testing and port explain tests

* fix: do not fmt the auto generated cases

* refactor: split setup and parser into separate modules

* refactor: Add log to runner, add end to end tests

* docs: fixu cpmments
2021-06-29 16:09:51 +00:00
kodiakhq[bot] 2deda5b14d
Merge pull request #1795 from influxdata/crepererum/mb_checkpoint
feat: implement persistence window checkpointing
2021-06-29 15:33:36 +00:00
kodiakhq[bot] e10173124f
Merge branch 'main' into crepererum/mb_checkpoint 2021-06-29 15:25:24 +00:00
Raphael Taylor-Davies eac9261507
chore: print end-to-end output (#1838)
* chore: print end-to-end output

* chore: clippy

* chore: update CONTRIBUTING.md

Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com>
2021-06-29 15:09:43 +00:00
kodiakhq[bot] 0f8ce926f7
Merge pull request #1836 from influxdata/crepererum/issue1821
refactor: write parquet files w/o holding the transaction lock
2021-06-29 13:56:16 +00:00
Marco Neumann 9d10ac9f6a refactor: write parquet files w/o holding the transaction lock
This allows to prepare writes per-tableXpartition before entering the
database-exclusive section that deals with catalog transactions.

Closes #1821.
2021-06-29 14:23:06 +02:00
Marco Neumann ddc9cd49ca chore: bump preserved catalog version 2021-06-29 14:23:06 +02:00
Marco Neumann 3ebb6a3037 refactor: do not capture txn-specific information in parquet files
This helps with #1821.
2021-06-29 14:22:36 +02:00
Raphael Taylor-Davies 3ae8ac2467
chore: improve wait_for_chunk failure output (#1835) 2021-06-29 11:54:32 +00:00
kodiakhq[bot] dc96f8f9a8
Merge pull request #1834 from influxdata/er/refactor/table_names
refactor: remove table_names from Read Buffer
2021-06-29 11:23:12 +00:00
Edd Robinson 4bab274bc1
Merge branch 'main' into er/refactor/table_names 2021-06-29 12:15:41 +01:00
Raphael Taylor-Davies 5287f6a577
feat: print operations on wait_for_chunk failure (#1809) (#1833)
Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com>
2021-06-29 11:09:11 +00:00
Edd Robinson a7198ea78b refactor: use satisfies_predicate in apply_predicate 2021-06-29 11:58:28 +01:00
Edd Robinson 86e2fe4138 refactor: satisfies predicate 2021-06-29 11:58:28 +01:00
kodiakhq[bot] fab04acef5
Merge pull request #1824 from influxdata/crepererum/issue1821-cleanup-lock
refactor: improve locking around the parquet file cleanup
2021-06-29 10:55:04 +00:00
kodiakhq[bot] eda9532eb2
Merge branch 'main' into crepererum/issue1821-cleanup-lock 2021-06-29 10:48:43 +00:00
Marco Neumann 48df13de05 refactor: use parking lot for catalog cleanup 2021-06-29 12:47:29 +02:00