Cargo Features

[dependencies]
hiqlite = { version = "0.2.1", default-features = false, features = ["auto-heal", "backup", "cache", "full", "dashboard", "dlock", "listen_notify", "s3", "server", "shutdown-handle", "sqlite", "webpki-roots"] }
default = auto-heal, backup, sqlite

These default features are set whenever hiqlite is added without default-features = false somewhere in the dependency tree.

auto-heal default full?
backup default full? s3? = s3, sqlite

Enables cron ^0.12.1

Affects backup::restore_backup_finish, stream::ClientBackupPayload, config::NodeConfig.backup_config, snapshot_builder::SQLiteSnapshotBuilder.path_backups

cache dlock? full? listen_notify?

TODO check why we need the "openraft/loosen-follower-log-revert" here -> conflict in self-healing tests

Enables loosen-follower-log-revert of openraft

Affects app_state::StateRaftCache, stream::ClientKVPayload, init::init_pristine_node_1_cache, hiqlite::start_node_with_cache, logs::memory, state_machine::memory

full server? = auto-heal, backup, cache, dashboard, dlock, listen_notify, s3, shutdown-handle, sqlite, webpki-roots
dashboard full? = sqlite

Enables argon2, axum-extra, cryptr, mime_guess, spow ^0.3.0, tower, and tower-http

Affects config::NodeConfig.password_dashboard

dlock full? = cache

Affects app_state::StateRaftCache.tx_dlock, client::dlock, memory::dlock_handler

listen_notify full? = cache

Enables cryptr, eventsource-client, and futures-util

Affects app_state::StateRaftCache.tx_notify, app_state::StateRaftCache.rx_notify, api::listen, memory::notify_handler

s3 backup full? = backup

Enables cryptr

Affects config::EncKeysFrom, config::NodeConfig.enc_keys_from, config::NodeConfig.s3_config, hiqlite::s3, writer::BackupRequest.s3_config

server = full

Enables tracing-subscriber, clap and home, macros of tokio

Affects hiqlite::server

shutdown-handle full?

Enables ctrlc

sqlite default backup dashboard? full?

Enables deadpool, rocksdb, rusqlite, and serde_rusqlite

Affects app_state::StateRaftDB, stream::ClientExecutePayload, stream::ClientTransactionPayload, stream::ClientQueryPayload, stream::ClientBatchPayload, stream::ClientMigratePayload, init::init_pristine_node_1_db, hiqlite::start_node, logs::rocksdb, logs::logs_dir, state_machine::sqlite

webpki-roots full?

Enables webpki-roots and rustls-tls-webpki-roots of reqwest

TODO not competitive for logs right now, maybe get rid of it in the future redb.workspace = true