influxdb/ingester/Cargo.toml

83 lines
3.0 KiB
TOML
Raw Normal View History

[package]
2023-05-05 16:03:50 +00:00
name = "ingester"
version.workspace = true
authors.workspace = true
edition.workspace = true
license.workspace = true
[dependencies]
arrow = { workspace = true, features = ["prettyprint"] }
arrow_util = { version = "0.1.0", path = "../arrow_util" }
arrow-flight = { workspace = true }
feat(ingester2): optimal persist parallelism This commit changes the behaviour of the persist system to enable optimal parallelism of persist operations, and improve the accuracy of the outstanding job bound / back-pressure. Previously all persist operations for a given partition were consistently hashed to a single worker task. This serialised persistence per partition, ensuring all updates to the partition sort key were serialised. However, this also unnecessarily serialises persist operations that do not need to update the sort key, reducing the potential throughput of the system; in the worst case of a single partition receiving all the writes, only one worker would be persisting, and the other N-1 workers would be idle. After this change, the sort key is inspected when enqueuing the persist operation and if it can be determined that no sort key update is necessary (the typical case), then the persist task is placed into a global work queue from which all workers consume. This allows for maximal parallelisation of these jobs, and the removes the per-worker head-of-line blocking. In the case that the sort key does need updating, these jobs continue to be consistently hashed to a single worker, ensuring serialised sort key updates only where necessary. To support these changes, the back-pressure system has been changed to account for all outstanding persist jobs in the system, regardless of type or assigned worker - a logical, bounded queue is composed together of a semaphore limiting the number of persist tasks overall, and a series of physical, unbounded queues - one to each worker & the global queue. The overall system remains bounded by the INFLUXDB_IOX_PERSIST_QUEUE_DEPTH value, and is now simpler to reason about (it is independent of the number of workers, etc).
2022-12-15 14:14:23 +00:00
async-channel = "1.8.0"
async-trait = "0.1.68"
backoff = { version = "0.1.0", path = "../backoff" }
bytes = "1.4.0"
crossbeam-utils = "0.8.15"
data_types = { version = "0.1.0", path = "../data_types" }
datafusion.workspace = true
dml = { version = "0.1.0", path = "../dml" }
flatbuffers = "23.1.21"
futures = "0.3.28"
generated_types = { version = "0.1.0", path = "../generated_types" }
hashbrown.workspace = true
ingester_query_grpc = { path = "../ingester_query_grpc" }
iox_catalog = { version = "0.1.0", path = "../iox_catalog" }
iox_query = { version = "0.1.0", path = "../iox_query" }
iox_time = { path = "../iox_time" }
metric = { version = "0.1.0", path = "../metric" }
mutable_batch = { version = "0.1.0", path = "../mutable_batch" }
mutable_batch_pb = { version = "0.1.0", path = "../mutable_batch_pb" }
observability_deps = { version = "0.1.0", path = "../observability_deps" }
once_cell = "1.17"
parking_lot = "0.12.1"
parquet_file = { version = "0.1.0", path = "../parquet_file" }
pin-project = "1.1.0"
predicate = { version = "0.1.0", path = "../predicate" }
chore(deps): Bump prost from 0.11.8 to 0.11.9 (#7537) * chore(deps): Bump prost from 0.11.8 to 0.11.9 Bumps [prost](https://github.com/tokio-rs/prost) from 0.11.8 to 0.11.9. - [Release notes](https://github.com/tokio-rs/prost/releases) - [Commits](https://github.com/tokio-rs/prost/compare/v0.11.8...v0.11.9) --- updated-dependencies: - dependency-name: prost dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> * chore(deps): Bump prost-build from 0.11.8 to 0.11.9 Bumps [prost-build](https://github.com/tokio-rs/prost) from 0.11.8 to 0.11.9. - [Release notes](https://github.com/tokio-rs/prost/releases) - [Commits](https://github.com/tokio-rs/prost/compare/v0.11.8...v0.11.9) --- updated-dependencies: - dependency-name: prost-build dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> * chore(deps): Bump prost-types from 0.11.8 to 0.11.9 Bumps [prost-types](https://github.com/tokio-rs/prost) from 0.11.8 to 0.11.9. - [Release notes](https://github.com/tokio-rs/prost/releases) - [Commits](https://github.com/tokio-rs/prost/compare/v0.11.8...v0.11.9) --- updated-dependencies: - dependency-name: prost-types 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-04-13 10:27:15 +00:00
prost = { version = "0.11.9", default-features = false, features = ["std"] }
rand = "0.8.5"
schema = { version = "0.1.0", path = "../schema" }
service_grpc_catalog = { version = "0.1.0", path = "../service_grpc_catalog" }
sharder = { version = "0.1.0", path = "../sharder" }
test_helpers = { path = "../test_helpers", features = ["future_timeout"], optional = true }
thiserror = "1.0.40"
tokio = { version = "1.28", features = ["macros", "parking_lot", "rt-multi-thread", "sync", "time"] }
tokio-util = "0.7.8"
tonic = { workspace = true }
trace = { version = "0.1.0", path = "../trace" }
uuid = "1.3.3"
wal = { version = "0.1.0", path = "../wal" }
2023-02-24 18:02:23 +00:00
workspace-hack = { version = "0.1", path = "../workspace-hack" }
[dev-dependencies]
assert_matches = "1.5.0"
criterion = { version = "0.5", default-features = false, features = ["async_tokio"]}
datafusion_util = { path = "../datafusion_util" }
influxdb_iox_client = { path = "../influxdb_iox_client" }
ingester_test_ctx = { path = "../ingester_test_ctx" }
lazy_static = "1.4.0"
mutable_batch_lp = { path = "../mutable_batch_lp" }
object_store = "0.5.6"
paste = "1.0.12"
tempfile = "3.5.0"
test_helpers = { path = "../test_helpers", features = ["future_timeout"] }
tokio = { version = "1.28", features = ["macros", "time", "test-util"] }
[features]
# Export some internal types for benchmark purposes only.
benches = ["test_helpers"]
[lib]
bench = false
[[bench]]
name = "wal"
harness = false
# Require some internal types be made visible for benchmark code.
required-features = ["benches"]
[[bench]]
name = "write"
harness = false
# Require some internal types be made visible for benchmark code.