From a2d662a5fd2b7cda5eec49d66ce46546cb6363c2 Mon Sep 17 00:00:00 2001 From: Gyubong Date: Thu, 3 Oct 2024 14:08:35 +0900 Subject: [PATCH] fix: CI --- Cargo.lock | 17 +- Cargo.toml | 2 +- examples/Cargo.toml | 4 + examples/memstore/Cargo.toml | 7 +- examples/memstore/static-members/Cargo.toml | 1 - examples/src/config.rs | 29 +- raftify-cli/Cargo.lock | 282 +++++++++++++++++++- raftify-cli/Cargo.toml | 4 +- raftify-cli/src/commands/debug.rs | 19 +- 9 files changed, 323 insertions(+), 42 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index a36d7e16..afd5bf59 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -890,7 +890,7 @@ dependencies = [ [[package]] name = "example-harness" -version = "0.1.78" +version = "0.1.80" dependencies = [ "raftify", ] @@ -1096,7 +1096,7 @@ dependencies = [ [[package]] name = "harness" -version = "0.1.78" +version = "0.1.80" dependencies = [ "actix-rt", "actix-web", @@ -1549,7 +1549,7 @@ checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" [[package]] name = "memstore-dynamic-members" -version = "0.1.78" +version = "0.1.80" dependencies = [ "actix-rt", "actix-web", @@ -1573,7 +1573,7 @@ dependencies = [ [[package]] name = "memstore-example-harness" -version = "0.1.78" +version = "0.1.80" dependencies = [ "actix-rt", "actix-web", @@ -1590,7 +1590,7 @@ dependencies = [ [[package]] name = "memstore-static-members" -version = "0.1.78" +version = "0.1.80" dependencies = [ "actix-rt", "actix-web", @@ -2008,7 +2008,7 @@ dependencies = [ [[package]] name = "raftify" -version = "0.1.78" +version = "0.1.80" dependencies = [ "async-trait", "bincode", @@ -2035,14 +2035,15 @@ dependencies = [ [[package]] name = "raftify_cli" -version = "0.1.1" +version = "0.1.80" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89fca418beb04ff1d175598c386db1d8bc40b20b0f2a1e645fe9d5bb0789a7d6" +checksum = "d90e7b2a6ada58910273956addaad5100d76a3e888f55e3831d3d20bd8f3cb40" dependencies = [ "built", "clap 4.5.18", "log", "raftify", + "rocksdb", "serde", "serde_json", "slog", diff --git a/Cargo.toml b/Cargo.toml index d099eaed..32152885 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -19,7 +19,7 @@ default-members = [ exclude = ["raft-rs", "raftify-cli"] [workspace.package] -version = "0.1.78" +version = "0.1.80" authors = ["Lablup Inc."] edition = "2021" description = "Experimental High level Raft framework" diff --git a/examples/Cargo.toml b/examples/Cargo.toml index a9536bd0..dad93919 100644 --- a/examples/Cargo.toml +++ b/examples/Cargo.toml @@ -10,3 +10,7 @@ keywords.workspace = true [dependencies] raftify.workspace = true + +[features] +default = ["tls"] +tls = [] diff --git a/examples/memstore/Cargo.toml b/examples/memstore/Cargo.toml index bf25a234..f19f5d3b 100644 --- a/examples/memstore/Cargo.toml +++ b/examples/memstore/Cargo.toml @@ -26,11 +26,12 @@ serde = { version = "1.0", features = ["derive"] } serde_json = "1.0" tokio = { version = "1.40", features = ["full"] } color-backtrace = "0.6.1" -raftify = { version = "0.1.78" } -raftify_cli = { version = "0.1.1" } +raftify = { version = "0.1.80" } +raftify_cli = { version = "0.1.80" } [features] -default = ["heed_storage"] +default = ["heed_storage", "tls"] inmemory_storage = [] heed_storage = [] rocksdb_storage = [] +tls = [] diff --git a/examples/memstore/static-members/Cargo.toml b/examples/memstore/static-members/Cargo.toml index b0d0d847..98282929 100644 --- a/examples/memstore/static-members/Cargo.toml +++ b/examples/memstore/static-members/Cargo.toml @@ -33,4 +33,3 @@ default = ["heed_storage"] inmemory_storage = [] heed_storage = [] rocksdb_storage = [] - diff --git a/examples/src/config.rs b/examples/src/config.rs index d2e05c18..5616fdfb 100644 --- a/examples/src/config.rs +++ b/examples/src/config.rs @@ -1,4 +1,7 @@ -use raftify::{Config, ConfigBuilder, Peers, RaftConfig, TlsConfig}; +use raftify::{Config, ConfigBuilder, Peers, RaftConfig}; + +#[cfg(feature = "tls")] +use raftify::TlsConfig; use crate::utils::{ensure_directory_exist, get_storage_path}; @@ -14,21 +17,25 @@ pub fn build_config(node_id: u64, initial_peers: Option) -> Config { let storage_pth = get_storage_path("./logs", node_id); ensure_directory_exist(&storage_pth).expect("Failed to create storage directory"); - let client_tls_config = TlsConfig { - cert_path: None, - key_path: None, - ca_cert_path: Some("./ca_cert.pem".to_string()), - domain_name: Some("localhost".to_string()), - }; - - let config_builder = ConfigBuilder::new() + let mut config_builder = ConfigBuilder::new() .log_dir("./logs".to_owned()) .save_compacted_logs(true) .compacted_log_dir("./logs".to_owned()) .compacted_log_size_threshold(1024 * 1024 * 1024) .raft_config(raft_config) - .tick_interval(0.2) - .global_client_tls_config(client_tls_config); + .tick_interval(0.2); + + #[cfg(feature = "tls")] + { + let client_tls_config = TlsConfig { + cert_path: None, + key_path: None, + ca_cert_path: Some("./ca_cert.pem".to_string()), + domain_name: Some("localhost".to_string()), + }; + + config_builder = config_builder.global_client_tls_config(client_tls_config); + } let config_builder = if let Some(peers) = initial_peers { config_builder.initial_peers(peers) diff --git a/raftify-cli/Cargo.lock b/raftify-cli/Cargo.lock index c682b77f..8b782020 100644 --- a/raftify-cli/Cargo.lock +++ b/raftify-cli/Cargo.lock @@ -102,6 +102,28 @@ version = "1.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "69f7f8c3906b62b754cd5326047894316021dcfe5a194c8ea52bdd94934a3457" +[[package]] +name = "async-stream" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b5a71a6f37880a80d1d7f19efd781e4b5de42c88f0722cc13bcb6cc2cfe8476" +dependencies = [ + "async-stream-impl", + "futures-core", + "pin-project-lite", +] + +[[package]] +name = "async-stream-impl" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7c24de15d275a1ecfd47a380fb4d5ec9bfe0933f309ed5e705b775596a3574d" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.77", +] + [[package]] name = "async-trait" version = "0.1.83" @@ -194,6 +216,26 @@ dependencies = [ "serde", ] +[[package]] +name = "bindgen" +version = "0.64.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c4243e6031260db77ede97ad86c27e501d646a27ab57b59a574f725d98ab1fb4" +dependencies = [ + "bitflags 1.3.2", + "cexpr", + "clang-sys", + "lazy_static", + "lazycell", + "peeking_take_while", + "proc-macro2", + "quote", + "regex", + "rustc-hash", + "shlex", + "syn 1.0.109", +] + [[package]] name = "bitflags" version = "1.3.2" @@ -236,6 +278,17 @@ version = "1.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "428d9aa8fbc0670b7b8d6030a7fadd0f86151cae55e4dbbece15f3780a3dfaf3" +[[package]] +name = "bzip2-sys" +version = "0.1.11+1.0.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "736a955f3fa7875102d57c82b8cac37ec45224a07fd32d58f9f7a186b6cd4cdc" +dependencies = [ + "cc", + "libc", + "pkg-config", +] + [[package]] name = "cargo-lock" version = "8.0.3" @@ -254,9 +307,20 @@ version = "1.1.21" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "07b1695e2c7e8fc85310cde85aeaab7e3097f593c91d209d3f9df76c928100f0" dependencies = [ + "jobserver", + "libc", "shlex", ] +[[package]] +name = "cexpr" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6fac387a98bb7c37292057cffc56d62ecb629900026402633ae9160df93a8766" +dependencies = [ + "nom", +] + [[package]] name = "cfg-if" version = "1.0.0" @@ -277,6 +341,17 @@ dependencies = [ "windows-targets", ] +[[package]] +name = "clang-sys" +version = "1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b023947811758c97c59bf9d1c188fd619ad4718dcaa767947df1cadb14f39f4" +dependencies = [ + "glob", + "libc", + "libloading", +] + [[package]] name = "clap" version = "4.5.18" @@ -518,6 +593,12 @@ version = "0.31.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "32085ea23f3234fc7846555e85283ba4de91e21016dc0455a16286d87a292d64" +[[package]] +name = "glob" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b" + [[package]] name = "h2" version = "0.3.26" @@ -775,6 +856,15 @@ version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b" +[[package]] +name = "jobserver" +version = "0.1.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "48d1dbcbbeb6a7fec7e059840aa538bd62aaccf972c7346c4d9d2059312853d0" +dependencies = [ + "libc", +] + [[package]] name = "jopemachine-raft" version = "0.7.10" @@ -810,12 +900,28 @@ version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" +[[package]] +name = "lazycell" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55" + [[package]] name = "libc" version = "0.2.159" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "561d97a539a36e26a9a5fad1ea11a3039a67714694aaa379433e580854bc3dc5" +[[package]] +name = "libloading" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4979f22fdb869068da03c9f7528f8297c6fd2606bc3a4affe42e6a823fdb8da4" +dependencies = [ + "cfg-if", + "windows-targets", +] + [[package]] name = "libredox" version = "0.1.3" @@ -826,6 +932,32 @@ dependencies = [ "libc", ] +[[package]] +name = "librocksdb-sys" +version = "0.8.3+7.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "557b255ff04123fcc176162f56ed0c9cd42d8f357cf55b3fabeb60f7413741b3" +dependencies = [ + "bindgen", + "bzip2-sys", + "cc", + "glob", + "libc", + "libz-sys", + "zstd-sys", +] + +[[package]] +name = "libz-sys" +version = "1.1.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2d16453e800a8cf6dd2fc3eb4bc99b786a9b90c663b8559a5b1a041bf89e472" +dependencies = [ + "cc", + "pkg-config", + "vcpkg", +] + [[package]] name = "linux-raw-sys" version = "0.4.14" @@ -877,6 +1009,12 @@ version = "0.3.17" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" +[[package]] +name = "minimal-lexical" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" + [[package]] name = "miniz_oxide" version = "0.8.0" @@ -904,6 +1042,16 @@ version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e5ce46fe64a9d73be07dcbe690a38ce1b293be448fd8ce1e6c1b8062c9f72c6a" +[[package]] +name = "nom" +version = "7.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" +dependencies = [ + "memchr", + "minimal-lexical", +] + [[package]] name = "num-conv" version = "0.1.0" @@ -967,6 +1115,12 @@ dependencies = [ "windows-targets", ] +[[package]] +name = "peeking_take_while" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19b17cddbe7ec3f8bc800887bab5e717348c95ea2ca0b1bf0837fb964dc67099" + [[package]] name = "percent-encoding" version = "2.3.1" @@ -1057,6 +1211,12 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" +[[package]] +name = "pkg-config" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "953ec861398dccce10c670dfeaf3ec4911ca479e9c02154b3a215178c5f566f2" + [[package]] name = "powerfmt" version = "0.2.0" @@ -1209,22 +1369,22 @@ dependencies = [ [[package]] name = "raftify" -version = "0.1.78" +version = "0.1.80" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f42c008e7e6a5b6431062fac27c4b61e7a78a7e87feeffba5d44d80cfdd657d8" +checksum = "623a229ebdc881f3f6d3f6c091db8271319f0405a4ce312ca9b1e38ace2000b3" dependencies = [ "async-trait", "bincode", "built", "bytes", "chrono", - "clap", "heed", "heed-traits", "jopemachine-raft", "log", "parking_lot", "prost", + "rocksdb", "serde", "serde_json", "slog", @@ -1237,12 +1397,13 @@ dependencies = [ [[package]] name = "raftify_cli" -version = "0.1.1" +version = "0.1.80" dependencies = [ "built", "clap", "log", "raftify", + "rocksdb", "serde", "serde_json", "slog", @@ -1328,12 +1489,43 @@ version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7a66a03ae7c801facd77a29370b4faec201768915ac14a721ba36f20bc9c209b" +[[package]] +name = "ring" +version = "0.17.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c17fa4cb658e3583423e915b9f3acc01cceaee1860e33d59ebae66adc3a2dc0d" +dependencies = [ + "cc", + "cfg-if", + "getrandom", + "libc", + "spin", + "untrusted", + "windows-sys 0.52.0", +] + +[[package]] +name = "rocksdb" +version = "0.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7e9562ea1d70c0cc63a34a22d977753b50cca91cc6b6527750463bd5dd8697bc" +dependencies = [ + "libc", + "librocksdb-sys", +] + [[package]] name = "rustc-demangle" version = "0.1.24" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" +[[package]] +name = "rustc-hash" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" + [[package]] name = "rustix" version = "0.38.37" @@ -1347,6 +1539,37 @@ dependencies = [ "windows-sys 0.52.0", ] +[[package]] +name = "rustls" +version = "0.21.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f56a14d1f48b391359b22f731fd4bd7e43c97f3c50eee276f3aa09c94784d3e" +dependencies = [ + "log", + "ring", + "rustls-webpki", + "sct", +] + +[[package]] +name = "rustls-pemfile" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c74cae0a4cf6ccbbf5f359f08efdf8ee7e1dc532573bf0db71968cb56b1448c" +dependencies = [ + "base64", +] + +[[package]] +name = "rustls-webpki" +version = "0.101.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b6275d1ee7a1cd780b64aca7726599a1dbc893b1e64144529e55c3c2f745765" +dependencies = [ + "ring", + "untrusted", +] + [[package]] name = "rustversion" version = "1.0.17" @@ -1365,6 +1588,16 @@ version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" +[[package]] +name = "sct" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da046153aa2352493d6cb7da4b6e5c0c057d8a1d0a9aa8560baffdd945acd414" +dependencies = [ + "ring", + "untrusted", +] + [[package]] name = "semver" version = "1.0.23" @@ -1520,6 +1753,12 @@ dependencies = [ "windows-sys 0.52.0", ] +[[package]] +name = "spin" +version = "0.9.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" + [[package]] name = "strsim" version = "0.11.1" @@ -1708,6 +1947,16 @@ dependencies = [ "syn 2.0.77", ] +[[package]] +name = "tokio-rustls" +version = "0.24.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c28327cf380ac148141087fbfb9de9d7bd4e84ab5d2c28fbc911d753de8a7081" +dependencies = [ + "rustls", + "tokio", +] + [[package]] name = "tokio-stream" version = "0.1.16" @@ -1747,6 +1996,7 @@ version = "0.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3082666a3a6433f7f511c7192923fa1fe07c69332d3c6a2e6bb040b569199d5a" dependencies = [ + "async-stream", "async-trait", "axum", "base64", @@ -1761,7 +2011,9 @@ dependencies = [ "percent-encoding", "pin-project", "prost", + "rustls-pemfile", "tokio", + "tokio-rustls", "tokio-stream", "tower", "tower-layer", @@ -1872,6 +2124,12 @@ dependencies = [ "tinyvec", ] +[[package]] +name = "untrusted" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" + [[package]] name = "url" version = "2.5.2" @@ -1889,6 +2147,12 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" +[[package]] +name = "vcpkg" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" + [[package]] name = "want" version = "0.3.1" @@ -2104,3 +2368,13 @@ dependencies = [ "quote", "syn 2.0.77", ] + +[[package]] +name = "zstd-sys" +version = "2.0.13+zstd.1.5.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38ff0f21cfee8f97d94cef41359e0c89aa6113028ab0291aa8ca0038995a95aa" +dependencies = [ + "cc", + "pkg-config", +] diff --git a/raftify-cli/Cargo.toml b/raftify-cli/Cargo.toml index a6aeab69..3d26e83d 100644 --- a/raftify-cli/Cargo.toml +++ b/raftify-cli/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "raftify_cli" -version = "0.1.1" +version = "0.1.80" edition = "2021" description = "Raftify CLI tool" license = "MIT/Apache-2.0" @@ -12,7 +12,7 @@ serde_json = "1.0" slog = "2" built = "0.5" clap = { version = "4.5.18", features = ["derive"] } -raftify = { version = "0.1.78", features = ["heed_storage", "inmemory_storage", "rocksdb_storage"] } +raftify = { version = "=0.1.80", features = ["heed_storage", "inmemory_storage", "rocksdb_storage"] } rocksdb = "0.19.0" [lib] diff --git a/raftify-cli/src/commands/debug.rs b/raftify-cli/src/commands/debug.rs index 14079c9f..0c04bc61 100644 --- a/raftify-cli/src/commands/debug.rs +++ b/raftify-cli/src/commands/debug.rs @@ -3,26 +3,21 @@ use serde_json::Value; use std::{collections::HashMap, fs, path::Path, sync::Arc}; use raftify::{ - create_client, - raft::{ + create_client, raft::{ formatter::{format_entry, format_snapshot}, logger::Slogger, Storage, - }, - raft_node::utils::format_debugging_info, - raft_service, Config, Result, StableStorage, - HeedStorage, StorageType, + }, raft_node::utils::format_debugging_info, raft_service, Config, ConfigBuilder, HeedStorage, Result, StableStorage, StorageType }; pub fn debug_persisted(path: &str, logger: slog::Logger) -> Result<()> { - let config = Config { - log_dir: path.to_string(), - ..Default::default() - }; + let config = ConfigBuilder::new() + .log_dir(path.to_string()) + .build(); let storage = match LogStorage::STORAGE_TYPE { StorageType::Heed => HeedStorage::create( - config.log_dir.as_str(), + config.get_log_dir(), &config, Arc::new(Slogger { slog: logger.clone(), @@ -60,7 +55,7 @@ pub fn debug_persisted(path: &str, logger: slog::Logg Ok(()) } -pub fn debug_persitsted_all(path_str: &str, logger: slog::Logger) -> Result<()> { +pub fn debug_persisted_all(path_str: &str, logger: slog::Logger) -> Result<()> { let path = match fs::canonicalize(Path::new(&path_str)) { Ok(absolute_path) => absolute_path, Err(e) => {