Commit Graph

302 Commits (c837a6e8dcb9e240bf5e2b536d90174052c83213)

Author SHA1 Message Date
Andrew Lamb eb488cf55a
chore(compactor2): Improve documentation on split times (#7105)
* chore(compactor2): Improve documentation on split times

* fix: Apply suggestions from code review

Co-authored-by: Joe-Blount <73478756+Joe-Blount@users.noreply.github.com>

* fix: fmt

* fix: typo

---------

Co-authored-by: Joe-Blount <73478756+Joe-Blount@users.noreply.github.com>
Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com>
2023-03-02 12:00:55 +00:00
Andrew Lamb b2052c1b81
chore(compactor2): add documentation about the compactor2 file level invariants (#7101)
* chore(compactor2): add documentation about the compactor2 file level invariants

* fix: Fix doc links

---------

Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com>
2023-03-02 11:24:22 +00:00
Nga Tran 04ee075a73
chore: reove folder that was aciidently added by vs code (#7106) 2023-03-02 02:43:13 +00:00
Nga Tran c8b3827b20
test(compactor2): end-to-end data-tests with large overlap files (#7103)
* test: end-to-end data-tests with large overlap files

* chore: address review comments

---------

Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com>
2023-03-01 21:48:33 +00:00
Andrew Lamb 525c48de2c
feat(compactor2): add invariant checks to the compactor tests (#7096)
* feat(compactor2): adding invariant checks to the compactor tests

* fix: Update tests

* fix: remove uneeded change

* fix: filter out deleted files from invariant checks
2023-03-01 19:52:04 +00:00
Nga Tran ce215c2c67
test(compactor2): layout tests for scenarios of large size overlap files (#7097)
* test: layput tests for scenarios of large size overlap files

* fix: Update compactor2/tests/layouts/large_overlaps.rs

Co-authored-by: Nga Tran <nga-tran@live.com>

* fix: Update compactor2/tests/layouts/large_overlaps.rs

Co-authored-by: Nga Tran <nga-tran@live.com>

---------

Co-authored-by: Andrew Lamb <alamb@influxdata.com>
Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com>
2023-03-01 16:43:15 +00:00
Andrew Lamb f3a16a1221
feat(compactor2): add catalog upgrade information to tests (#7075)
Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com>
2023-02-28 19:28:42 +00:00
Nga Tran 22fe629f54
refactor: rename files and function to remove tartget level (#7073)
* refactor: rename files and function to remove tartget level

* chore: update a comment

---------

Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com>
2023-02-27 19:09:37 +00:00
Andrew Lamb 26b97482df
chore(compactor2): Split up tests into smaller modules (#7072) 2023-02-27 17:53:41 +00:00
Andrew Lamb 5194999d62
feat: Use ? for id of uncreated parquet files (#7066)
Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com>
2023-02-27 16:35:51 +00:00
Andrew Lamb dd5d4f4435
chore(compactor2): document and test `split_percentage` and `percentage_max_file_size` knobs (#7026)
* chore: document and test split_percentage and percentage_max_file_size

* fix: Apply suggestions from code review

Co-authored-by: Carol (Nichols || Goulding) <193874+carols10cents@users.noreply.github.com>

* chore: add test with both max file size and split percentage

* docs: whitespace engineering and small typo

---------

Co-authored-by: Carol (Nichols || Goulding) <193874+carols10cents@users.noreply.github.com>
2023-02-27 15:01:06 +00:00
Carol (Nichols || Goulding) faae5eb438 chore: Rerun cargo hakari manage-deps 2023-02-27 11:56:15 +01:00
Andrew Lamb 7e31b2638d
fix: Understandable compactor2 config report (#7028)
* fix: Understandable compactor2 config report

* fix: do not log postgres dsn

---------

Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com>
2023-02-22 23:43:31 +00:00
Joe-Blount 88d2882350
Merge branch 'main' into alamb/remove_old_algorithm 2023-02-21 09:02:35 -06:00
Andrew Lamb b785f751b3
feat(compactor): add simulator output (#7021) 2023-02-17 15:04:26 +00:00
Andrew Lamb d90443d9e6 refactor: remove files_filter too 2023-02-17 09:45:00 -05:00
Andrew Lamb 21a3c8c40d refactor: delete all at once algorithm 2023-02-17 06:24:26 -05:00
Nga Tran ae58831467
test: add a test that have over 2 times ax limit files per plan (#7017)
Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com>
2023-02-17 10:42:31 +00:00
Nga Tran f69c8adc7c
feat: Compact partition with many L0 files (#7007)
* feat: initial implementation of the split

* feat: split many L0 files in groups and compact them into new and fewer L0 files

* test: remove iappropriate AllAtOnce test

* refactor: move file classification for initial target to its own function

* fix: pop the branch from start to end

* chore: address review comments

* feat: support splitting to many L1 files

* feat: only add extra round to compact level-n files to same level-n files if their files plus overlapped level-n-plus-1 over limit

* chore: Apply suggestions from code review

Co-authored-by: Andrew Lamb <alamb@influxdata.com>

* chore: final cleanup and address comments

* chore: run fmt

---------

Co-authored-by: Andrew Lamb <alamb@influxdata.com>
Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com>
2023-02-16 21:17:25 +00:00
dependabot[bot] a06f64b198
chore(deps): Bump insta from 1.26.0 to 1.28.0 (#7016)
Bumps [insta](https://github.com/mitsuhiko/insta) from 1.26.0 to 1.28.0.
- [Release notes](https://github.com/mitsuhiko/insta/releases)
- [Changelog](https://github.com/mitsuhiko/insta/blob/master/CHANGELOG.md)
- [Commits](https://github.com/mitsuhiko/insta/compare/1.26.0...1.28.0)

---
updated-dependencies:
- dependency-name: insta
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-02-16 18:14:25 +00:00
Andrew Lamb 63877ab314 chore: Move target level choice into round info 2023-02-15 14:00:35 -05:00
Andrew Lamb 063ac9f2cb
test: Add another layout test to compactor (#7005) 2023-02-15 18:57:36 +00:00
Andrew Lamb 999aba9d56 feat(compactor): Add RoundInfo structure 2023-02-15 13:00:58 -05:00
Joe-Blount 391e64772c
Merge branch 'main' into jrb_5_add_shutdown_log 2023-02-15 08:17:59 -06:00
Marco Neumann f499022511
feat: add compaction level to commit metrics (#6985)
* feat: add compaction level to commit metrics

* test: more realism
2023-02-15 09:28:19 +00:00
Joe-Blount e9f4b8f769 chore: add shutdown logging 2023-02-14 17:37:33 -06:00
Nga Tran 0ffb211c54
test: more compactor layout tests (#6988)
* test: more compactor layout tests

* chore: address review comments
2023-02-14 22:14:06 +00:00
Andrew Lamb 04bd47e64a
feat(compactor): Add more tests, improve sizes to simulator run display more (#6981)
* refactor: Split layout tests into their own module

* feat: Add more tests, improve sizes to simulator run display more

* fix: Apply suggestions from code review

Co-authored-by: Nga Tran <nga-tran@live.com>

* fix: fix comment wording

* fix: reporting order of skipped compactions

* chore: Run cargo hakari tasks

* fix: revert changes to Cargo.lock

* fix: revert workspace hack change

---------

Co-authored-by: Nga Tran <nga-tran@live.com>
Co-authored-by: CircleCI[bot] <circleci@influxdata.com>
2023-02-14 19:34:19 +00:00
Nga Tran 5c506058da
feat: skip partitions of wide tables (#6978)
* feat: skip partitions of wide tables

* test: one more test

* refactor: address review comments
2023-02-14 16:42:13 +00:00
Andrew Lamb 263d8fe21f
chore: Layout tests with `TargetLevel` algorithm + update display (#6977)
* refactor: move ParquetFileSimulator to compactor2_test_utils

* chore: Test with new algorithm + update display

* chore: Updates

* chore: Update setting to match prod
2023-02-13 22:12:55 +00:00
Marco Neumann 13ce6da3df
refactor: extract `FileClassifer` component (#6946)
* refactor: extract `FileClassifer` component

Make the driver slightly smaller. Also makes the "all-in-one" mode
easier to understand.

* docs: add some

---------

Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com>
2023-02-13 16:25:05 +00:00
Dom 9d20f26006
Merge branch 'main' into dom/namespace-soft-delete-catalog 2023-02-13 12:07:03 +00:00
Andrew Lamb 4d7aa1e48b
refactor: extract compactor2 test utils into `compactor2_test_utils` and integration test (#6960)
* refactor: extract compactor2 test utils into `compactor2_test_utils` and integration test

* fix: Update compactor2/src/components/mod.rs

Co-authored-by: Marco Neumann <marco@crepererum.net>

---------

Co-authored-by: Marco Neumann <marco@crepererum.net>
Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com>
2023-02-13 12:06:42 +00:00
Dom Dwyer 2d46a364dc
feat: namespace soft-delete support
This commit adds initial support for "soft" namespace deletion, where
the actual records & data remain, but are no longer queryable /
writeable.

Soft deletion is eventually consistent - users can expect to continue
writing to and reading from a bucket after issuing a soft delete call,
until the various components either restart, or have their caches
flushed.

The components treat soft-deleted namespaces differently:

    * router: ignore soft deleted namespaces
    * ingester: accept soft deleted namespaces
    * compactor: accept soft deleted namespaces
    * querier: ignore soft deleted namespaces
    * various gRPC services: ignore soft deleted namespaces

This ensures that the ingester & compactor do not see rows "vanishing"
from the database, and continue to make forward progress.

Writes for the deleted namespace that are buffered in the ingester will
be persisted as normal, allowing us to support "un-delete" operations
where the system is restored to a the state at which the delete was
issued (rather than loosing the buffered data).

Follow-on work is required to ensure GC drops the orphaned parquet files
after the configured GC time, and optimisations such as not compacting
parquet from soft-deleted namespaces seems like a trivial win.
2023-02-13 12:01:35 +01:00
dependabot[bot] 0cbd9f6a82
chore(deps): Bump tokio-util from 0.7.5 to 0.7.7 (#6964)
---
updated-dependencies:
- dependency-name: tokio-util
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-02-13 10:10:53 +00:00
Andrew Lamb 0db37f564c
chore: Update display, and add initial scenario tests (#6954)
Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com>
2023-02-10 20:20:19 +00:00
Andrew Lamb 779fb93ce7
refactor: move test builders out of compactor2 code (#6953)
* refactor: move test builders out of compactor2 code

* fix: docs
2023-02-10 18:28:09 +00:00
Andrew Lamb d790406085
feat(compactor): Implement ParquetFileSimulator and use it to show layout testing (#6932)
* feat(compactor): implement ParquetFileSimulator, show it working in tests

* fix: Update compactor2/src/components/parquet_files_sink/simulator.rs

Co-authored-by: Nga Tran <nga-tran@live.com>

* feat: Improve display of plan_ir

* refactor: return CompactResult, avoid `mut TestSetup`

---------

Co-authored-by: Nga Tran <nga-tran@live.com>
Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com>
2023-02-10 14:51:17 +00:00
Dom Dwyer a85dcd745b
refactor(catalog): expose deleted_at on Namespace
Add the new catalog column to the Namespace representation/model.
2023-02-10 14:15:01 +01:00
dependabot[bot] c0c9b51b9e
chore(deps): Bump tokio-util from 0.7.4 to 0.7.5 (#6941)
Bumps [tokio-util](https://github.com/tokio-rs/tokio) from 0.7.4 to 0.7.5.
- [Release notes](https://github.com/tokio-rs/tokio/releases)
- [Commits](https://github.com/tokio-rs/tokio/compare/tokio-util-0.7.4...tokio-util-0.7.5)

---
updated-dependencies:
- dependency-name: tokio-util
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-02-10 09:42:00 +00:00
Marco Neumann 6a470252ac
refactor: `PartitionInfoSource` (#6930)
* refactor: `PartitionInfoSource`

Clean up the driver code a bit. There is certainly a good point in
having all these three sources (partition, table, namespace) separate,
but the driver doesn't really need to know that. In the end, it just
wants to have a `PartitionInfo` instance.

* docs: typo

Co-authored-by: Andrew Lamb <alamb@influxdata.com>

---------

Co-authored-by: Andrew Lamb <alamb@influxdata.com>
2023-02-09 16:29:28 +00:00
Andrew Lamb fd42f94fb8
test(compactor): show compactor working (#6910)
Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com>
2023-02-09 16:06:37 +00:00
Marco Neumann 4a97620664
refactor: `ParquetFilesSink` (#6928)
* refactor: pass `PlanIR` by ref

* refactor: `ParquetFilesSink`
2023-02-09 15:53:19 +00:00
Marco Neumann 0e5f31c576
feat: add log around job semaphore and per-partition (#6927)
May help w/ debug OOMs.
2023-02-09 15:02:34 +00:00
Marco Neumann 7f4fd1013c
feat: measure scratchpad store (#6925)
* refactor: create `objec_store` submodule

* feat: add gauge for scratchpad size
2023-02-09 13:03:26 +00:00
Marco Neumann e33ac920a5
refactor: introduce IR before creating actual DF plan (#6922)
* refactor: introduce IR before creating actual DF plan

Let's have an IR that presents a machine-readable form of how output
files may look like.

* docs: improve

Co-authored-by: Andrew Lamb <alamb@influxdata.com>

* feat: also log plan type

---------

Co-authored-by: Andrew Lamb <alamb@influxdata.com>
2023-02-09 11:31:18 +00:00
Andrew Lamb bd2a72a4b6
test(compactor): Improve file size display in compactor tests (#6909)
* test(compactor): Improve file size display in compactor tests

* fix: try different display

* fix: update

* fix: use b to show size
2023-02-08 22:35:12 +00:00
Marco Neumann 18d5924dfd
test: allow testing the compactor w/o any real data (#6908)
* test: allow testing the compactor w/o any real data

Things that are missing:

- output files have nondeterministic IDs which interferes w/ snapshot
  testing. We should probably normalize the IDs somehow.
- time ranges of output files are not captured correctly (because the
  mock sink doesn't know how to calculate them)

* fix: Add output assertion

* fix: fmt

* docs: improve

Co-authored-by: Andrew Lamb <alamb@influxdata.com>

* fix: fmt

---------

Co-authored-by: Andrew Lamb <andrew@nerdnetworks.org>
Co-authored-by: Andrew Lamb <alamb@influxdata.com>
2023-02-08 19:10:28 +00:00
Marco Neumann 43b11b8be8
fix: metric labels (#6904)
Metric labels are key-value based.

Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com>
2023-02-08 18:18:56 +00:00
Marco Neumann 5e287ac8e6
refactor: make `TestSetup` immutable (#6907)
* refactor: split off file creation

* refactor: make `TestSetup` immutable
2023-02-08 13:17:15 +00:00
Marco Neumann 6f7f608685
refactor: avoid nested test modules (#6906)
Just call it `tests` and avoid nesting a module in a module.

Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com>
2023-02-08 11:16:36 +00:00
dependabot[bot] 0ecde75af5
chore(deps): Bump object_store from 0.5.3 to 0.5.4 (#6900)
Bumps [object_store](https://github.com/apache/arrow-rs) from 0.5.3 to 0.5.4.
- [Release notes](https://github.com/apache/arrow-rs/releases)
- [Changelog](https://github.com/apache/arrow-rs/blob/master/CHANGELOG-old.md)
- [Commits](https://github.com/apache/arrow-rs/compare/object_store_0.5.3...object_store_0.5.4)

---
updated-dependencies:
- dependency-name: object_store
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com>
2023-02-08 09:40:11 +00:00
Marco Neumann dcba47ab58
feat: allow the compactor to process all known partitions (#6887)
* feat: `PartitionRepo::list_ids`

* refactor: `CatalogPartitionsSource` => `CatalogToCompactPartitionsSource`

* feat: allow the compactor to process all known partitions

Closes #6648.

* docs: improve

Co-authored-by: Andrew Lamb <alamb@influxdata.com>

---------

Co-authored-by: Andrew Lamb <alamb@influxdata.com>
2023-02-08 09:32:21 +00:00
Andrew Lamb 47b47f225b
chore: add more insta snapshots for initial setup (#6894)
Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com>
2023-02-07 23:44:59 +00:00
Andrew Lamb d4e07eb6ac
chore: Update target_level_upgrade_split to use insta snapshots for partition verificiation (#6892) 2023-02-07 20:36:46 +00:00
Andrew Lamb ea0fc79340
chore: Update tests in compactor2 to ue insta (#6891)
Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com>
2023-02-07 19:58:43 +00:00
NGA-TRAN c5025d6271 chore: merge main to branch 2023-02-07 14:04:03 -05:00
NGA-TRAN aab6ac7424 refactor: address review comments 2023-02-07 13:35:11 -05:00
Nga Tran 76172daf39
feat: to prevent OOMs/crrash that will lead to skip compaction, let us compact L1 files when they are large enough (#6877)
Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com>
2023-02-07 17:46:44 +00:00
NGA-TRAN db51d77eb8 docs: even more detailed info about skipped partitions 2023-02-07 10:13:58 -05:00
Andrew Lamb f56023b222
feat: use insta_snapshots (#6884)
Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com>
2023-02-07 15:08:47 +00:00
Nga Tran 6297ad206f
Merge branch 'main' into ntran/c2-skip 2023-02-07 09:38:23 -05:00
NGA-TRAN 646349c52d docs: addd comments to explain further the skip 2023-02-07 09:34:40 -05:00
Marco Neumann 997cca67a3
fix: `--compaction-process-once` should exit (#6886)
- do not wait for a non-empty partition result (this doesn't make sense
  if we are not running endlessly)
- modify entry point to allow the compactor to exit on its own (this is
  normally not allowed for other server types)
2023-02-07 13:52:17 +00:00
Marco Neumann e179887ede
fix: metric buckets (#6883) 2023-02-07 12:07:45 +00:00
Marco Neumann 3a4364b8f8
fix: partition-done metrics/logs (#6882)
Ignore partitions that where throttled or filtered due to the "not
unique" combo.

This is in line w/ the "partitions source", so the metric for "partition
in" and "partition out" line up.

Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com>
2023-02-07 11:01:33 +00:00
Andrew Lamb 65e7ff779c
feat: verified test output display for compactor (#6859)
* feat: verified test output display for compactor

* fix: demacrofy assert_parquet_files

* fix: demacrofiy assert_parquet_files_split

* refactor: compute min/max without sentinels

* fix: clippy

---------

Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com>
2023-02-07 10:49:38 +00:00
Dom 9e8785f9c1
Merge branch 'main' into dom/cache-table-limit 2023-02-07 10:04:50 +00:00
NGA-TRAN 6ec44d697a chore: cleanup 2023-02-06 21:41:35 -05:00
NGA-TRAN 24ebd923a2 chore: Merge branch 'ntran/c2-skip' of https://github.com/influxdata/influxdb_iox into ntran/c2-skip 2023-02-06 21:39:24 -05:00
NGA-TRAN 56ca3186b6 chore: turn test assert on 2023-02-06 21:39:17 -05:00
Nga Tran bce7dba856
Merge branch 'main' into ntran/c2-skip 2023-02-06 21:35:20 -05:00
NGA-TRAN 32715595bb chore: cleanup 2023-02-06 21:32:06 -05:00
NGA-TRAN bdf3e32dcd test: tests for partition filters of resource limit 2023-02-06 21:26:45 -05:00
NGA-TRAN 9f2fecde90 feat: first step to skip partition until we know what files to compact 2023-02-06 17:30:15 -05:00
Andrew Lamb 452b69cd2c
docs(compactor): Update comments about what `PartitionFilter` does (#6878)
* docs(compactor): Update comments about what `PartitionFilter` does

* fix: Update compactor2/src/components/partition_filter/mod.rs

* fix: fmt

---------

Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com>
2023-02-06 21:44:32 +00:00
Andrew Lamb 50514a91ff
refactor: reduce duplication for compactor_tests (#6879) 2023-02-06 21:08:12 +00:00
Andrew Lamb 0c6b685ee1
refactor: add / cleanup some comments in compactor2 (#6853)
* refactor: add / cleanup some comments in compactor2

* fix: clarify comments after talking Nga

* fix: Update comments
2023-02-06 19:11:10 +00:00
Nga Tran 8689017f8f
chore: debug info (#6874)
* chore: debug info

* chore: Apply suggestions from code review
2023-02-06 18:16:33 +00:00
Dom Dwyer a633964f2b
feat(catalog): return max table limit in schema
The maximum number of tables is part of the Namespace, which is already
loaded in its entirety. This commit copies the value into the
NamespaceSchema, making it available for the router to utilise.
2023-02-06 17:33:55 +01:00
Marco Neumann 5b6b7cbf86
feat: rework commit log+metrics (#6871)
* feat: add more information to commit logging

* feat: rework commit metrics

- more consistent metric names
- histograms per file and per job
- more histogram types (number of files, rows, bytes)
2023-02-06 15:56:24 +00:00
Marco Neumann f83db0a52e
refactor: pass more information to `commit` (#6867)
This is NOT used yet but will greatly help w/ logging and metrics. E.g.
it allows us to count rows and bytes of in/out-flow, create per-file
histograms of bytes/rows, and more.

Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com>
2023-02-06 12:29:32 +00:00
Raphael Taylor-Davies d3601a59f8
chore: update DataFusion, upgrade `arrow` `arrow-flight` and `parquet` to `32.0.0` (#6756)
* chore: update DataFusion

* fix: test

* chore: format

* chore: clippy

* chore: update arrow

* chore: arrow upgrade fallout

* chore: Run cargo hakari tasks

* chore: remove failing warm compaction test

* fix: flight error propagation

* chore: update parquet size

* fix: Update error message

* chore: Update parquet metadata test

---------

Co-authored-by: CircleCI[bot] <circleci@influxdata.com>
Co-authored-by: Andrew Lamb <alamb@influxdata.com>
Co-authored-by: Andrew Lamb <andrew@nerdnetworks.org>
Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com>
2023-02-06 11:35:39 +00:00
Marco Neumann 52b43c40bc
refactor: use "endless" stream for compactor work (#6803)
Instead of looping and polling a fresh set of partitions and
constructing a stream from that, use an endless stream instead. This
helps w/ efficiency during roll-overs since we can already start to
process the next set of partitions while the last ones from the previous
round are still in-progress.

Closes #6750.

Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com>
2023-02-06 11:11:39 +00:00
Marco Neumann 18287dc30e
fix: do not silently ignore errors (#6866)
Fixes https://github.com/influxdata/idpe/issues/17085 .

Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com>
2023-02-06 11:01:53 +00:00
Marco Neumann 4fb1b1948a
feat: throttle partitions that do not receive commits (#6831)
* feat: throttle partitions that do not receive commits

* test: add failing test

* fix: partition ID in "unique" combo

* fix: partition ID in "throttle" combo

* docs: improve

Co-authored-by: Dom <dom@itsallbroken.com>

---------

Co-authored-by: Dom <dom@itsallbroken.com>
Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com>
2023-02-06 09:59:33 +00:00
Marco Neumann cd6d69c9b1
docs: high-level documentation for `compactor2` (#6818)
* docs: high-level documentation for `comapctor2`

* docs: typos & clarification

Co-authored-by: Nga Tran <nga-tran@live.com>
Co-authored-by: Andrew Lamb <alamb@influxdata.com>

* docs: improve wording

* fix: typo

---------

Co-authored-by: Nga Tran <nga-tran@live.com>
Co-authored-by: Andrew Lamb <alamb@influxdata.com>
2023-02-06 08:37:57 +00:00
Nga Tran e85de74a5d
feat: partition filters for TargetLevel version and a complete test (#6858)
* feat: partition filters for TargetLevel version and a complete test

* chore: Apply suggestions from code review

Co-authored-by: Andrew Lamb <alamb@influxdata.com>

* chore: run fmt after applying review suggestions in git

---------

Co-authored-by: Andrew Lamb <alamb@influxdata.com>
Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com>
2023-02-04 19:54:41 +00:00
Andrew Lamb f1561676de
chore: refactor splitting files by level (#6857)
* chore: refactor splitting files by level

* fix: docs
2023-02-04 16:05:04 +00:00
Andrew Lamb 2b36692488
refactor: reduce more code duplication (#6856) 2023-02-04 15:12:06 +00:00
Andrew Lamb 77b2f53cc4
refactor: reduce code duplication in compactor (#6855) 2023-02-04 15:00:55 +00:00
Andrew Lamb edacc21e8e
refactor: extract timerange calculations (#6854)
Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com>
2023-02-04 13:40:55 +00:00
Nga Tran f46881496d
feat: split files to upgrade and compact (#6852)
* feat: first step to split upgrade

* chore: Apply suggestions from code review

Co-authored-by: Andrew Lamb <alamb@influxdata.com>

* chore: address review comments

* chore: rename per review request

---------

Co-authored-by: Andrew Lamb <alamb@influxdata.com>
2023-02-04 13:17:29 +00:00
Nga Tran 670b811a2e
feat: split non-overlapping files and not compact them (#6849)
* chore:  start the overlap filter module

* feat: split  non-overlapping files and not compact them

* chore: remove unused file

* refactor: address review comment

* chore: Apply suggestions from code review

Co-authored-by: Andrew Lamb <alamb@influxdata.com>

---------

Co-authored-by: Andrew Lamb <alamb@influxdata.com>
2023-02-03 23:25:34 +00:00
NGA-TRAN db3ae70366 chore: merge main to branch 2023-02-03 17:38:05 -05:00
NGA-TRAN f071a3674e refactor: rename TargetLevelDetection to TargetLevelChooser 2023-02-03 17:28:33 -05:00
Carol (Nichols || Goulding) 30fea67701
fix: Move variables within format strings. Thanks clippy!
Changes made automatically using `cargo clippy --fix`.
2023-02-03 13:06:17 -05:00
Carol (Nichols || Goulding) fbfbe1adb4
fix: Remove track_caller from async fns as it's a no-op
Rust 1.67 now says:

warning: `#[track_caller]` on async functions is a no-op
   = note: see issue #87417 <https://github.com/rust-lang/rust/issues/87417> for more information
   = note: `#[warn(ungated_async_fn_track_caller)]` on by default
2023-02-03 13:06:01 -05:00
Nga Tran 0ed9754c4a
feat: split higher target level files from compact ones (#6829)
* feat: split upgrade & compact

* chore: Apply suggestions from code review

Co-authored-by: Marco Neumann <marco@crepererum.net>

* chore: merge main to branch

* refactor: address review comments

* fix: doc comment fo []

---------

Co-authored-by: Marco Neumann <marco@crepererum.net>
Co-authored-by: Andrew Lamb <alamb@influxdata.com>
Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com>
2023-02-03 17:57:38 +00:00
NGA-TRAN 930a40f6f6 fix: a kind of conflict the git merge does not know yet 2023-02-03 10:56:48 -05:00
NGA-TRAN b0197e6221 chore: Merge branch 'main' into ntran/c2-algo2-target-level 2023-02-03 10:50:30 -05:00
NGA-TRAN f02d0629ce refactor: address review comment and rename to match comapct algo version names 2023-02-03 10:49:45 -05:00
Nga Tran 1535366666
refactor: rename compact algo versions to reflect their actual work (#6841)
* refactor: rename compact algo versions to reflect thier actual work

* chore: Apply suggestions from code review

Co-authored-by: Andrew Lamb <alamb@influxdata.com>

---------

Co-authored-by: Andrew Lamb <alamb@influxdata.com>
Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com>
2023-02-03 15:06:38 +00:00
Nga Tran ff39917dcb
chore: Apply suggestions from code review
Co-authored-by: Marco Neumann <marco@crepererum.net>
2023-02-03 09:40:41 -05:00
NGA-TRAN fc539cfe33 feat: compaction target level detection 2023-02-02 15:09:29 -05:00
Nga Tran 5a896764cc
refactor: Framework for compact version2: hotcold (#6810)
* refactor: Framework for compact version2: hotcold

* chore: Apply suggestions from code review

Co-authored-by: Marco Neumann <marco@crepererum.net>

* refactor: address review comments

---------

Co-authored-by: Marco Neumann <marco@crepererum.net>
Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com>
2023-02-02 17:07:58 +00:00
Marco Neumann cb582b859d
revert: throttle partitions that do not receive commits (#6778) (#6820)
This will stall the compactor and only touch each partition ones because
the "unique" combo thinks that partitions never finish. This will need
more thought.
2023-02-02 16:29:45 +00:00
Nga Tran 0ddf11adab
chore: add definition for the output of compacting a partition (#6806)
* chore: add definition for the output of compacting a partition

* chore: Apply suggestions from code review

Co-authored-by: Andrew Lamb <alamb@influxdata.com>

* chore: address review comments

---------

Co-authored-by: Andrew Lamb <alamb@influxdata.com>
Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com>
2023-02-02 13:35:32 +00:00
Marco Neumann c90ddd12d1
feat: throttle partitions that do not receive commits (#6778)
This was a bit tricky to design so it is testable and modular, but I
think this turned out quite nicely. It will even work w/ #6750.

Fixes #6727.

Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com>
2023-02-02 09:38:03 +00:00
Nga Tran 0ef4f9fa9b
feat: start adding piece by piece for hotcold compaction (#6804)
* feat: start adding piece by piece for hotcold compaction

* chore: remove upgrade from commit results

* chore: address review comments

* chore: comments for stop conditions
2023-02-01 19:52:48 +00:00
Marco Neumann d16eaac64b
refactor: ensure that we only have a partition ID ONCE within the pipeline (#6774)
* refactor: `MockPartitionDoneSink::{errors => results}`

* feat: ensure we don't concurrently process the same partition

Helps w/ #6750.

* test: extend `test_unique`

* docs: explain `unique_partitions`

---------

Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com>
2023-02-01 15:42:40 +00:00
Marco Neumann 0a20bd404e
feat: allow selection of different compactor algo versions (#6800)
Required to lift&shift to hot-cold compaction w/ keeping the codebase
maintainable.
2023-02-01 15:33:41 +00:00
Marco Neumann b8b59bf73b
feat: allow partition filters to error + flag partitions (#6796)
* refactor: error handling clean-up and testing

* feat: allow partition filters to error + flag partitions

Closes #6748.
2023-02-01 11:34:53 +00:00
Marco Neumann c8da5a8e07
refactor: extract early ID-based partition filters into new components (#6794)
This should greatly improve efficiency of the two filters ("by ID" -
used for mocking / tests / dev, "shard"). This also changes the metrics
slightly since the partitions filtered there no longer count into the
overall "backlog" (which makes sense for the two filters).

I've left the "never skipped" filter where it is, because it needs to
perform IO (i.e. shouldn't be done for all partitions upfront) and we
shall only have a few skipped partitions, so it's not such a big if
needlessly fetch the parquet files for them.

Closes #6783.
2023-02-01 11:08:47 +00:00
dependabot[bot] d0e6b16450
chore(deps): Bump bytes from 1.3.0 to 1.4.0
Bumps [bytes](https://github.com/tokio-rs/bytes) from 1.3.0 to 1.4.0.
- [Release notes](https://github.com/tokio-rs/bytes/releases)
- [Changelog](https://github.com/tokio-rs/bytes/blob/master/CHANGELOG.md)
- [Commits](https://github.com/tokio-rs/bytes/compare/v1.3.0...v1.4.0)

---
updated-dependencies:
- dependency-name: bytes
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-02-01 00:30:56 +00:00
Marco Neumann 62697265c1
feat: compactor sharding (#6729)
I'm not saying we have to use this, but this is a demonstration how easy
it would be to add sharding to the compaction tier and also acts as a
"backup / insurance" if we ever need it.

Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com>
2023-01-31 14:37:06 +00:00
Marco Neumann b682ffcb36
refactor: add partition ID to commit (#6775)
Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com>
2023-01-31 11:41:25 +00:00
dependabot[bot] 6f032b1d57
chore(deps): Bump async-trait from 0.1.63 to 0.1.64 (#6769)
Bumps [async-trait](https://github.com/dtolnay/async-trait) from 0.1.63 to 0.1.64.
- [Release notes](https://github.com/dtolnay/async-trait/releases)
- [Commits](https://github.com/dtolnay/async-trait/compare/0.1.63...0.1.64)

---
updated-dependencies:
- dependency-name: async-trait
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-01-31 10:18:27 +00:00
Marco Neumann b635dda85c
feat: throttle when there are not partitions to compact (#6752)
* test: `MockPartitionsSource::set`

* test: `AssertFutureExt`

* feat: throttle when there are not partitions to compact

Fixes #6727.

---------

Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com>
2023-01-30 12:00:03 +00:00
Andrew Lamb f133cda00c
docs: Add docstring to Scratchpad (#6742)
* docs: Add docstring to Scratchpad

* fix: put derive macro after docstring

* fix: Update compactor2/src/components/scratchpad/mod.rs

Co-authored-by: Marco Neumann <marco@crepererum.net>

* fix: Update other italic markdown

---------

Co-authored-by: Marco Neumann <marco@crepererum.net>
2023-01-30 11:52:13 +00:00
Marco Neumann 515f0eef64
feat: simple compactor2 self-protection (#6728)
Add some rough "partition is too big" filter for now until we can deal
with them (the framework allows that but we need to set up the proper
divide-and-conquer components).

This will hopefully prevent our prod compactor from dying that often.

Note that this is also duct-tape around two issues:

- DataFusion not accounting in-flight data all the time
- Our wide fan-out query plans (see https://github.com/influxdata/idpe/issues/16768#issuecomment-1387056833 )

Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com>
2023-01-30 10:57:47 +00:00
Marko Mikulicic 0bc7d90ee3 chore: Avoid defining transition shard numbers in multiple crates 2023-01-27 18:30:34 +01:00
Marko Mikulicic f6e7724d19
fix(compactor2): Update other locations of the TRANSITION_SHARD_INDEX (#6736) 2023-01-27 16:59:24 +00:00
Marco Neumann 4391e30d2d
feat: improve compactor2 debugging (#6718)
* feat: add planning logging wrapper

* refactor: split partitionS source and partition source into two components
2023-01-26 16:10:20 +00:00
Marco Neumann 68380a32e5
fix: "timeout" as a reason to skip a partition (#6716)
I've meant to skip partitions w/ timeouts when I designed the
functionality but forgot to adjust the error filter accordingly. To not
run into this problem again (i.e. forget adjust the filter), make the
code a bit more explicit.

Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com>
2023-01-26 15:00:13 +00:00
Marco Neumann 30d411dc95
feat: shadow mode (#6712)
* refactor: remove untyped durations from `compactor2`

* feat: shadow mode

Closes #6645.

* refactor: split input and output store
2023-01-26 14:20:55 +00:00
Nga Tran b8a80869d4
feat: introduce a new way of max_sequence_number for ingester, compactor and querier (#6692)
* feat: introduce a new way of max_sequence_number for ingester, compactor and querier

* chore: cleanup

* feat: new column max_l0_created_at to order files for deduplication

* chore: cleanup

* chore: debug info for chnaging cpu.parquet

* fix: update test parquet file

Co-authored-by: Marco Neumann <marco@crepererum.net>
2023-01-26 10:52:47 +00:00
Marco Neumann ed694d3be4
feat: introduce scratchpad store for compactor (#6706)
* feat: introduce scratchpad store for compactor

Use an intermediate in-memory store (can be a disk later if we want) to
stage all inputs and outputs of the compaction. The reasons are:

- **fewer IO ops:** DataFusion's streaming IO requires slightly more
  IO requests (at least 2 per file) due to the way it is optimized to
  read as little as possible. It first reads the metadata and then
  decides which content to fetch. In the compaction case this is (esp.
  w/o delete predicates) EVERYTHING. So in contrast to the querier,
  there is no advantage of this approach. In contrary this easily adds
  100ms latency to every single input file.
- **less traffic:** For divide&conquer partitions (i.e. when we need to
  run multiple compaction steps to deal with them) it is kinda pointless
  to upload an intermediate result just to download it again. The
  scratchpad avoids that.
- **higher throughput:** We want to limit the number of concurrent
  DataFusion jobs because we don't wanna blow up the whole process by
  having too much in-flight arrow data at the same time. However while
  we perform the actual computation, we were waiting for object store
  IO. This was limiting our throughput substantially.
- **shadow mode:** De-coupling the stores in this way makes it easier to
  implement #6645.

Note that we assume here that the input parquet files are WAY SMALLER
than the uncompressed Arrow data during compaction itself.

Closes #6650.

* fix: panic on shutdown

* refactor: remove shadow scratchpad (for now)

* refactor: make scratchpad safe to use
2023-01-26 10:03:08 +00:00
Marco Neumann 7306ea9424
feat: divide&conquer framework (#6697)
Allows compactor2 to run a fixed-point loop (until all work is done) and
in every loop in can run mulitiple jobs.

The jobs are currently organized by "branches". This is because our
upcoming OOM handling may split a branch further if it doesn't complete.

Also note that the current config resembles the state prior to this PR.
So the FP-loop will only iterate ONCE and then runs out of L0 files. A
more advanced setup can be built using the framework though.
2023-01-25 14:45:20 +00:00
Marco Neumann 40e6a1a437
feat: job semaphore (#6696)
* refactor: avoid too-many-arguments

* refactor: extract `fetch_partition_info`

* feat: job semaphore
2023-01-25 10:35:07 +00:00
Marco Neumann 4521516147
feat: add per-partition timeout (#6686)
It seems that prod was hanging last night. This is pretty hard to debug
and in general we should protect the compactor against hanging /
malformed partitions that take forever. This is similar to the fact that
the querier also has a timeout for every query. Let's see if this shows
anything in prod (and if not it's still a desired safety net).

Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com>
2023-01-24 16:53:47 +00:00
Marco Neumann 1c87d9667f
refactor: record partition completion (both Ok and Err) (#6680)
With the upcoming divide-and-conquer approach, we have have multiple
commits per partition since we can divide it into multiple compaction
jobs. For metrics (and logs) however it is important to track the
overall process, so we shall also monitor the number of completed
partitions.
2023-01-24 15:06:15 +00:00
Marco Neumann 32df24e057
feat: compactor2 error classification (#6676)
* feat: add error kinds

* refactor: sink proper error type

* fix: ignore object store errors

See <https://github.com/influxdata/idpe/issues/16984>.

* feat: log error kind

* feat: per-kind error metric

Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com>
2023-01-24 13:50:19 +00:00
Marco Neumann bcb1232c5d
refactor: integrate "skipped" handling into the partition filter framework (#6673)
* refactor: pass partition ID to partition filter

* feat: add logging partition filter wrapper

* refactor: make partition filter async

* refactor: integrate "skipped" handling into the partition filter framework

Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com>
2023-01-24 11:34:06 +00:00
Nga Tran 06d4a5fe4e
refactor: ignore partitions in table skipped compactions (#6666)
* refactor: ignore partitions in table skipped compactions

* refactor: continue ignoring partitions in skipped compaction

* test: skip partition
2023-01-23 19:53:05 +00:00
Marco Neumann e2cfe809d2
refactor: planner as a component (#6665)
* refactor: planner as a component

Now everything except for the core algorithm structure is a component.
This also means that the driver no longer needs the whole config
structure.

* docs: explain V1
2023-01-23 16:02:01 +00:00
Marco Neumann c9821720ab
test: ensure Arrow/DataFusion panics don't crash compactor (#6664)
Closes #6644.
2023-01-23 15:30:16 +00:00
Marco Neumann cb02262b9d
refactor: extract "exec DF plan" and "store stream to file" components (#6663)
* refactor: extract `PartitionInfo`

* refactor: extract DF exec component

* feat: add some error conversions

* refactor: make fn public

* refactor: extract file sink component

* fix: clippy
2023-01-23 14:40:35 +00:00
dependabot[bot] 0114e7ee50
chore(deps): Bump async-trait from 0.1.61 to 0.1.63 (#6660)
Bumps [async-trait](https://github.com/dtolnay/async-trait) from 0.1.61 to 0.1.63.
- [Release notes](https://github.com/dtolnay/async-trait/releases)
- [Commits](https://github.com/dtolnay/async-trait/compare/0.1.61...0.1.63)

---
updated-dependencies:
- dependency-name: async-trait
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-01-23 08:41:27 +00:00
Nga Tran 411b3db928
fix: Get shard id from a constant (topic, shard_index) to avoid error of shard_id FK violation (#6658)
* fix: ake shard_id FK always 1

* fix: use const shard_index to read its ID

* refactor: read shard_id during compactor initiation
2023-01-22 16:49:06 +00:00
Nga Tran 840923abab
refactor: execute compaction plan (#6654)
* chore: address review comment of previous PR

* refactor: execute compact plan

* refactor: we will now compact all L0 and L1 files of a partition and split them as needed

* chore: comnents

Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com>
2023-01-20 22:34:50 +00:00
Marco Neumann 4f1beba482
feat: filter out L2 files from compaction (#6653)
Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com>
2023-01-20 15:44:13 +00:00
Marco Neumann 111e582d71
feat: improve compactor2 metrics and logging (#6652)
Closes #6647.

We can always create tickets for concrete issues/wishes or create
on-demand PRs.
2023-01-20 15:08:00 +00:00
Nga Tran 8aeded32d6
refactor: reorganize compact_files core function (#6636)
* refactor: reorganize compact_files core function

* chore: smore more in-progress structure

* refactor: further reorganization for compact_files

Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com>
2023-01-20 13:41:23 +00:00
Marco Neumann 810f9096b8
feat: catalog commits for compactor2 (#6638) 2023-01-19 17:37:45 +00:00
Marco Neumann df85c7b154
refactor: more flexible filter design (#6635)
Filters can now inspect ALL files for a partition which may be useful
for limiters. This also moves the "is not empty" part into a filter.

Note that we still can only run ONE compaction job per partition for the
time being, so splitting the files into multiple sub-groups and run a
per-group DataFusion job is currently not possible. It should be a rather easy
addition if we ever want that (probably needs another semaphore of
something to limit the overall job count).
2023-01-19 16:40:54 +00:00
Marco Neumann eb149eca7c
feat: partition error sink (#6633)
Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com>
2023-01-19 15:34:57 +00:00
Marco Neumann ad69a554d6
refactor: extract "fetch files" component (#6632) 2023-01-19 13:11:44 +00:00
Marco Neumann e4bf9e85d9
refactor: more components for compactor2 (#6630)
* refactor: rename "rules" to "components"

* refactor: replace `Trait::name` w/ `impl Display`

* refactor: remodel partitions source

* refactor: add TODO

* refactor: fully components-based partitions source

* test: add tests for partitions sources

* docs: improve

Co-authored-by: Dom <dom@itsallbroken.com>

Co-authored-by: Dom <dom@itsallbroken.com>
Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com>
2023-01-19 12:29:38 +00:00
Nga Tran 9ae03b16d6
feat: invokes catalog functions for compactor2 (#6619)
Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com>
2023-01-19 10:33:57 +00:00
Marco Neumann 380a855aab
feat: basic compactor2 algo layout (#6616) 2023-01-18 18:51:59 +00:00
Marco Neumann e72173d58d
feat: very basic compactor2 skeleton (#6614)
Sets up crate and wires up the main binary. No tests yet, no algorithm
framework, just the bare minimum.

Also I decided to not offer a gRPC server in `compactor2` at the moment
and hence did not implement any handle/delegate infrastructure. We add
this later if we need it. This also means compactor2 does NOT provide a
catalog service for now.

Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com>
2023-01-18 16:36:40 +00:00