blob: 41524d685ae61a9a2167f463bc41370a0b8c4d02 [file]
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
[package]
name = "partitions"
version = "0.1.0"
description = "Iggy partitions abstraction for clustering support"
edition = "2024"
license = "Apache-2.0"
keywords = ["iggy", "messaging", "streaming", "partitions"]
homepage = "https://iggy.apache.org"
documentation = "https://iggy.apache.org/docs"
repository = "https://github.com/apache/iggy"
readme = "../../README.md"
publish = false
[features]
# Simulator-only detector hook (`IggyPartitions::hold_borrow_across_await`):
# deliberately holds a `with_partition` borrow across an `.await` so the
# dispatch shell can prove its borrow-across-await detector. A
# `-p iggy-server` build excludes it; `cargo build --workspace` unifies
# features so the shared `partitions` unit compiles it in when the simulator
# requests it. No production caller.
simulator = []
# Fault injection for the harness (`IggyPartition::inject_commit_failure`):
# makes a local commit fail the way a full disk does, so the shard sweep's
# fence path can be driven over an in-memory partition. Requested ONLY by
# `core/simulator`'s dev-dependencies, which the v3 resolver keeps out of any
# non-test build, so the branch it gates cannot reach a shipped binary the way
# a `[dependencies]` feature would through unification.
fault-injection = []
[dependencies]
ahash = { workspace = true }
bytemuck = { workspace = true }
bytes = { workspace = true }
compio = { workspace = true }
consensus = { workspace = true }
futures = { workspace = true }
iggy_binary_protocol = { workspace = true }
iggy_common = { workspace = true }
journal = { workspace = true }
message_bus = { workspace = true }
papaya = { workspace = true }
ringbuffer = { workspace = true }
server_common = { workspace = true }
smallvec = { workspace = true }
tokio = { workspace = true }
tracing = { workspace = true }
[target.'cfg(unix)'.dependencies]
nix = { workspace = true }
[dev-dependencies]
tempfile = { workspace = true }
[lints.clippy]
enum_glob_use = "deny"
pedantic = { level = "deny", priority = -1 }
nursery = "warn"
# Sync impls of async traits are deliberate (non-blocking bus, in-memory storage, test doubles).
unused_async_trait_impl = "allow"
[lints.rust]
warnings = "deny"