| # 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" |