# 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 = "uniffle-x"
version = "0.1.0"
edition = "2021"

# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html

[[bin]]
name="uniffle-worker"
path= "src/main.rs"

[lib]
name = "uniffle_worker"
path = "src/lib.rs"

[features]
# whether to use jemalloc as the global allocator or not
jemalloc = [
    "dep:tikv-jemalloc-ctl",
    "dep:tikv-jemalloc-sys",
    "dep:tikv-jemallocator",
]

# whether to enable memory profiling or not, once enabled, it implies using jemalloc as the global allocator
memory-prof = [
    "jemalloc",
    "tikv-jemallocator/profiling"
]

hdfs = [
    "dep:hdfs-native"
]

[dependencies]
anyhow = "1"
tokio = { version = "1.28.2", features = ["full" ] }
tokio-rustls = "0.22"
tokio-stream = { version = "0.1", features = ["sync"] }
tokio-util = { version = "0.6", features = ["compat"]}
toml = "0.7.4"
tracing = "0.1"
tracing-appender = "0.2"
tracing-subscriber = { version = "0.3", features = ["env-filter"] }
tonic = "0.9.1"
prost = "0.11.9"
bytes = "1"
tonic-build = "0.9.1"
thiserror = "1"
dashmap = "5.4.0"
log = "0.4.17"
env_logger = "0.10.0"
crossbeam = "0.8.2"
crossbeam-channel = "0.5"
tempdir = "0.3.7"
async-trait = "0.1.68"
futures = "0.3"
serde = { version = "1", features = ["derive"] }
async-channel = "1.8.0"
croaring = "0.8.1"
prometheus = { version = "0.13", features = ["process", "push"] }
crc32fast = "1.3.2"
fs2 = "0.4.3"
url = "2.4.0"
await-tree = "0.1.1"
poem = { version = "1.3.56", features = ["rustls", "test"]}
pprof = { version = "0.11.1", features = [
    "flamegraph",
    "protobuf-codec",
    "protobuf",
] }
tempfile = "3.7.0"
once_cell = "1.18.0"
tower = { version = "0.4", features = ["util", "load-shed"] }
hyper = "0.14"
tokio-console = "0.1.8"
console-subscriber = "0.1.9"
pin-project-lite = "0.2.8"
signal-hook = "0.3.17"
clap = "3.0.14"
socket2 = { version="0.4", features = ["all"]}
cap = "0.1.2"
spin = "0.9.8"
opendal = { version = "0.44.0", features = ["services-fs"]}

[dependencies.hdfs-native]
version = "0.7.0"
optional = true
features = ["kerberos"]

# jemalloc related optional dependencies
[dependencies.tikv-jemalloc-ctl]
version = "0.5.0"
optional = true

[dependencies.tikv-jemalloc-sys]
version = "0.5.0"
optional = true
features = ["stats"]

[dependencies.tikv-jemallocator]
version = "0.5.0"
optional = true
features = ["stats"]

[build-dependencies]
tonic-build = "0.9.1"
prost-build = "0.11.9"

[dev-dependencies]
env_logger = "0.10.0"
awaitility = "0.3.1"

[profile.dev]
# re-enable debug assertions when pprof-rs fixed the reports for misaligned pointer dereferences
#   https://github.com/rust-lang/rust/pull/98112/
debug-assertions = false
