Commit Graph

49765 Commits (table-index-cache_oss-port)

Author SHA1 Message Date
Dom Dwyer 1737ce0450
test(gossip): sender identity
Ensure the correct Identity is provided to the payload Dispatcher.
2023-08-30 14:18:00 +02:00
Dom Dwyer 507739f9fe
refactor(gossip): Identity in API, not UUID
Swap all uses of UUID in the gossip API for the Identity, allowing the
caller to parse into the UUID format if needed, and not forcing it on
them.
2023-08-30 14:18:00 +02:00
Dom Dwyer 20d63b8aa6
feat(gossip): expose sender identity in Dispatcher
When the gossip subsystem hands an application payload off to the
Dispatcher impl, include the sender's Identity.
2023-08-30 14:17:59 +02:00
Dom Dwyer f81f6efb2c
refactor(gossip): remove Uuid from Identity
The identity contains both a UUID, and the byte representation of this
UUID. This change retains the latter, generating the former on-demand
(which is rarely needed).

This halves the size of the identity, and the underlying Bytes storage
is a ref-counted container, making clones very cheap.
2023-08-30 14:17:54 +02:00
Dom 5925440d6a
Merge pull request #8609 from influxdata/dom/gossip-subset
feat(gossip): broadcast to randomised peer subset
2023-08-30 13:07:42 +01:00
Dom c983d1a096
Merge branch 'main' into dom/gossip-subset 2023-08-30 12:56:59 +01:00
Dom 1ef6e79aed
Merge pull request #8600 from influxdata/dom/merkle-actor
perf: asynchronously maintain merkle search tree
2023-08-30 11:40:13 +01:00
Dom Dwyer e120935a61
fix(bench): reuse same namespace cache
And add another thread for the hashing to happen on now there's two
async tasks to run.
2023-08-30 12:07:15 +02:00
Dom Dwyer 38f67ae736
perf(anti_entropy): add AntiEntropyActor for MST
Separate the management of the Merkle Search Tree state into an actor
to manage concurrent access.

This moves hashing and tree updates off of the hot request path, and
into an asynchronous background process, practically eliminating
overhead for maintaining the MST structure.

This decoupling will allow convergence runs between peers to proceed
without causing contention on the lock in the request hot path.
2023-08-30 12:07:15 +02:00
Dom Dwyer 934e4bc9c6
test(bench): MerkleTree overhead
Layers the MerkleTree over the NamespaceCache stack in benchmarks to
measure the overhead.
2023-08-30 12:07:14 +02:00
Dom 53d7b23624
Merge pull request #8598 from influxdata/dom/gossip-parquet-proto
refactor: protobuf serialisation primitives for ParquetFile
2023-08-30 11:01:35 +01:00
Dom b68d108baf
Merge branch 'main' into dom/gossip-parquet-proto 2023-08-30 10:55:46 +01:00
Dom Dwyer 43db19b7db
feat(gossip): broadcast to randomised peer subset
Provide a new broadcast_subset() method to gossip users, enabling a
message to be sent to a random subset of peers that have a registered
interest in the message being dispatched.
2023-08-30 11:54:09 +02:00
Dom 74f6de78fd
Merge pull request #8608 from influxdata/dependabot/cargo/memchr-2.6.1
chore(deps): Bump memchr from 2.6.0 to 2.6.1
2023-08-30 10:52:47 +01:00
dependabot[bot] 0d8ba84923
chore(deps): Bump memchr from 2.6.0 to 2.6.1
Bumps [memchr](https://github.com/BurntSushi/memchr) from 2.6.0 to 2.6.1.
- [Commits](https://github.com/BurntSushi/memchr/compare/2.6.0...2.6.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-08-30 01:25:04 +00:00
Joe-Blount 68a9019768
chore: remove compactor concurrency scaling (#8606)
* chore: remove compactor concurrency scaling

* chore: comment update to retrigger tests

---------

Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com>
2023-08-29 23:42:53 +00:00
wiedld 5011f7fe22
chore: add partition_id into panic message (#8605) 2023-08-29 16:37:21 -07:00
Joe-Blount 0996a95630
chore: enable more ManySmallFiles compactions (#8603)
* chore: enable more ManySmallFiles compactions

* chore: insta churn
2023-08-29 20:42:03 +00:00
wiedld 72c48d34f8
chore: add partition id to compactor panics (#8602) 2023-08-29 12:40:11 -07:00
Dom 6c6a3507d1
Merge pull request #8601 from influxdata/dom/no-compiler-err
ci: lint failures as warnings
2023-08-29 16:26:19 +01:00
Dom Dwyer 9055bc1754
ci: lint failures as warnings
Don't fail to compile / run tests because of an unreachable pub, or
missing debug impl - just emit a compiler warning.

This lets the compilation complete, but isn't accepted in PRs as CI runs
with "deny warnings".
2023-08-29 16:29:31 +02:00
kodiakhq[bot] 674a9e3eff
Merge pull request #8597 from influxdata/dom/merkle-cache
feat(router): merkle tree cache observer for anti-entropy
2023-08-29 13:40:02 +00:00
Dom bcc4003222
Merge branch 'main' into dom/merkle-cache 2023-08-29 14:34:34 +01:00
Joe-Blount 38147ec25e
chore: compact available regions before splitting everything (#8586) 2023-08-29 13:29:11 +00:00
Dom 15da02b59f
Merge branch 'main' into dom/merkle-cache 2023-08-29 14:21:26 +01:00
Dom Dwyer c1ba3918a4
test: cache content hash fixture
Assert the hash representing static cache content does not change.
2023-08-29 13:57:39 +02:00
Dom Dwyer 19e7c90fc1
test: compose prop::Strategy for schema generation
Accept an arbitrary ID generation strategy, composing it into a
NamespaceSchema generation strategy to simplify the call args / usage.
2023-08-29 13:47:22 +02:00
Dom b1555621cb
Merge pull request #8599 from influxdata/dom/fix-bench
fix(bench): schema validator bench panic
2023-08-29 11:49:37 +01:00
Dom Dwyer 932532c3e3
fix(bench): schema validator bench panic
The benchmark code was completely broken - running the benches would
immediately panic.
2023-08-29 12:41:47 +02:00
Dom Dwyer 10396e6986
refactor(service_grpc_catalog): use conversion fns
Use well-tested From impls for converting partition IDs & ParquetFile
instances to their proto representation.
2023-08-29 12:35:46 +02:00
Dom Dwyer 4c2945719a
feat: proto serialisation of ParquetFile
Adds conversion functions to serialise a ParquetFile into a protobuf
representation, and back again.

Adds randomised testing to assert round-trip equality.
2023-08-29 12:35:45 +02:00
Dom Dwyer ae3f73f65e
refactor(proto): optional ParquetFile::to_delete
This field is nullable, so lets model it as nullable.
2023-08-29 12:35:44 +02:00
Dom Dwyer 124b3d2b42
test: MerkleTree cache decorator
Adds an integration test asserting the derived MST content hashes
accurately track updates to an underlying cache entry merge
implementation.

This ensures the merge implementation, and content hashes do not become
out-of-sync.
2023-08-29 12:26:42 +02:00
Dom Dwyer b694b9f494
feat(router): Merkle tree content hash for cache
Adds a (currently unused) NamespaceCache decorator that observes the
post-merge content of the cache to maintain a content hash.

This makes use of a Merkle Search Tree
(https://inria.hal.science/hal-02303490) to track the CRDT content of
the cache in a deterministic structure that allows for synchronisation
between peers (itself a CRDT).

The hash of two routers' NamespaceCache will be equal iff their cache
contents are equal - this can be used to (very cheaply) identify
out-of-sync routers, and trigger convergence. The MST structure used
here provides functionality to compare two compact MST representations,
and identify subsets of the cache that are out-of-sync, allowing for
cheap convergence.

Note this content hash only covers the tables, their set of columns, and
those column schemas - this reflects the fact that only these values may
currently be converged by gossip. Future work will enable full
convergence of all fields.
2023-08-29 12:19:43 +02:00
Dom Dwyer bd4a3fbbb8
refactor: impl Hash for NamespaceSchema
Allow the NamespaceSchema to be hashed (including the underlying proto
types it contains).
2023-08-29 12:19:41 +02:00
Dom Dwyer fc694effda
refactor: AsRef bytes for NamespaceName
The NamespaceName is a wrapper over a str (conceptually), which allows
for cheap use of the underlying bytes.
2023-08-29 12:18:33 +02:00
kodiakhq[bot] 74212e90e7
Merge pull request #8499 from influxdata/savage/disk-full-protection
feat(ingester): Disk full protection
2023-08-29 10:17:44 +00:00
Fraser Savage 2319f6bdf1
fix(ingester): Do not await empty file notification disk protection
It's possible that this could never happen (or be very slow), while
the evaluation and enforcement of disk protection happens in another
thread. Blocking further clean-up on this condition might wedge the
ingest state!
2023-08-29 11:08:32 +01:00
Fraser Savage 3d88c9047c
Merge branch 'main' into savage/disk-full-protection 2023-08-29 10:56:02 +01:00
Fraser Savage 338483a232
chore: Make disk log statement less terriblé!
Co-authored-by: Dom <dom@itsallbroken.com>
2023-08-29 10:54:59 +01:00
dependabot[bot] 281c20cd1a
chore(deps): Bump memchr from 2.5.0 to 2.6.0 (#8592)
Bumps [memchr](https://github.com/BurntSushi/memchr) from 2.5.0 to 2.6.0.
- [Commits](https://github.com/BurntSushi/memchr/compare/2.5.0...2.6.0)

---
updated-dependencies:
- dependency-name: memchr
  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>
Co-authored-by: Dom <dom@itsallbroken.com>
Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com>
2023-08-29 09:45:43 +00:00
dependabot[bot] e9bc7215a1
chore(deps): Bump sysinfo from 0.29.8 to 0.29.9 (#8591)
Bumps [sysinfo](https://github.com/GuillaumeGomez/sysinfo) from 0.29.8 to 0.29.9.
- [Changelog](https://github.com/GuillaumeGomez/sysinfo/blob/master/CHANGELOG.md)
- [Commits](https://github.com/GuillaumeGomez/sysinfo/commits)

---
updated-dependencies:
- dependency-name: sysinfo
  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: Dom <dom@itsallbroken.com>
Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com>
2023-08-29 09:39:58 +00:00
dependabot[bot] 83abd6404d
chore(deps): Bump nix from 0.27.0 to 0.27.1 (#8593)
Bumps [nix](https://github.com/nix-rust/nix) from 0.27.0 to 0.27.1.
- [Changelog](https://github.com/nix-rust/nix/blob/master/CHANGELOG.md)
- [Commits](https://github.com/nix-rust/nix/compare/v0.27.0...v0.27.1)

---
updated-dependencies:
- dependency-name: nix
  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: Dom <dom@itsallbroken.com>
Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com>
2023-08-29 09:33:42 +00:00
dependabot[bot] 673b6493fa
chore(deps): Bump rustls from 0.21.6 to 0.21.7 (#8594)
Bumps [rustls](https://github.com/rustls/rustls) from 0.21.6 to 0.21.7.
- [Release notes](https://github.com/rustls/rustls/releases)
- [Commits](https://github.com/rustls/rustls/compare/v/0.21.6...v/0.21.7)

---
updated-dependencies:
- dependency-name: rustls
  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: Dom <dom@itsallbroken.com>
Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com>
2023-08-29 09:27:53 +00:00
dependabot[bot] 191aaf3208
chore(deps): Bump url from 2.4.0 to 2.4.1 (#8595)
Bumps [url](https://github.com/servo/rust-url) from 2.4.0 to 2.4.1.
- [Release notes](https://github.com/servo/rust-url/releases)
- [Commits](https://github.com/servo/rust-url/compare/v2.4.0...v2.4.1)

---
updated-dependencies:
- dependency-name: url
  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: Dom <dom@itsallbroken.com>
Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com>
2023-08-29 09:22:21 +00:00
dependabot[bot] eaabac74d0
chore(deps): Bump clap from 4.4.0 to 4.4.1 (#8596)
Bumps [clap](https://github.com/clap-rs/clap) from 4.4.0 to 4.4.1.
- [Release notes](https://github.com/clap-rs/clap/releases)
- [Changelog](https://github.com/clap-rs/clap/blob/master/CHANGELOG.md)
- [Commits](https://github.com/clap-rs/clap/compare/clap_complete-v4.4.0...v4.4.1)

---
updated-dependencies:
- dependency-name: clap
  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: Dom <dom@itsallbroken.com>
2023-08-29 09:16:46 +00:00
Carol (Nichols || Goulding) 12b8095c46
feat: Upgrade to Rust 1.72.0 (#8589)
* feat: Upgrade to Rust 1.72.0

* fix: Allow a warning about an error we're intentionally creating

This is a test for an error. This lint warns that this code will cause
an error. Thanks lint, that's what we wanted!

* chore: rustfmt 1.72

* fix: Remove unnecessary hashes in raw string literals

Thanks Clippy!
https://rust-lang.github.io/rust-clippy/master/index.html#/needless_raw_string_hashes

Note that there are a number of false negatives with this lint; see
https://github.com/rust-lang/rust-clippy/issues/11420

* fix: Remove unnecessary explicit iteration

Looks like clippy::explicit_iter_loop was improved.
https://rust-lang.github.io/rust-clippy/master/index.html#/explicit_iter_loop

* fix: Allow clippy::manual_try_fold in a few places

Some of these might not be possible to rewrite with try_fold, or at
least not trivially. I don't feel confident enough to change these, in
any case. I think the lint is good to have on for future code though, so
that new code can be written with try_fold.

* fix: Remove useless creation of vectors when an array will do

Mostly in tests. Also fix some long lines.

Thanks Clippy!
https://rust-lang.github.io/rust-clippy/master/index.html#/useless_vec

* fix: Allow a single range in a vec init, which is actually what we want

Looks like Clippy's trying to catch a common mistake here, but for realz
we actually want `Vec<Range<usize>>` not `Vec<usize>`

https://rust-lang.github.io/rust-clippy/master/index.html#/single_range_in_vec_init

* fix: Remove a useless conversion

This looks like removing explicit iteration, but it's actually caught by
useless_conversion.

https://rust-lang.github.io/rust-clippy/master/index.html#/useless_conversion

* fix: Remove redundant pattern matching

Thanks Clippy!
https://rust-lang.github.io/rust-clippy/master/index.html#/redundant_pat

* fix: Allow an unwrap on a literal None in a test

This matches with the other tests better, and also when I tried to
remove the `unwrap_or_default` it changed the JSON sent from something
with an empty value to `null`, so I think the `or_default` part is
actually changing from one `None` to another `None`.

https://rust-lang.github.io/rust-clippy/master/index.html#/unnecessary_literal_unwrap
2023-08-29 05:57:38 +00:00
Carol (Nichols || Goulding) 468b3ac7f7
fix: Update to a non-yanked version of nix (#8590)
This looks like why it was yanked:
https://github.com/nix-rust/nix/issues/2112
2023-08-28 21:36:09 +00:00
Joe-Blount 02c338ba70
fix: don't add empty compact branches (#8587) 2023-08-28 19:02:19 +00:00
dependabot[bot] 2572bea8d7
chore(deps): Bump nix from 0.26.2 to 0.27.0 (#8582)
* chore(deps): Bump nix from 0.26.2 to 0.27.0

Bumps [nix](https://github.com/nix-rust/nix) from 0.26.2 to 0.27.0.
- [Changelog](https://github.com/nix-rust/nix/blob/master/CHANGELOG.md)
- [Commits](https://github.com/nix-rust/nix/compare/v0.26.2...v0.27.0)

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

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

* chore: Run cargo hakari tasks

* chore: fix `nix` features

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: CircleCI[bot] <circleci@influxdata.com>
Co-authored-by: Marco Neumann <marco@crepererum.net>
Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com>
2023-08-28 13:48:56 +00:00