diff --git a/.circleci/config.yml b/.circleci/config.yml index ff00f4ca0d..9607dd6a32 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -270,6 +270,7 @@ workflows: only: - develop - final-exam + - transactional - wire-message-receipts - docker-build-trycp-server: requires: @@ -284,6 +285,7 @@ workflows: only: - develop - final-exam + - transactional - wire-message-receipts - docker-build-circle-build: requires: diff --git a/Cargo.lock b/Cargo.lock index 878881b327..e5530f9e45 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -10,7 +10,7 @@ name = "aho-corasick" version = "0.6.10" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "memchr 2.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "memchr 2.3.3 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -57,7 +57,7 @@ name = "atty" version = "0.2.14" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "hermit-abi 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", + "hermit-abi 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -205,7 +205,7 @@ version = "0.2.11" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "memchr 2.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "memchr 2.3.3 (registry+https://github.com/rust-lang/crates.io-index)", "regex-automata 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -244,13 +244,13 @@ name = "bzip2" version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "bzip2-sys 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", + "bzip2-sys 0.1.8+1.0.8 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "bzip2-sys" -version = "0.1.7" +version = "0.1.8+1.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "cc 1.0.50 (registry+https://github.com/rust-lang/crates.io-index)", @@ -283,15 +283,6 @@ name = "cfg-if" version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" -[[package]] -name = "chashmap" -version = "2.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "owning_ref 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", - "parking_lot 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "chrono" version = "0.4.6" @@ -394,7 +385,7 @@ dependencies = [ "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "smallvec 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "target-lexicon 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", - "thiserror 1.0.10 (registry+https://github.com/rust-lang/crates.io-index)", + "thiserror 1.0.11 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -445,24 +436,26 @@ dependencies = [ [[package]] name = "crossbeam-deque" -version = "0.7.2" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "crossbeam-epoch 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", - "crossbeam-utils 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-epoch 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-utils 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)", + "maybe-uninit 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "crossbeam-epoch" -version = "0.8.0" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "autocfg 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", + "autocfg 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", - "crossbeam-utils 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-utils 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "maybe-uninit 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "memoffset 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)", - "scopeguard 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "scopeguard 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -479,7 +472,7 @@ version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", - "crossbeam-utils 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-utils 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -493,10 +486,10 @@ dependencies = [ [[package]] name = "crossbeam-utils" -version = "0.7.0" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "autocfg 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", + "autocfg 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -530,7 +523,7 @@ version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "bstr 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", - "csv-core 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", + "csv-core 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", "itoa 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", "ryu 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", @@ -538,19 +531,19 @@ dependencies = [ [[package]] name = "csv-core" -version = "0.1.6" +version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "memchr 2.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "memchr 2.3.3 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "ctor" -version = "0.1.12" +version = "0.1.13" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 1.0.14 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 1.0.16 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -572,7 +565,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "detach" version = "0.0.38" -source = "registry+https://github.com/rust-lang/crates.io-index" +source = "git+https://github.com/holochain/lib3h?branch=transactional#10a35098cf3d4fb851a3da1b06830a89d0763799" [[package]] name = "deunicode" @@ -717,11 +710,11 @@ dependencies = [ [[package]] name = "error-chain" -version = "0.12.1" +version = "0.12.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "backtrace 0.3.27 (registry+https://github.com/rust-lang/crates.io-index)", - "version_check 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "version_check 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -747,9 +740,9 @@ name = "failure_derive" version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "proc-macro2 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 1.0.9 (registry+https://github.com/rust-lang/crates.io-index)", "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 1.0.14 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 1.0.16 (registry+https://github.com/rust-lang/crates.io-index)", "synstructure 0.12.3 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -929,9 +922,9 @@ version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "proc-macro-hack 0.5.11 (registry+https://github.com/rust-lang/crates.io-index)", - "proc-macro2 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 1.0.9 (registry+https://github.com/rust-lang/crates.io-index)", "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 1.0.14 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 1.0.16 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -976,7 +969,7 @@ dependencies = [ "futures-macro 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", "futures-sink 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", "futures-task 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "memchr 2.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "memchr 2.3.3 (registry+https://github.com/rust-lang/crates.io-index)", "pin-utils 0.1.0-alpha.4 (registry+https://github.com/rust-lang/crates.io-index)", "proc-macro-hack 0.5.11 (registry+https://github.com/rust-lang/crates.io-index)", "proc-macro-nested 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", @@ -992,7 +985,7 @@ dependencies = [ "futures-core-preview 0.3.0-alpha.17 (registry+https://github.com/rust-lang/crates.io-index)", "futures-io-preview 0.3.0-alpha.17 (registry+https://github.com/rust-lang/crates.io-index)", "futures-sink-preview 0.3.0-alpha.17 (registry+https://github.com/rust-lang/crates.io-index)", - "memchr 2.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "memchr 2.3.3 (registry+https://github.com/rust-lang/crates.io-index)", "pin-utils 0.1.0-alpha.4 (registry+https://github.com/rust-lang/crates.io-index)", "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1046,7 +1039,7 @@ dependencies = [ "aho-corasick 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)", "fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "memchr 2.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "memchr 2.3.3 (registry+https://github.com/rust-lang/crates.io-index)", "regex 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1107,8 +1100,8 @@ dependencies = [ "holochain_json_api 0.0.23 (registry+https://github.com/rust-lang/crates.io-index)", "holochain_locksmith 0.0.43-alpha3", "holochain_net 0.0.43-alpha3", - "holochain_persistence_api 0.0.17 (registry+https://github.com/rust-lang/crates.io-index)", - "holochain_persistence_file 0.0.17 (registry+https://github.com/rust-lang/crates.io-index)", + "holochain_persistence_api 0.0.17 (git+https://github.com/holochain/holochain-persistence?branch=transactional)", + "holochain_persistence_file 0.0.17 (git+https://github.com/holochain/holochain-persistence?branch=transactional)", "holochain_tracing 0.0.19 (registry+https://github.com/rust-lang/crates.io-index)", "holochain_tracing_macros 0.0.19 (registry+https://github.com/rust-lang/crates.io-index)", "holochain_wasm_utils 0.0.43-alpha3", @@ -1117,7 +1110,7 @@ dependencies = [ "json-patch 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", "lib3h_crypto_api 0.0.38 (registry+https://github.com/rust-lang/crates.io-index)", - "lib3h_protocol 0.0.38 (registry+https://github.com/rust-lang/crates.io-index)", + "lib3h_protocol 0.0.38 (git+https://github.com/holochain/lib3h?branch=transactional)", "lib3h_sodium 0.0.38 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "newrelic 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1157,7 +1150,7 @@ dependencies = [ "holochain_core_types 0.0.43-alpha3", "holochain_json_api 0.0.23 (registry+https://github.com/rust-lang/crates.io-index)", "holochain_json_derive 0.0.23 (registry+https://github.com/rust-lang/crates.io-index)", - "holochain_persistence_api 0.0.17 (registry+https://github.com/rust-lang/crates.io-index)", + "holochain_persistence_api 0.0.17 (git+https://github.com/holochain/holochain-persistence?branch=transactional)", "holochain_wasm_utils 0.0.43-alpha3", "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", "pretty_assertions 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1189,7 +1182,7 @@ dependencies = [ [[package]] name = "hermit-abi" -version = "0.1.6" +version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1230,7 +1223,7 @@ dependencies = [ "holochain_tracing 0.0.19 (registry+https://github.com/rust-lang/crates.io-index)", "holochain_tracing_macros 0.0.19 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "lib3h_sodium 0.0.38 (registry+https://github.com/rust-lang/crates.io-index)", + "lib3h_sodium 0.0.38 (git+https://github.com/holochain/lib3h?branch=transactional)", "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "newrelic 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "signal-hook 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1267,11 +1260,11 @@ dependencies = [ "holochain_logging 0.0.7 (registry+https://github.com/rust-lang/crates.io-index)", "holochain_metrics 0.0.43-alpha3", "holochain_net 0.0.43-alpha3", - "holochain_persistence_api 0.0.17 (registry+https://github.com/rust-lang/crates.io-index)", - "holochain_persistence_file 0.0.17 (registry+https://github.com/rust-lang/crates.io-index)", - "holochain_persistence_lmdb 0.0.17 (registry+https://github.com/rust-lang/crates.io-index)", - "holochain_persistence_mem 0.0.17 (registry+https://github.com/rust-lang/crates.io-index)", - "holochain_persistence_pickle 0.0.17 (registry+https://github.com/rust-lang/crates.io-index)", + "holochain_persistence_api 0.0.17 (git+https://github.com/holochain/holochain-persistence?branch=transactional)", + "holochain_persistence_file 0.0.17 (git+https://github.com/holochain/holochain-persistence?branch=transactional)", + "holochain_persistence_lmdb 0.0.17 (git+https://github.com/holochain/holochain-persistence?branch=transactional)", + "holochain_persistence_mem 0.0.17 (git+https://github.com/holochain/holochain-persistence?branch=transactional)", + "holochain_persistence_pickle 0.0.17 (git+https://github.com/holochain/holochain-persistence?branch=transactional)", "holochain_tracing 0.0.19 (registry+https://github.com/rust-lang/crates.io-index)", "holochain_tracing_macros 0.0.19 (registry+https://github.com/rust-lang/crates.io-index)", "holochain_wasm_utils 0.0.43-alpha3", @@ -1281,8 +1274,8 @@ dependencies = [ "jsonrpc-http-server 14.0.6 (registry+https://github.com/rust-lang/crates.io-index)", "jsonrpc-ws-server 14.0.6 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "lib3h 0.0.38 (registry+https://github.com/rust-lang/crates.io-index)", - "lib3h_sodium 0.0.38 (registry+https://github.com/rust-lang/crates.io-index)", + "lib3h 0.0.38 (git+https://github.com/holochain/lib3h?branch=transactional)", + "lib3h_sodium 0.0.38 (git+https://github.com/holochain/lib3h?branch=transactional)", "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "maplit 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", "newrelic 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1297,7 +1290,6 @@ dependencies = [ "serde_derive 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", "serde_json 1.0.47 (registry+https://github.com/rust-lang/crates.io-index)", "serde_regex 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "snowflake 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", "structopt 0.2.15 (registry+https://github.com/rust-lang/crates.io-index)", "tempfile 3.0.7 (registry+https://github.com/rust-lang/crates.io-index)", "test_utils 0.0.43-alpha3", @@ -1358,10 +1350,10 @@ dependencies = [ "holochain_logging 0.0.7 (registry+https://github.com/rust-lang/crates.io-index)", "holochain_metrics 0.0.43-alpha3", "holochain_net 0.0.43-alpha3", - "holochain_persistence_api 0.0.17 (registry+https://github.com/rust-lang/crates.io-index)", - "holochain_persistence_file 0.0.17 (registry+https://github.com/rust-lang/crates.io-index)", - "holochain_persistence_lmdb 0.0.17 (registry+https://github.com/rust-lang/crates.io-index)", - "holochain_persistence_mem 0.0.17 (registry+https://github.com/rust-lang/crates.io-index)", + "holochain_persistence_api 0.0.17 (git+https://github.com/holochain/holochain-persistence?branch=transactional)", + "holochain_persistence_file 0.0.17 (git+https://github.com/holochain/holochain-persistence?branch=transactional)", + "holochain_persistence_lmdb 0.0.17 (git+https://github.com/holochain/holochain-persistence?branch=transactional)", + "holochain_persistence_mem 0.0.17 (git+https://github.com/holochain/holochain-persistence?branch=transactional)", "holochain_tracing 0.0.19 (registry+https://github.com/rust-lang/crates.io-index)", "holochain_tracing_macros 0.0.19 (registry+https://github.com/rust-lang/crates.io-index)", "holochain_wasm_utils 0.0.43-alpha3", @@ -1370,8 +1362,8 @@ dependencies = [ "jsonrpc-core 14.0.1 (registry+https://github.com/rust-lang/crates.io-index)", "jsonrpc-lite 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "lib3h_protocol 0.0.38 (registry+https://github.com/rust-lang/crates.io-index)", - "lib3h_sodium 0.0.38 (registry+https://github.com/rust-lang/crates.io-index)", + "lib3h_protocol 0.0.38 (git+https://github.com/holochain/lib3h?branch=transactional)", + "lib3h_sodium 0.0.38 (git+https://github.com/holochain/lib3h?branch=transactional)", "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "newrelic 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "num-derive 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1410,9 +1402,9 @@ dependencies = [ "holochain_json_derive 0.0.23 (registry+https://github.com/rust-lang/crates.io-index)", "holochain_locksmith 0.0.43-alpha3", "holochain_logging 0.0.7 (registry+https://github.com/rust-lang/crates.io-index)", - "holochain_persistence_api 0.0.17 (registry+https://github.com/rust-lang/crates.io-index)", + "holochain_persistence_api 0.0.17 (git+https://github.com/holochain/holochain-persistence?branch=transactional)", "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "lib3h_crypto_api 0.0.38 (registry+https://github.com/rust-lang/crates.io-index)", + "lib3h_crypto_api 0.0.38 (git+https://github.com/holochain/lib3h?branch=transactional)", "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "maplit 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", "mashup 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1440,10 +1432,10 @@ dependencies = [ "hcid 0.0.6 (registry+https://github.com/rust-lang/crates.io-index)", "holochain_common 0.0.43-alpha3", "holochain_core_types 0.0.43-alpha3", - "holochain_persistence_api 0.0.17 (registry+https://github.com/rust-lang/crates.io-index)", + "holochain_persistence_api 0.0.17 (git+https://github.com/holochain/holochain-persistence?branch=transactional)", "holochain_tracing_macros 0.0.19 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "lib3h_sodium 0.0.38 (registry+https://github.com/rust-lang/crates.io-index)", + "lib3h_sodium 0.0.38 (git+https://github.com/holochain/lib3h?branch=transactional)", "newrelic 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1569,17 +1561,17 @@ dependencies = [ "holochain_locksmith 0.0.43-alpha3", "holochain_logging 0.0.7 (registry+https://github.com/rust-lang/crates.io-index)", "holochain_metrics 0.0.43-alpha3", - "holochain_persistence_api 0.0.17 (registry+https://github.com/rust-lang/crates.io-index)", + "holochain_persistence_api 0.0.17 (git+https://github.com/holochain/holochain-persistence?branch=transactional)", "holochain_tracing 0.0.19 (registry+https://github.com/rust-lang/crates.io-index)", "holochain_tracing_macros 0.0.19 (registry+https://github.com/rust-lang/crates.io-index)", "in_stream 0.0.43-alpha3", "jsonrpc-core 14.0.1 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "lib3h 0.0.38 (registry+https://github.com/rust-lang/crates.io-index)", - "lib3h_crypto_api 0.0.38 (registry+https://github.com/rust-lang/crates.io-index)", - "lib3h_protocol 0.0.38 (registry+https://github.com/rust-lang/crates.io-index)", - "lib3h_sodium 0.0.38 (registry+https://github.com/rust-lang/crates.io-index)", - "lib3h_zombie_actor 0.0.38 (registry+https://github.com/rust-lang/crates.io-index)", + "lib3h 0.0.38 (git+https://github.com/holochain/lib3h?branch=transactional)", + "lib3h_crypto_api 0.0.38 (git+https://github.com/holochain/lib3h?branch=transactional)", + "lib3h_protocol 0.0.38 (git+https://github.com/holochain/lib3h?branch=transactional)", + "lib3h_sodium 0.0.38 (git+https://github.com/holochain/lib3h?branch=transactional)", + "lib3h_zombie_actor 0.0.38 (git+https://github.com/holochain/lib3h?branch=transactional)", "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "newrelic 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "parking_lot 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1601,7 +1593,7 @@ dependencies = [ [[package]] name = "holochain_persistence_api" version = "0.0.17" -source = "registry+https://github.com/rust-lang/crates.io-index" +source = "git+https://github.com/holochain/holochain-persistence?branch=transactional#e37d46bf1e8a527840de8c4653e78c3fbc3ebc85" dependencies = [ "arrayref 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", "base64 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1632,29 +1624,30 @@ dependencies = [ [[package]] name = "holochain_persistence_file" version = "0.0.17" -source = "registry+https://github.com/rust-lang/crates.io-index" +source = "git+https://github.com/holochain/holochain-persistence?branch=transactional#e37d46bf1e8a527840de8c4653e78c3fbc3ebc85" dependencies = [ "glob 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", "holochain_json_api 0.0.23 (registry+https://github.com/rust-lang/crates.io-index)", - "holochain_persistence_api 0.0.17 (registry+https://github.com/rust-lang/crates.io-index)", + "holochain_persistence_api 0.0.17 (git+https://github.com/holochain/holochain-persistence?branch=transactional)", "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", "multihash 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", "serde_test 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", + "tempfile 3.0.7 (registry+https://github.com/rust-lang/crates.io-index)", "uuid 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "holochain_persistence_lmdb" version = "0.0.17" -source = "registry+https://github.com/rust-lang/crates.io-index" +source = "git+https://github.com/holochain/holochain-persistence?branch=transactional#e37d46bf1e8a527840de8c4653e78c3fbc3ebc85" dependencies = [ "bencher 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", "glob 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", "holochain_json_api 0.0.23 (registry+https://github.com/rust-lang/crates.io-index)", "holochain_logging 0.0.7 (registry+https://github.com/rust-lang/crates.io-index)", - "holochain_persistence_api 0.0.17 (registry+https://github.com/rust-lang/crates.io-index)", + "holochain_persistence_api 0.0.17 (git+https://github.com/holochain/holochain-persistence?branch=transactional)", "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", "lmdb-rkv 0.12.3 (registry+https://github.com/rust-lang/crates.io-index)", "multihash 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1664,17 +1657,18 @@ dependencies = [ "serde_derive 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", "serde_json 1.0.47 (registry+https://github.com/rust-lang/crates.io-index)", "serde_test 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", + "shrinkwraprs 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "uuid 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "holochain_persistence_mem" version = "0.0.17" -source = "registry+https://github.com/rust-lang/crates.io-index" +source = "git+https://github.com/holochain/holochain-persistence?branch=transactional#e37d46bf1e8a527840de8c4653e78c3fbc3ebc85" dependencies = [ "glob 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", "holochain_json_api 0.0.23 (registry+https://github.com/rust-lang/crates.io-index)", - "holochain_persistence_api 0.0.17 (registry+https://github.com/rust-lang/crates.io-index)", + "holochain_persistence_api 0.0.17 (git+https://github.com/holochain/holochain-persistence?branch=transactional)", "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", "multihash 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1686,11 +1680,11 @@ dependencies = [ [[package]] name = "holochain_persistence_pickle" version = "0.0.17" -source = "registry+https://github.com/rust-lang/crates.io-index" +source = "git+https://github.com/holochain/holochain-persistence?branch=transactional#e37d46bf1e8a527840de8c4653e78c3fbc3ebc85" dependencies = [ "glob 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", "holochain_json_api 0.0.23 (registry+https://github.com/rust-lang/crates.io-index)", - "holochain_persistence_api 0.0.17 (registry+https://github.com/rust-lang/crates.io-index)", + "holochain_persistence_api 0.0.17 (git+https://github.com/holochain/holochain-persistence?branch=transactional)", "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", "multihash 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", "pickledb 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1710,9 +1704,9 @@ dependencies = [ "hcid 0.0.6 (registry+https://github.com/rust-lang/crates.io-index)", "holochain_tracing 0.0.19 (registry+https://github.com/rust-lang/crates.io-index)", "in_stream 0.0.43-alpha3", - "lib3h_crypto_api 0.0.38 (registry+https://github.com/rust-lang/crates.io-index)", - "lib3h_protocol 0.0.38 (registry+https://github.com/rust-lang/crates.io-index)", - "lib3h_sodium 0.0.38 (registry+https://github.com/rust-lang/crates.io-index)", + "lib3h_crypto_api 0.0.38 (git+https://github.com/holochain/lib3h?branch=transactional)", + "lib3h_protocol 0.0.38 (git+https://github.com/holochain/lib3h?branch=transactional)", + "lib3h_sodium 0.0.38 (git+https://github.com/holochain/lib3h?branch=transactional)", "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "nanoid 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "native-tls 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1754,9 +1748,9 @@ dependencies = [ "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "newrelic 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "proc-macro2 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 1.0.9 (registry+https://github.com/rust-lang/crates.io-index)", "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 1.0.14 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 1.0.16 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1768,7 +1762,7 @@ dependencies = [ "holochain_core_types 0.0.43-alpha3", "holochain_json_api 0.0.23 (registry+https://github.com/rust-lang/crates.io-index)", "holochain_json_derive 0.0.23 (registry+https://github.com/rust-lang/crates.io-index)", - "holochain_persistence_api 0.0.17 (registry+https://github.com/rust-lang/crates.io-index)", + "holochain_persistence_api 0.0.17 (git+https://github.com/holochain/holochain-persistence?branch=transactional)", "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", "serde_json 1.0.47 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1907,7 +1901,7 @@ dependencies = [ "globset 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "memchr 2.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "memchr 2.3.3 (registry+https://github.com/rust-lang/crates.io-index)", "regex 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "same-file 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", "thread_local 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2095,21 +2089,21 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "lib3h" version = "0.0.38" -source = "registry+https://github.com/rust-lang/crates.io-index" +source = "git+https://github.com/holochain/lib3h?branch=transactional#10a35098cf3d4fb851a3da1b06830a89d0763799" dependencies = [ "backtrace 0.3.27 (registry+https://github.com/rust-lang/crates.io-index)", - "detach 0.0.38 (registry+https://github.com/rust-lang/crates.io-index)", + "detach 0.0.38 (git+https://github.com/holochain/lib3h?branch=transactional)", "env_logger 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", "hcid 0.0.6 (registry+https://github.com/rust-lang/crates.io-index)", - "holochain_persistence_api 0.0.17 (registry+https://github.com/rust-lang/crates.io-index)", + "holochain_persistence_api 0.0.17 (git+https://github.com/holochain/holochain-persistence?branch=transactional)", "holochain_tracing 0.0.19 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "lib3h_crypto_api 0.0.38 (registry+https://github.com/rust-lang/crates.io-index)", - "lib3h_mdns 0.0.38 (registry+https://github.com/rust-lang/crates.io-index)", - "lib3h_p2p_protocol 0.0.38 (registry+https://github.com/rust-lang/crates.io-index)", - "lib3h_protocol 0.0.38 (registry+https://github.com/rust-lang/crates.io-index)", - "lib3h_sodium 0.0.38 (registry+https://github.com/rust-lang/crates.io-index)", - "lib3h_zombie_actor 0.0.38 (registry+https://github.com/rust-lang/crates.io-index)", + "lib3h_crypto_api 0.0.38 (git+https://github.com/holochain/lib3h?branch=transactional)", + "lib3h_mdns 0.0.38 (git+https://github.com/holochain/lib3h?branch=transactional)", + "lib3h_p2p_protocol 0.0.38 (git+https://github.com/holochain/lib3h?branch=transactional)", + "lib3h_protocol 0.0.38 (git+https://github.com/holochain/lib3h?branch=transactional)", + "lib3h_sodium 0.0.38 (git+https://github.com/holochain/lib3h?branch=transactional)", + "lib3h_zombie_actor 0.0.38 (git+https://github.com/holochain/lib3h?branch=transactional)", "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "nanoid 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "native-tls 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2125,6 +2119,16 @@ dependencies = [ "url 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "lib3h_crypto_api" +version = "0.0.38" +source = "git+https://github.com/holochain/lib3h?branch=transactional#10a35098cf3d4fb851a3da1b06830a89d0763799" +dependencies = [ + "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", + "zeroize 0.9.2 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "lib3h_crypto_api" version = "0.0.38" @@ -2138,11 +2142,11 @@ dependencies = [ [[package]] name = "lib3h_mdns" version = "0.0.38" -source = "registry+https://github.com/rust-lang/crates.io-index" +source = "git+https://github.com/holochain/lib3h?branch=transactional#10a35098cf3d4fb851a3da1b06830a89d0763799" dependencies = [ "byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", "hostname 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", - "lib3h_protocol 0.0.38 (registry+https://github.com/rust-lang/crates.io-index)", + "lib3h_protocol 0.0.38 (git+https://github.com/holochain/lib3h?branch=transactional)", "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "nanoid 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2154,7 +2158,7 @@ dependencies = [ [[package]] name = "lib3h_p2p_protocol" version = "0.0.38" -source = "registry+https://github.com/rust-lang/crates.io-index" +source = "git+https://github.com/holochain/lib3h?branch=transactional#10a35098cf3d4fb851a3da1b06830a89d0763799" dependencies = [ "capnp 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2165,11 +2169,11 @@ dependencies = [ [[package]] name = "lib3h_protocol" version = "0.0.38" -source = "registry+https://github.com/rust-lang/crates.io-index" +source = "git+https://github.com/holochain/lib3h?branch=transactional#10a35098cf3d4fb851a3da1b06830a89d0763799" dependencies = [ "backtrace 0.3.27 (registry+https://github.com/rust-lang/crates.io-index)", "base64 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)", - "holochain_persistence_api 0.0.17 (registry+https://github.com/rust-lang/crates.io-index)", + "holochain_persistence_api 0.0.17 (git+https://github.com/holochain/holochain-persistence?branch=transactional)", "rmp-serde 0.13.7 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2178,6 +2182,18 @@ dependencies = [ "url_serde 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "lib3h_sodium" +version = "0.0.38" +source = "git+https://github.com/holochain/lib3h?branch=transactional#10a35098cf3d4fb851a3da1b06830a89d0763799" +dependencies = [ + "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "lib3h_crypto_api 0.0.38 (git+https://github.com/holochain/lib3h?branch=transactional)", + "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", + "rust_sodium_holochain_fork 0.10.2 (registry+https://github.com/rust-lang/crates.io-index)", + "rust_sodium_holochain_fork-sys 0.10.4 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "lib3h_sodium" version = "0.0.38" @@ -2193,11 +2209,11 @@ dependencies = [ [[package]] name = "lib3h_zombie_actor" version = "0.0.38" -source = "registry+https://github.com/rust-lang/crates.io-index" +source = "git+https://github.com/holochain/lib3h?branch=transactional#10a35098cf3d4fb851a3da1b06830a89d0763799" dependencies = [ "backtrace 0.3.27 (registry+https://github.com/rust-lang/crates.io-index)", "crossbeam-channel 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", - "detach 0.0.38 (registry+https://github.com/rust-lang/crates.io-index)", + "detach 0.0.38 (git+https://github.com/holochain/lib3h?branch=transactional)", "holochain_tracing 0.0.19 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", "lock_api 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2256,7 +2272,7 @@ name = "lock_api" version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "owning_ref 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "owning_ref 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", "scopeguard 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -2265,7 +2281,7 @@ name = "lock_api" version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "scopeguard 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "scopeguard 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -2273,7 +2289,7 @@ name = "lock_api" version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "scopeguard 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "scopeguard 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -2333,11 +2349,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "memchr" -version = "2.3.0" +version = "2.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", -] [[package]] name = "memmap" @@ -2680,7 +2693,7 @@ name = "num_cpus" version = "1.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "hermit-abi 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", + "hermit-abi 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -2764,15 +2777,7 @@ dependencies = [ [[package]] name = "owning_ref" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "stable_deref_trait 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "owning_ref" -version = "0.4.0" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "stable_deref_trait 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2795,15 +2800,6 @@ dependencies = [ "byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "parking_lot" -version = "0.4.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "owning_ref 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", - "parking_lot_core 0.2.14 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "parking_lot" version = "0.7.1" @@ -2842,17 +2838,6 @@ dependencies = [ "parking_lot_core 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "parking_lot_core" -version = "0.2.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", - "smallvec 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "parking_lot_core" version = "0.4.0" @@ -2929,7 +2914,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "pest" -version = "2.1.2" +version = "2.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "ucd-trie 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2940,29 +2925,29 @@ name = "pest_derive" version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "pest 2.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "pest_generator 2.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "pest 2.1.3 (registry+https://github.com/rust-lang/crates.io-index)", + "pest_generator 2.1.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "pest_generator" -version = "2.1.1" +version = "2.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "pest 2.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "pest_meta 2.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "proc-macro2 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)", + "pest 2.1.3 (registry+https://github.com/rust-lang/crates.io-index)", + "pest_meta 2.1.3 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 1.0.9 (registry+https://github.com/rust-lang/crates.io-index)", "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 1.0.14 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 1.0.16 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "pest_meta" -version = "2.1.2" +version = "2.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "maplit 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "pest 2.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "pest 2.1.3 (registry+https://github.com/rust-lang/crates.io-index)", "sha-1 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -3052,7 +3037,7 @@ version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "ansi_term 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", - "ctor 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", + "ctor 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)", "difference 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "output_vt100 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -3075,9 +3060,9 @@ name = "proc-macro-error" version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "proc-macro2 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 1.0.9 (registry+https://github.com/rust-lang/crates.io-index)", "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 1.0.14 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 1.0.16 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -3093,9 +3078,9 @@ name = "proc-macro-hack" version = "0.5.11" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "proc-macro2 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 1.0.9 (registry+https://github.com/rust-lang/crates.io-index)", "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 1.0.14 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 1.0.16 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -3126,7 +3111,7 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.8" +version = "1.0.9" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "unicode-xid 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -3158,7 +3143,7 @@ name = "quote" version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "proc-macro2 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 1.0.9 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -3350,7 +3335,7 @@ name = "rayon" version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "crossbeam-deque 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-deque 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)", "either 1.5.3 (registry+https://github.com/rust-lang/crates.io-index)", "rayon-core 1.7.0 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -3360,9 +3345,9 @@ name = "rayon-core" version = "1.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "crossbeam-deque 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-deque 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)", "crossbeam-queue 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "crossbeam-utils 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-utils 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", "num_cpus 1.11.1 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -3401,7 +3386,7 @@ version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "aho-corasick 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)", - "memchr 2.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "memchr 2.3.3 (registry+https://github.com/rust-lang/crates.io-index)", "regex-syntax 0.6.14 (registry+https://github.com/rust-lang/crates.io-index)", "thread_local 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", "utf8-ranges 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", @@ -3591,7 +3576,7 @@ dependencies = [ "base64 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", "blake2b_simd 0.5.10 (registry+https://github.com/rust-lang/crates.io-index)", "constant_time_eq 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", - "crossbeam-utils 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-utils 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -3678,7 +3663,7 @@ dependencies = [ "dirs 2.0.2 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "memchr 2.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "memchr 2.3.3 (registry+https://github.com/rust-lang/crates.io-index)", "nix 0.14.1 (registry+https://github.com/rust-lang/crates.io-index)", "unicode-segmentation 1.6.0 (registry+https://github.com/rust-lang/crates.io-index)", "unicode-width 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", @@ -3720,7 +3705,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "scopeguard" -version = "1.0.0" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] @@ -3804,9 +3789,9 @@ name = "serde_derive" version = "1.0.104" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "proc-macro2 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 1.0.9 (registry+https://github.com/rust-lang/crates.io-index)", "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 1.0.14 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 1.0.16 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -3925,9 +3910,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "itertools 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)", - "proc-macro2 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 1.0.9 (registry+https://github.com/rust-lang/crates.io-index)", "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 1.0.14 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 1.0.16 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -3954,7 +3939,6 @@ version = "0.0.43-alpha3" dependencies = [ "backtrace 0.3.27 (registry+https://github.com/rust-lang/crates.io-index)", "base64 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)", - "chashmap 2.2.2 (registry+https://github.com/rust-lang/crates.io-index)", "chrono 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "crossbeam-channel 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", "env_logger 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", @@ -3965,17 +3949,17 @@ dependencies = [ "holochain_json_api 0.0.23 (registry+https://github.com/rust-lang/crates.io-index)", "holochain_locksmith 0.0.43-alpha3", "holochain_metrics 0.0.43-alpha3", - "holochain_persistence_api 0.0.17 (registry+https://github.com/rust-lang/crates.io-index)", + "holochain_persistence_api 0.0.17 (git+https://github.com/holochain/holochain-persistence?branch=transactional)", "holochain_tracing 0.0.19 (registry+https://github.com/rust-lang/crates.io-index)", "holochain_tracing_macros 0.0.19 (registry+https://github.com/rust-lang/crates.io-index)", "im 14.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "in_stream 0.0.43-alpha3", "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "lib3h 0.0.38 (registry+https://github.com/rust-lang/crates.io-index)", - "lib3h_crypto_api 0.0.38 (registry+https://github.com/rust-lang/crates.io-index)", - "lib3h_protocol 0.0.38 (registry+https://github.com/rust-lang/crates.io-index)", - "lib3h_sodium 0.0.38 (registry+https://github.com/rust-lang/crates.io-index)", - "lib3h_zombie_actor 0.0.38 (registry+https://github.com/rust-lang/crates.io-index)", + "lib3h 0.0.38 (git+https://github.com/holochain/lib3h?branch=transactional)", + "lib3h_crypto_api 0.0.38 (git+https://github.com/holochain/lib3h?branch=transactional)", + "lib3h_protocol 0.0.38 (git+https://github.com/holochain/lib3h?branch=transactional)", + "lib3h_sodium 0.0.38 (git+https://github.com/holochain/lib3h?branch=transactional)", + "lib3h_zombie_actor 0.0.38 (git+https://github.com/holochain/lib3h?branch=transactional)", "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "nanoid 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "native-tls 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", @@ -4009,9 +3993,9 @@ dependencies = [ "holochain_tracing 0.0.19 (registry+https://github.com/rust-lang/crates.io-index)", "holochain_tracing_macros 0.0.19 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "lib3h 0.0.38 (registry+https://github.com/rust-lang/crates.io-index)", - "lib3h_protocol 0.0.38 (registry+https://github.com/rust-lang/crates.io-index)", - "lib3h_sodium 0.0.38 (registry+https://github.com/rust-lang/crates.io-index)", + "lib3h 0.0.38 (git+https://github.com/holochain/lib3h?branch=transactional)", + "lib3h_protocol 0.0.38 (git+https://github.com/holochain/lib3h?branch=transactional)", + "lib3h_sodium 0.0.38 (git+https://github.com/holochain/lib3h?branch=transactional)", "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "newrelic 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "sim2h 0.0.43-alpha3", @@ -4143,9 +4127,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "heck 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", "proc-macro-error 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", - "proc-macro2 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 1.0.9 (registry+https://github.com/rust-lang/crates.io-index)", "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 1.0.14 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 1.0.16 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -4175,10 +4159,10 @@ dependencies = [ [[package]] name = "syn" -version = "1.0.14" +version = "1.0.16" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "proc-macro2 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 1.0.9 (registry+https://github.com/rust-lang/crates.io-index)", "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", "unicode-xid 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -4199,9 +4183,9 @@ name = "synstructure" version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "proc-macro2 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 1.0.9 (registry+https://github.com/rust-lang/crates.io-index)", "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 1.0.14 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 1.0.16 (registry+https://github.com/rust-lang/crates.io-index)", "unicode-xid 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -4245,11 +4229,11 @@ version = "0.11.20" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "chrono 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", - "error-chain 0.12.1 (registry+https://github.com/rust-lang/crates.io-index)", + "error-chain 0.12.2 (registry+https://github.com/rust-lang/crates.io-index)", "glob 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", "humansize 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "pest 2.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "pest 2.1.3 (registry+https://github.com/rust-lang/crates.io-index)", "pest_derive 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "regex 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", @@ -4292,11 +4276,11 @@ dependencies = [ "holochain_json_derive 0.0.23 (registry+https://github.com/rust-lang/crates.io-index)", "holochain_locksmith 0.0.43-alpha3", "holochain_net 0.0.43-alpha3", - "holochain_persistence_api 0.0.17 (registry+https://github.com/rust-lang/crates.io-index)", + "holochain_persistence_api 0.0.17 (git+https://github.com/holochain/holochain-persistence?branch=transactional)", "holochain_wasm_utils 0.0.43-alpha3", "jsonrpc-ws-server 14.0.6 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "lib3h_sodium 0.0.38 (registry+https://github.com/rust-lang/crates.io-index)", + "lib3h_sodium 0.0.38 (git+https://github.com/holochain/lib3h?branch=transactional)", "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", "serde_json 1.0.47 (registry+https://github.com/rust-lang/crates.io-index)", @@ -4316,20 +4300,20 @@ dependencies = [ [[package]] name = "thiserror" -version = "1.0.10" +version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "thiserror-impl 1.0.10 (registry+https://github.com/rust-lang/crates.io-index)", + "thiserror-impl 1.0.11 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "thiserror-impl" -version = "1.0.10" +version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "proc-macro2 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 1.0.9 (registry+https://github.com/rust-lang/crates.io-index)", "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 1.0.14 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 1.0.16 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -4421,7 +4405,7 @@ dependencies = [ "iovec 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", - "memchr 2.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "memchr 2.3.3 (registry+https://github.com/rust-lang/crates.io-index)", "mio 0.6.21 (registry+https://github.com/rust-lang/crates.io-index)", "mio-named-pipes 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", "mio-uds 0.6.7 (registry+https://github.com/rust-lang/crates.io-index)", @@ -4429,7 +4413,7 @@ dependencies = [ "pin-project-lite 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", "signal-hook-registry 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-macros 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-macros 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -4457,7 +4441,7 @@ name = "tokio-executor" version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "crossbeam-utils 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-utils 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)", "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -4483,12 +4467,12 @@ dependencies = [ [[package]] name = "tokio-macros" -version = "0.2.4" +version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "proc-macro2 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 1.0.9 (registry+https://github.com/rust-lang/crates.io-index)", "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 1.0.14 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 1.0.16 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -4514,7 +4498,7 @@ name = "tokio-reactor" version = "0.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "crossbeam-utils 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-utils 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)", "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", @@ -4570,9 +4554,9 @@ name = "tokio-threadpool" version = "0.1.18" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "crossbeam-deque 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-deque 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)", "crossbeam-queue 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "crossbeam-utils 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-utils 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)", "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", @@ -4586,7 +4570,7 @@ name = "tokio-timer" version = "0.2.13" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "crossbeam-utils 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-utils 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)", "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-executor 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", @@ -4645,7 +4629,7 @@ version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 1.0.14 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 1.0.16 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -5093,7 +5077,7 @@ dependencies = [ "cranelift-codegen 0.52.0 (registry+https://github.com/rust-lang/crates.io-index)", "cranelift-entity 0.52.0 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "thiserror 1.0.10 (registry+https://github.com/rust-lang/crates.io-index)", + "thiserror 1.0.11 (registry+https://github.com/rust-lang/crates.io-index)", "wasmer-clif-fork-frontend 0.52.0 (registry+https://github.com/rust-lang/crates.io-index)", "wasmparser 0.45.2 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -5345,12 +5329,11 @@ dependencies = [ "checksum bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)" = "206fdffcfa2df7cbe15601ef46c813fce0965eb3286db6b56c583b814b51c81c" "checksum bytes 0.5.4 (registry+https://github.com/rust-lang/crates.io-index)" = "130aac562c0dd69c56b3b1cc8ffd2e17be31d0b6c25b61c96b76231aa23e39e1" "checksum bzip2 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "42b7c3cbf0fa9c1b82308d57191728ca0256cb821220f4e2fd410a72ade26e3b" -"checksum bzip2-sys 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)" = "6584aa36f5ad4c9247f5323b0a42f37802b37a836f0ad87084d7a33961abe25f" +"checksum bzip2-sys 0.1.8+1.0.8 (registry+https://github.com/rust-lang/crates.io-index)" = "05305b41c5034ff0e93937ac64133d109b5a2660114ec45e9760bc6816d83038" "checksum c2-chacha 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "214238caa1bf3a496ec3392968969cab8549f96ff30652c9e56885329315f6bb" "checksum capnp 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)" = "fadfee1d1134072232d629291d39205fa74cde71d2c645c09b7aa321c3dd6f4f" "checksum cc 1.0.50 (registry+https://github.com/rust-lang/crates.io-index)" = "95e28fa049fda1c330bcf9d723be7663a899c4679724b34c81e9f5a326aab8cd" "checksum cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)" = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822" -"checksum chashmap 2.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "ff41a3c2c1e39921b9003de14bf0439c7b63a9039637c291e1a64925d8ddfa45" "checksum chrono 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)" = "45912881121cb26fad7c38c17ba7daa18764771836b34fab7d3fbd93ed633878" "checksum chunked_transfer 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "498d20a7aaf62625b9bf26e637cf7736417cde1d0c99f1d04d1170229a85cf87" "checksum clap 2.33.0 (registry+https://github.com/rust-lang/crates.io-index)" = "5067f5bb2d80ef5d68b4c87db81601f0b75bca627bc2ef76b141d7b846a3c6d9" @@ -5369,21 +5352,21 @@ dependencies = [ "checksum cranelift-native 0.52.0 (registry+https://github.com/rust-lang/crates.io-index)" = "21398a0bc6ba389ea86964ac4a495426dd61080f2ddd306184777a8560fe9976" "checksum crc32fast 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ba125de2af0df55319f41944744ad91c71113bf74a4646efff39afe1f6842db1" "checksum crossbeam-channel 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)" = "0f0ed1a4de2235cabda8558ff5840bffb97fcb64c97827f354a451307df5f72b" -"checksum crossbeam-deque 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)" = "c3aa945d63861bfe624b55d153a39684da1e8c0bc8fba932f7ee3a3c16cea3ca" -"checksum crossbeam-epoch 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "5064ebdbf05ce3cb95e45c8b086f72263f4166b29b97f6baff7ef7fe047b55ac" +"checksum crossbeam-deque 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)" = "9f02af974daeee82218205558e51ec8768b48cf524bd01d550abe5573a608285" +"checksum crossbeam-epoch 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)" = "058ed274caafc1f60c4997b5fc07bf7dc7cca454af7c6e81edffe5f33f70dace" "checksum crossbeam-queue 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7c979cd6cfe72335896575c6b5688da489e420d36a27a0b9eb0c73db574b4a4b" "checksum crossbeam-queue 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "c695eeca1e7173472a32221542ae469b3e9aac3a4fc81f7696bcad82029493db" "checksum crossbeam-utils 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)" = "04973fa96e96579258a5091af6003abde64af786b860f18622b82e026cca60e6" -"checksum crossbeam-utils 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ce446db02cdc3165b94ae73111e570793400d0794e46125cc4056c81cbb039f4" +"checksum crossbeam-utils 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)" = "c3c7c73a2d1e9fc0886a08b93e98eb643461230d5f1925e4036204d5f2e261a8" "checksum crunchy 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7" "checksum crypto-mac 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)" = "0999b4ff4d3446d4ddb19a63e9e00c1876e75cd7000d20e57a693b4b3f08d958" "checksum crypto-mac 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "4434400df11d95d556bac068ddfedd482915eb18fe8bea89bc80b6e4b1c179e5" "checksum csv 1.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "00affe7f6ab566df61b4be3ce8cf16bc2576bca0963ceb0955e45d514bf9a279" -"checksum csv-core 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "9b5cadb6b25c77aeff80ba701712494213f4a8418fcda2ee11b6560c3ad0bf4c" -"checksum ctor 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)" = "cd8ce37ad4184ab2ce004c33bf6379185d3b1c95801cab51026bd271bf68eedc" +"checksum csv-core 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)" = "2b2466559f260f48ad25fe6317b3c8dac77b5bdb5763ac7d9d6103530663bc90" +"checksum ctor 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)" = "47c5e5ac752e18207b12e16b10631ae5f7f68f8805f335f9b817ead83d9ffce1" "checksum derive_more 0.14.1 (registry+https://github.com/rust-lang/crates.io-index)" = "6d944ac6003ed268757ef1ee686753b57efc5fcf0ebe7b64c9fc81e7e32ff839" "checksum detach 0.0.19 (registry+https://github.com/rust-lang/crates.io-index)" = "891f5117f720f720924586e087b7eb385d816afb467a231c2fec64239de00986" -"checksum detach 0.0.38 (registry+https://github.com/rust-lang/crates.io-index)" = "63222ce1fb32684cbb8b2035dbfd62fbc98faf134286d3be0c43e03ec327b11e" +"checksum detach 0.0.38 (git+https://github.com/holochain/lib3h?branch=transactional)" = "" "checksum deunicode 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)" = "850878694b7933ca4c9569d30a34b55031b9b139ee1fc7b94a527c4ef960d690" "checksum difference 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "524cbf6897b527295dff137cec09ecf3a05f4fddffd7dfcd1585403449e74198" "checksum digest 0.7.6 (registry+https://github.com/rust-lang/crates.io-index)" = "03b072242a8cbaf9c145665af9d250c59af3b958f83ed6824e13533cf76d5b90" @@ -5401,7 +5384,7 @@ dependencies = [ "checksum env_logger 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)" = "44533bbbb3bb3c1fa17d9f2e4e38bbbaf8396ba82193c4cb1b6445d711445d36" "checksum errno 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)" = "c2a071601ed01b988f896ab14b95e67335d1eeb50190932a1320f7fe3cadc84e" "checksum errno-dragonfly 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "14ca354e36190500e1e1fb267c647932382b54053c50b14970856c0b00a35067" -"checksum error-chain 0.12.1 (registry+https://github.com/rust-lang/crates.io-index)" = "3ab49e9dcb602294bc42f9a7dfc9bc6e936fca4418ea300dbfb84fe16de0b7d9" +"checksum error-chain 0.12.2 (registry+https://github.com/rust-lang/crates.io-index)" = "d371106cc88ffdfb1eabd7111e432da544f16f3e2d7bf1dfe8bf575f1df045cd" "checksum escargot 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "19db1f7e74438642a5018cdf263bb1325b2e792f02dd0a3ca6d6c0f0d7b1d5a5" "checksum failure 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "795bd83d3abeb9220f257e597aa0080a508b27533824adf336529648f6abf7e2" "checksum failure_derive 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "0bc225b78e0391e4b8683440bf2e63c2deeeb2ce5189eab46e2b68c6d3725d08" @@ -5448,18 +5431,18 @@ dependencies = [ "checksum hashbrown 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "3bae29b6653b3412c2e71e9d486db9f9df5d701941d86683005efb9f2d28e3da" "checksum hcid 0.0.6 (registry+https://github.com/rust-lang/crates.io-index)" = "9e5ea27f6b17df2ded5dcfc492ecd0db719d00b144dbaaf2df1658a7e38cfd2e" "checksum heck 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "20564e78d53d2bb135c343b3f47714a56af2061f1c928fdb541dc7b9fdd94205" -"checksum hermit-abi 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "eff2656d88f158ce120947499e971d743c05dbcbed62e5bd2f38f1698bbc3772" +"checksum hermit-abi 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "1010591b26bbfe835e9faeabeb11866061cc7dcebffd56ad7d0942d0e61aefd8" "checksum hex 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "805026a5d0141ffc30abb3be3173848ad46a1b1664fe632428479619a3644d77" "checksum hmac 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "44f3bdb08579d99d7dc761c0e266f13b5f2ab8c8c703b9fc9ef333cd8f48f55e" "checksum hmac 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)" = "5dcb5e64cda4c23119ab41ba960d1e170a774c8e4b9d9e6a9bc18aabf5e59695" "checksum holochain_json_api 0.0.23 (registry+https://github.com/rust-lang/crates.io-index)" = "723490ea3377bde2f4ac07ea63c7ccdf0bf20eb699a0ed580566fe927b735bba" "checksum holochain_json_derive 0.0.23 (registry+https://github.com/rust-lang/crates.io-index)" = "6d411807a76c2a2f45bee166d576e65eee2659be61a62f10008e94313be1b537" "checksum holochain_logging 0.0.7 (registry+https://github.com/rust-lang/crates.io-index)" = "0d20335b00a8577591f5f6b86cf9898773b53af6d24c94bd4095f72d70f58b51" -"checksum holochain_persistence_api 0.0.17 (registry+https://github.com/rust-lang/crates.io-index)" = "3bdc67b118bad1256cf6bcff10f9915e59d06807272ad71c7c8359621e7a62c9" -"checksum holochain_persistence_file 0.0.17 (registry+https://github.com/rust-lang/crates.io-index)" = "6e22ff6664eb52faa59d4a1b9aa8ea141a3c885ca86ce5d224b76e6a7fa20ef4" -"checksum holochain_persistence_lmdb 0.0.17 (registry+https://github.com/rust-lang/crates.io-index)" = "3d290f8d9fcbd6caaf993baa021abe9735a90f1fbae1bc721dcf96d9e97d763e" -"checksum holochain_persistence_mem 0.0.17 (registry+https://github.com/rust-lang/crates.io-index)" = "bf45bd3a7d8e7a0b32ee78f1793d2a6c8b38e3c047a4622f896c5af5dbd21aec" -"checksum holochain_persistence_pickle 0.0.17 (registry+https://github.com/rust-lang/crates.io-index)" = "dd09d8cefe9229380445dc616b15077f6ffe94d1afd6082ffd7b51cb11e911cb" +"checksum holochain_persistence_api 0.0.17 (git+https://github.com/holochain/holochain-persistence?branch=transactional)" = "" +"checksum holochain_persistence_file 0.0.17 (git+https://github.com/holochain/holochain-persistence?branch=transactional)" = "" +"checksum holochain_persistence_lmdb 0.0.17 (git+https://github.com/holochain/holochain-persistence?branch=transactional)" = "" +"checksum holochain_persistence_mem 0.0.17 (git+https://github.com/holochain/holochain-persistence?branch=transactional)" = "" +"checksum holochain_persistence_pickle 0.0.17 (git+https://github.com/holochain/holochain-persistence?branch=transactional)" = "" "checksum holochain_tracing 0.0.19 (registry+https://github.com/rust-lang/crates.io-index)" = "df4ee35cd41fc91a56aeb6268858148ae8b27459072d938c476cac39b5e4258b" "checksum holochain_tracing_macros 0.0.19 (registry+https://github.com/rust-lang/crates.io-index)" = "e2fb0dfa4bb2b392c10ef687641a22637580f23a8a493d9044cd31f6dcabc947" "checksum hostname 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "21ceb46a83a85e824ef93669c8b390009623863b5c195d1ba747292c0c72f94e" @@ -5491,13 +5474,15 @@ dependencies = [ "checksum language-tags 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "a91d884b6667cd606bb5a69aa0c99ba811a115fc68915e7056ec08a46e93199a" "checksum lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" "checksum lazycell 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "b294d6fa9ee409a054354afc4352b0b9ef7ca222c69b8812cbea9e7d2bf3783f" -"checksum lib3h 0.0.38 (registry+https://github.com/rust-lang/crates.io-index)" = "c70426a5a9a4d00779e9e12641669eb323db00a279ccc4e2b9d1e6dbadeee603" +"checksum lib3h 0.0.38 (git+https://github.com/holochain/lib3h?branch=transactional)" = "" +"checksum lib3h_crypto_api 0.0.38 (git+https://github.com/holochain/lib3h?branch=transactional)" = "" "checksum lib3h_crypto_api 0.0.38 (registry+https://github.com/rust-lang/crates.io-index)" = "f5b238b8ef3e1af6f25cf5b85b146bf0c13425485092d5649560ef9f40c8725e" -"checksum lib3h_mdns 0.0.38 (registry+https://github.com/rust-lang/crates.io-index)" = "2b65c17a9ff558a6800a0a8ee419a61457327b25cb3a9b09175c16151c524507" -"checksum lib3h_p2p_protocol 0.0.38 (registry+https://github.com/rust-lang/crates.io-index)" = "16e30e5bd0da7cb35af533952f989f88abe691196db9cbf9496969a5f4bde976" -"checksum lib3h_protocol 0.0.38 (registry+https://github.com/rust-lang/crates.io-index)" = "86fbc219f0b9462bfc342b414575b118a6070857993126aba728f3cdcee7426a" +"checksum lib3h_mdns 0.0.38 (git+https://github.com/holochain/lib3h?branch=transactional)" = "" +"checksum lib3h_p2p_protocol 0.0.38 (git+https://github.com/holochain/lib3h?branch=transactional)" = "" +"checksum lib3h_protocol 0.0.38 (git+https://github.com/holochain/lib3h?branch=transactional)" = "" +"checksum lib3h_sodium 0.0.38 (git+https://github.com/holochain/lib3h?branch=transactional)" = "" "checksum lib3h_sodium 0.0.38 (registry+https://github.com/rust-lang/crates.io-index)" = "75528d218460e891cd3bed38b18e3474320dee29f46b6e8083b2b5d86df2d05a" -"checksum lib3h_zombie_actor 0.0.38 (registry+https://github.com/rust-lang/crates.io-index)" = "a69597b1d78aec859758aa0a23b360b0a81e85445ec50b611e355e0e4d5d1e69" +"checksum lib3h_zombie_actor 0.0.38 (git+https://github.com/holochain/lib3h?branch=transactional)" = "" "checksum libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)" = "d515b1f41455adea1313a4a2ac8a8a477634fbae63cc6100e3aebb207ce61558" "checksum libflate 0.1.27 (registry+https://github.com/rust-lang/crates.io-index)" = "d9135df43b1f5d0e333385cb6e7897ecd1a43d7d11b91ac003f4d2c2d2401fdd" "checksum linked-hash-map 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)" = "ae91b68aebc4ddb91978b11a1b02ddd8602a05ec19002801c5666000e05e0f83" @@ -5514,7 +5499,7 @@ dependencies = [ "checksum matches 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "7ffc5c5338469d4d3ea17d269fa8ea3512ad247247c30bd2df69e68309ed0a08" "checksum maybe-uninit 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "60302e4db3a61da70c0cb7991976248362f30319e88850c487b9b95bbf059e00" "checksum md5 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)" = "79c56d6a0b07f9e19282511c83fc5b086364cbae4ba8c7d5f190c3d9b0425a48" -"checksum memchr 2.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "3197e20c7edb283f87c071ddfc7a2cca8f8e0b888c242959846a6fce03c72223" +"checksum memchr 2.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "3728d817d99e5ac407411fa471ff9800a778d88a24685968b36824eaf4bee400" "checksum memmap 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "6585fd95e7bb50d6cc31e20d4cf9afb4e2ba16c5846fc76793f11218da9c475b" "checksum memoffset 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)" = "75189eb85871ea5c2e2c15abbdd541185f63b408415e5051f5cac122d8c774b9" "checksum memory_units 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "71d96e3f3c0b6325d8ccd83c33b28acb183edcb6c67938ba104ec546854b0882" @@ -5561,16 +5546,13 @@ dependencies = [ "checksum ordered-float 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "18869315e81473c951eb56ad5558bbc56978562d3ecfb87abb7a1e944cea4518" "checksum ordermap 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)" = "a86ed3f5f244b372d6b1a00b72ef7f8876d0bc6a78a4c9985c53614041512063" "checksum output_vt100 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "53cdc5b785b7a58c5aad8216b3dfa114df64b0b06ae6e1501cef91df2fbdf8f9" -"checksum owning_ref 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "cdf84f41639e037b484f93433aa3897863b561ed65c6e59c7073d7c561710f37" -"checksum owning_ref 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "49a4b8ea2179e6a2e27411d3bca09ca6dd630821cf6894c6c7c8467a8ee7ef13" +"checksum owning_ref 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "6ff55baddef9e4ad00f88b6c743a2a8062d4c6ade126c2a528644b8e444d52ce" "checksum page_size 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "eebde548fbbf1ea81a99b128872779c437752fb99f217c45245e1a61dcd9edcd" "checksum parity-wasm 0.31.3 (registry+https://github.com/rust-lang/crates.io-index)" = "511379a8194230c2395d2f5fa627a5a7e108a9f976656ce723ae68fca4097bfc" "checksum parking_lot 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)" = "92e98c49ab0b7ce5b222f2cc9193fc4efe11c6d0bd4f648e374684a6857b1cfc" -"checksum parking_lot 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)" = "149d8f5b97f3c1133e3cfcd8886449959e856b557ff281e292b733d7c69e005e" "checksum parking_lot 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ab41b4aed082705d1056416ae4468b6ea99d52599ecf3169b00088d43113e337" "checksum parking_lot 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "fa7767817701cce701d5585b9c4db3cdd02086398322c1d7e8bf5094a96a2ce7" "checksum parking_lot 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "f842b1982eb6c2fe34036a4fbfb06dd185a3f5c8edfaacdf7d1ea10b07de6252" -"checksum parking_lot_core 0.2.14 (registry+https://github.com/rust-lang/crates.io-index)" = "4db1a8ccf734a7bce794cc19b3df06ed87ab2f3907036b693c68f56b4d4537fa" "checksum parking_lot_core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "94c8c7923936b28d546dfd14d4472eaf34c99b14e1c973a32b3e6d4eb04298c9" "checksum parking_lot_core 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "cb88cb1cb3790baa6776844f968fea3be44956cf184fa1be5a03341f5491278c" "checksum parking_lot_core 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)" = "b876b1b9e7ac6e1a74a6da34d25c42e17e8862aa409cbbbdcfc8d86c6f3bc62b" @@ -5578,10 +5560,10 @@ dependencies = [ "checksum pbkdf2 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "006c038a43a45995a9670da19e67600114740e8511d4333bf97a56e66a7542d9" "checksum percent-encoding 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "31010dd2e1ac33d5b46a5b413495239882813e0369f8ed8a5e266f173602f831" "checksum percent-encoding 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d4fd5641d01c8f18a23da7b6fe29298ff4b55afcccdf78973b24cf3175fee32e" -"checksum pest 2.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7e4fb201c5c22a55d8b24fef95f78be52738e5e1361129be1b5e862ecdb6894a" +"checksum pest 2.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "10f4872ae94d7b90ae48754df22fd42ad52ce740b8f370b03da4835417403e53" "checksum pest_derive 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "833d1ae558dc601e9a60366421196a8d94bc0ac980476d0b67e1d0988d72b2d0" -"checksum pest_generator 2.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "7b9fcf299b5712d06ee128a556c94709aaa04512c4dffb8ead07c5c998447fc0" -"checksum pest_meta 2.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "df43fd99896fd72c485fe47542c7b500e4ac1e8700bf995544d1317a60ded547" +"checksum pest_generator 2.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "27e5277315f6b4f27e0e6744feb5d5ba1891e7164871033d3c8344c6783b349a" +"checksum pest_meta 2.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "54be6e404f5317079812fc8f9f5279de376d8856929e21c184ecf6bbd692a11d" "checksum petgraph 0.4.13 (registry+https://github.com/rust-lang/crates.io-index)" = "9c3659d1ee90221741f65dd128d9998311b0e40c5d3c23a62445938214abce4f" "checksum pickledb 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "f84c239b2c2dc17025deda2d513de8218f1afd9ec7c34de45797ab35cf97d8a0" "checksum pin-project-lite 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "237844750cfbb86f67afe27eee600dfbbcb6188d734139b534cbfbf4f96792ae" @@ -5602,7 +5584,7 @@ dependencies = [ "checksum proc-macro-nested 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "369a6ed065f249a159e06c45752c780bda2fb53c995718f9e484d08daa9eb42e" "checksum proc-macro2 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "cd07deb3c6d1d9ff827999c7f9b04cdfd66b1b17ae508e14fe47b620f2282ae0" "checksum proc-macro2 0.4.27 (registry+https://github.com/rust-lang/crates.io-index)" = "4d317f9caece796be1980837fd5cb3dfec5613ebdb04ad0956deea83ce168915" -"checksum proc-macro2 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)" = "3acb317c6ff86a4e579dfa00fc5e6cca91ecbb4e7eb2df0468805b674eb88548" +"checksum proc-macro2 1.0.9 (registry+https://github.com/rust-lang/crates.io-index)" = "6c09721c6781493a2a492a96b5a5bf19b65917fe6728884e7c44dd0c60ca3435" "checksum quick-error 1.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0" "checksum quote 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "1eca14c727ad12702eb4b6bfb5a232287dcf8385cb8ca83a3eeaf6519c44c408" "checksum quote 0.6.11 (registry+https://github.com/rust-lang/crates.io-index)" = "cdd8e04bd9c52e0342b406469d494fcb033be4bdbe5c606016defbb1681411e1" @@ -5660,7 +5642,7 @@ dependencies = [ "checksum same-file 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)" = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" "checksum schannel 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)" = "507a9e6e8ffe0a4e0ebb9a10293e62fdf7657c06f1b8bb07a8fcf697d2abf295" "checksum scopeguard 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "94258f53601af11e6a49f722422f6e3425c52b06245a5cf9bc09908b174f5e27" -"checksum scopeguard 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b42e15e59b18a828bbf5c58ea01debb36b9b096346de35d941dcb89009f24a0d" +"checksum scopeguard 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" "checksum security-framework 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "8ef2429d7cefe5fd28bd1d2ed41c944547d4ff84776f5935b456da44593a16df" "checksum security-framework-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "e31493fc37615debb8c5090a7aeb4a9730bc61e77ab10b9af59f1a202284f895" "checksum semver 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403" @@ -5705,7 +5687,7 @@ dependencies = [ "checksum subtle 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "2d67a5a62ba6e01cb2192ff309324cb4875d0c451d55fe2319433abe7a05a8ee" "checksum syn 0.12.15 (registry+https://github.com/rust-lang/crates.io-index)" = "c97c05b8ebc34ddd6b967994d5c6e9852fa92f8b82b3858c39451f97346dcce5" "checksum syn 0.15.31 (registry+https://github.com/rust-lang/crates.io-index)" = "d2b4cfac95805274c6afdb12d8f770fa2d27c045953e7b630a81801953699a9a" -"checksum syn 1.0.14 (registry+https://github.com/rust-lang/crates.io-index)" = "af6f3550d8dff9ef7dc34d384ac6f107e5d31c8f57d9f28e0081503f547ac8f5" +"checksum syn 1.0.16 (registry+https://github.com/rust-lang/crates.io-index)" = "123bd9499cfb380418d509322d7a6d52e5315f064fe4b3ad18a53d6b92c07859" "checksum synstructure 0.10.2 (registry+https://github.com/rust-lang/crates.io-index)" = "02353edf96d6e4dc81aea2d8490a7e9db177bf8acb0e951c24940bf866cb313f" "checksum synstructure 0.12.3 (registry+https://github.com/rust-lang/crates.io-index)" = "67656ea1dc1b41b1451851562ea232ec2e5a80242139f7e679ceccfb5d61f545" "checksum take_mut 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "f764005d11ee5f36500a149ace24e00e3da98b0158b3e2d53a7495660d3f4d60" @@ -5716,8 +5698,8 @@ dependencies = [ "checksum term 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)" = "edd106a334b7657c10b7c540a0106114feadeb4dc314513e97df481d5d966f42" "checksum termcolor 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "bb6bfa289a4d7c5766392812c0a1f4c1ba45afa1ad47803c11e1f407d846d75f" "checksum textwrap 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d326610f408c7a4eb6f51c37c330e496b08506c9457c9d34287ecc38809fb060" -"checksum thiserror 1.0.10 (registry+https://github.com/rust-lang/crates.io-index)" = "205684fd018ca14432b12cce6ea3d46763311a571c3d294e71ba3f01adcf1aad" -"checksum thiserror-impl 1.0.10 (registry+https://github.com/rust-lang/crates.io-index)" = "57e4d2e50ca050ed44fb58309bdce3efa79948f84f9993ad1978de5eebdce5a7" +"checksum thiserror 1.0.11 (registry+https://github.com/rust-lang/crates.io-index)" = "ee14bf8e6767ab4c687c9e8bc003879e042a96fd67a3ba5934eadb6536bef4db" +"checksum thiserror-impl 1.0.11 (registry+https://github.com/rust-lang/crates.io-index)" = "a7b51e1fbc44b5a0840be594fbc0f960be09050f2617e61e6aa43bef97cd3ef4" "checksum thread_local 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)" = "c6b53e329000edc2b34dbe8545fd20e55a333362d0a321909685a19bd28c3f1b" "checksum threadpool 1.7.1 (registry+https://github.com/rust-lang/crates.io-index)" = "e2f0c90a5f3459330ac8bc0d2f879c693bb7a2f59689c1083fc4ef83834da865" "checksum thrift_codec 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "8fb61fb3d0a0af14949f3a6949b2639112e13226647112824f4d081533f9b1a8" @@ -5731,7 +5713,7 @@ dependencies = [ "checksum tokio-executor 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)" = "fb2d1b8f4548dbf5e1f7818512e9c406860678f29c300cdf0ebac72d1a3a1671" "checksum tokio-fs 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)" = "297a1206e0ca6302a0eed35b700d292b275256f596e2f3fea7729d5e629b6ff4" "checksum tokio-io 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)" = "57fc868aae093479e3131e3d165c93b1c7474109d13c90ec0dda2a1bbfff0674" -"checksum tokio-macros 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)" = "f4b1e7ed7d5d4c2af3d999904b0eebe76544897cdbfb2b9684bed2174ab20f7c" +"checksum tokio-macros 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)" = "f0c3acc6aa564495a0f2e1d59fab677cd7f81a19994cfc7f3ad0e64301560389" "checksum tokio-process 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)" = "382d90f43fa31caebe5d3bc6cfd854963394fff3b8cb59d5146607aaae7e7e43" "checksum tokio-reactor 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)" = "09bc590ec4ba8ba87652da2068d150dcada2cfa2e07faae270a5e0409aa51351" "checksum tokio-signal 0.2.9 (registry+https://github.com/rust-lang/crates.io-index)" = "d0c34c6e548f101053321cba3da7cbb87a610b85555884c41b07da2eb91aff12" diff --git a/crates/cli/Cargo.toml b/crates/cli/Cargo.toml index 8164fbf259..03e5ac8c72 100644 --- a/crates/cli/Cargo.toml +++ b/crates/cli/Cargo.toml @@ -24,8 +24,8 @@ in_stream = { version = "=0.0.43-alpha3", path = "../in_stream" } url2 = "=0.0.4" lib3h_sodium = "=0.0.38" holochain_json_api = "=0.0.23" -holochain_persistence_api = "=0.0.17" -holochain_persistence_file = "=0.0.17" +holochain_persistence_api = { git = "https://github.com/holochain/holochain-persistence", branch = "transactional" } +holochain_persistence_file = { git = "https://github.com/holochain/holochain-persistence", branch = "transactional" } holochain_wasm_utils = { path = "../wasm_utils" } crossbeam-channel = "=0.3.8" structopt = "=0.3.3" @@ -45,7 +45,7 @@ rustyline = "=5.0.0" json-patch = "=0.2.2" reqwest = "=0.9.11" tempfile = "=3.0.7" -lib3h_protocol = "=0.0.38" +lib3h_protocol = { git = "https://github.com/holochain/lib3h", branch = "transactional" } tar = "=0.4.26" flate2 = "=1.0.12" log = "=0.4.8" diff --git a/crates/cli/src/cli/chain_log.rs b/crates/cli/src/cli/chain_log.rs index 86b0cdb59e..d77c451785 100644 --- a/crates/cli/src/cli/chain_log.rs +++ b/crates/cli/src/cli/chain_log.rs @@ -8,9 +8,7 @@ use holochain_core::{ content_store::GetContent, }; use holochain_core_types::{chain_header::ChainHeader, entry::Entry}; -use holochain_locksmith::RwLock; use holochain_persistence_api::cas::content::Address; -use holochain_persistence_file::cas::file::FilesystemStorage; use std::{fs, path::PathBuf}; // TODO: use system-agnostic default path @@ -21,10 +19,13 @@ pub fn chain_log(storage_path: Option, instance_id: String) -> DefaultR let storage_path = storage_path.ok_or_else(|| { format_err!("Please specify the path to CAS storage with the --path option.") })?; - let cas_path = storage_path.join(instance_id).join("cas"); - let chain_store = ChainStore::new(std::sync::Arc::new(RwLock::new( - FilesystemStorage::new(cas_path.clone()).expect("Could not create chain store"), - ))); + let cas_path = storage_path.join(instance_id.clone()).join("cas"); + let eav_path = storage_path.join(instance_id).join("eav"); + + let chain_store = ChainStore::new(std::sync::Arc::new( + holochain_persistence_file::txn::new_manager(cas_path.clone(), eav_path) + .expect("Could not create chain store"), + )); let agent = chain_store .get_raw(&Address::from("AgentState"))? diff --git a/crates/cli/src/main.rs b/crates/cli/src/main.rs index b01bce5ba5..eddd2d44a4 100755 --- a/crates/cli/src/main.rs +++ b/crates/cli/src/main.rs @@ -5,10 +5,8 @@ extern crate holochain_conductor_lib; extern crate holochain_core; extern crate holochain_core_types; extern crate holochain_json_api; -extern crate holochain_locksmith; extern crate holochain_net; extern crate holochain_persistence_api; -extern crate holochain_persistence_file; extern crate json_patch; extern crate lib3h_crypto_api; extern crate lib3h_protocol; diff --git a/crates/conductor_lib/Cargo.toml b/crates/conductor_lib/Cargo.toml index 1a13bdbd3d..ab9f0d75d4 100644 --- a/crates/conductor_lib/Cargo.toml +++ b/crates/conductor_lib/Cargo.toml @@ -14,18 +14,18 @@ holochain_core_types = { version = "=0.0.43-alpha3", path = "../core_types" } holochain_locksmith = { version = "=0.0.43-alpha3", path = "../locksmith" } holochain_json_derive = "=0.0.23" holochain_json_api = "=0.0.23" -holochain_persistence_api = "=0.0.17" -holochain_persistence_mem = "=0.0.17" -holochain_persistence_file = "=0.0.17" -holochain_persistence_pickle = "=0.0.17" -holochain_persistence_lmdb = "=0.0.17" +holochain_persistence_api = { git = "https://github.com/holochain/holochain-persistence", branch = "transactional" } +holochain_persistence_mem = { git = "https://github.com/holochain/holochain-persistence", branch = "transactional" } +holochain_persistence_file = { git = "https://github.com/holochain/holochain-persistence", branch = "transactional" } +holochain_persistence_pickle = { git = "https://github.com/holochain/holochain-persistence", branch = "transactional" } +holochain_persistence_lmdb = { git = "https://github.com/holochain/holochain-persistence", branch = "transactional" } holochain_common = { version = "=0.0.43-alpha3", path = "../common" } holochain_dpki = { version = "=0.0.43-alpha3", path = "../dpki" } holochain_net = { version = "=0.0.43-alpha3", path = "../net" } holochain_tracing = "=0.0.19" holochain_tracing_macros = "=0.0.19" -lib3h = "=0.0.38" -lib3h_sodium = "=0.0.38" +lib3h = { git = "https://github.com/holochain/lib3h", branch = "transactional" } +lib3h_sodium = { git = "https://github.com/holochain/lib3h", branch = "transactional" } holochain_metrics = { version = "=0.0.43-alpha3", path = "../metrics" } chrono = "=0.4.6" serde = "=1.0.104" @@ -54,8 +54,8 @@ log = "=0.4.8" holochain_logging = "=0.0.7" nickel = "=0.11.0" url = { version = "=2.1.0", features = ["serde"] } -snowflake = "=1.3.0" newrelic="0.2" + [dev-dependencies] test_utils = { version = "=0.0.43-alpha3", path = "../../test_utils" } tempfile = "=3.0.7" diff --git a/crates/conductor_lib/src/conductor/admin.rs b/crates/conductor_lib/src/conductor/admin.rs index effd6b1bf2..a5efbcef67 100644 --- a/crates/conductor_lib/src/conductor/admin.rs +++ b/crates/conductor_lib/src/conductor/admin.rs @@ -219,6 +219,7 @@ impl ConductorAdmin for Conductor { None | Some("lmdb") => StorageConfiguration::Lmdb { path: storage_path, initial_mmap_bytes: None, + staging_path_prefix: None, }, Some(s) => { return Err(HolochainError::ConfigError(format!( diff --git a/crates/conductor_lib/src/conductor/base.rs b/crates/conductor_lib/src/conductor/base.rs index 74204e60e9..1bac25a7e4 100644 --- a/crates/conductor_lib/src/conductor/base.rs +++ b/crates/conductor_lib/src/conductor/base.rs @@ -866,10 +866,10 @@ impl Conductor { format!("Error creating context: {}", hc_err.to_string()) })? } - StorageConfiguration::Lmdb { path, initial_mmap_bytes } => { + StorageConfiguration::Lmdb { path, initial_mmap_bytes, staging_path_prefix } => { context_builder = context_builder - .with_lmdb_storage(path, initial_mmap_bytes) + .with_lmdb_storage(path, staging_path_prefix, initial_mmap_bytes) .map_err(|hc_err| { format!("Error creating context: {}", hc_err.to_string()) })? diff --git a/crates/conductor_lib/src/config.rs b/crates/conductor_lib/src/config.rs index fd018e87a2..fc86934fa2 100644 --- a/crates/conductor_lib/src/config.rs +++ b/crates/conductor_lib/src/config.rs @@ -741,6 +741,7 @@ pub enum StorageConfiguration { Lmdb { path: String, initial_mmap_bytes: Option, + staging_path_prefix: Option, }, } diff --git a/crates/conductor_lib/src/context_builder.rs b/crates/conductor_lib/src/context_builder.rs index 75e991ee7d..8988954614 100644 --- a/crates/conductor_lib/src/context_builder.rs +++ b/crates/conductor_lib/src/context_builder.rs @@ -2,13 +2,7 @@ use holochain_core::{context::Context, persister::SimplePersister, signal::Signa use holochain_core_types::{agent::AgentId, eav::Attribute, error::HolochainError}; use holochain_locksmith::RwLock; use holochain_net::p2p_config::P2pConfig; -use holochain_persistence_api::{ - cas::storage::ContentAddressableStorage, eav::EntityAttributeValueStorage, -}; -use holochain_persistence_file::{cas::file::FilesystemStorage, eav::file::EavFileStorage}; -use holochain_persistence_lmdb::{cas::lmdb::LmdbStorage, eav::lmdb::EavLmdbStorage}; -use holochain_persistence_mem::{cas::memory::MemoryStorage, eav::memory::EavMemoryStorage}; -use holochain_persistence_pickle::{cas::pickle::PickleStorage, eav::pickle::EavPickleStorage}; +use holochain_persistence_api::txn::PersistenceManagerDyn; use holochain_tracing; use jsonrpc_core::IoHandler; @@ -34,9 +28,7 @@ pub struct ContextBuilder { // Persister is currently set to a reasonable default in spawn(). // TODO: add with_persister() function to ContextBuilder. //persister: Option>>, - chain_storage: Option>>, - dht_storage: Option>>, - eav_storage: Option>>>, + persistence_manager: Option>>, p2p_config: Option, conductor_api: Option>>, signal_tx: Option, @@ -50,9 +42,7 @@ impl ContextBuilder { ContextBuilder { instance_name: None, agent_id: None, - chain_storage: None, - dht_storage: None, - eav_storage: None, + persistence_manager: None, p2p_config: None, conductor_api: None, signal_tx: None, @@ -71,12 +61,8 @@ impl ContextBuilder { /// Sets all three storages, chain, DHT and EAV storage, to transient memory implementations. /// Chain and DHT storages get set to the same memory CAS. pub fn with_memory_storage(mut self) -> Self { - let cas = Arc::new(RwLock::new(MemoryStorage::new())); - let eav = //Arc>> = - Arc::new(RwLock::new(EavMemoryStorage::new())); - self.chain_storage = Some(cas.clone()); - self.dht_storage = Some(cas); - self.eav_storage = Some(eav); + let persistence_manager = Arc::new(holochain_persistence_mem::txn::new_manager()); + self.persistence_manager = Some(persistence_manager); self } @@ -90,12 +76,10 @@ impl ContextBuilder { fs::create_dir_all(&cas_path)?; fs::create_dir_all(&eav_path)?; - let file_storage = Arc::new(RwLock::new(FilesystemStorage::new(&cas_path)?)); - let eav_storage: Arc>> = - Arc::new(RwLock::new(EavFileStorage::new(eav_path)?)); - self.chain_storage = Some(file_storage.clone()); - self.dht_storage = Some(file_storage); - self.eav_storage = Some(eav_storage); + let persistence_manager: Arc> = + Arc::new(holochain_persistence_file::txn::new_manager(cas_path, eav_path).unwrap()); + + self.persistence_manager = Some(persistence_manager); Ok(self) } @@ -108,37 +92,34 @@ impl ContextBuilder { let eav_path = base_path.join("eav"); fs::create_dir_all(&cas_path)?; fs::create_dir_all(&eav_path)?; - - let file_storage = Arc::new(RwLock::new(PickleStorage::new(&cas_path))); - let eav_storage = Arc::new(RwLock::new(EavPickleStorage::new(eav_path))); - self.chain_storage = Some(file_storage.clone()); - self.dht_storage = Some(file_storage); - self.eav_storage = Some(eav_storage); + let persistence_manager: Arc> = Arc::new( + holochain_persistence_pickle::txn::new_manager(cas_path, eav_path), + ); + self.persistence_manager = Some(persistence_manager); Ok(self) } /// Sets all three storages, chain, DHT and EAV storage, to persistent lmdb based implementations. /// Chain and DHT storages get set to the same pikcle CAS. /// Returns an error if no lmdb storage could be spawned on the given path. - pub fn with_lmdb_storage>( + pub fn with_lmdb_storage, P2: AsRef + Clone>( mut self, path: P, + staging_path_prefix: Option, initial_mmap_bytes: Option, ) -> Result { - let base_path: PathBuf = path.as_ref().into(); - let cas_path = base_path.join("cas"); - let eav_path = base_path.join("eav"); - fs::create_dir_all(&cas_path)?; - fs::create_dir_all(&eav_path)?; + let env_path: PathBuf = path.as_ref().into(); - let cas_storage = Arc::new(RwLock::new(LmdbStorage::new(&cas_path, initial_mmap_bytes))); - let eav_storage = Arc::new(RwLock::new(EavLmdbStorage::new( - eav_path, - initial_mmap_bytes, - ))); - self.chain_storage = Some(cas_storage.clone()); - self.dht_storage = Some(cas_storage); - self.eav_storage = Some(eav_storage); + let persistence_manager: Arc> = + Arc::new(holochain_persistence_lmdb::txn::new_manager( + env_path, + staging_path_prefix, + initial_mmap_bytes, + None, + None, + None, + )); + self.persistence_manager = Some(persistence_manager); Ok(self) } @@ -199,15 +180,9 @@ impl ContextBuilder { /// Defaults to memory storages, an in-memory network config and a fake agent called "alice". /// The persister gets set to SimplePersister based on the chain storage. pub fn spawn(self) -> Context { - let chain_storage = self - .chain_storage - .unwrap_or_else(|| Arc::new(RwLock::new(MemoryStorage::new()))); - let dht_storage = self - .dht_storage - .unwrap_or_else(|| Arc::new(RwLock::new(MemoryStorage::new()))); - let eav_storage = self - .eav_storage - .unwrap_or_else(|| Arc::new(RwLock::new(EavMemoryStorage::new()))); + let persistence_manager = self + .persistence_manager + .unwrap_or_else(|| Arc::new(holochain_persistence_mem::txn::new_manager())); let metric_publisher = self .metric_publisher .unwrap_or_else(|| Arc::new(RwLock::new(DefaultMetricPublisher::default()))); @@ -218,10 +193,10 @@ impl ContextBuilder { .unwrap_or_else(|| "Anonymous-instance".to_string()), self.agent_id .unwrap_or_else(|| AgentId::generate_fake("alice")), - Arc::new(RwLock::new(SimplePersister::new(chain_storage.clone()))), - chain_storage, - dht_storage, - eav_storage, + Arc::new(RwLock::new(SimplePersister::new( + persistence_manager.clone(), + ))), + persistence_manager, // TODO BLOCKER pass a peer list here? self.p2p_config .unwrap_or_else(P2pConfig::new_with_unique_memory_backend), diff --git a/crates/conductor_lib/src/holochain.rs b/crates/conductor_lib/src/holochain.rs index ca787dcf49..9ebd0492da 100644 --- a/crates/conductor_lib/src/holochain.rs +++ b/crates/conductor_lib/src/holochain.rs @@ -179,7 +179,7 @@ impl Holochain { } pub fn load(context: Arc) -> Result { - let persister = SimplePersister::new(context.dht_storage.clone()); + let persister = SimplePersister::new(context.persistence_manager.clone()); let loaded_state = persister.load(context.clone())?.ok_or_else(|| { HolochainError::ErrorGeneric("State could not be loaded due to NoneError".to_string()) })?; diff --git a/crates/conductor_lib/test-bridge-caller/Cargo.toml b/crates/conductor_lib/test-bridge-caller/Cargo.toml index e4e2f0f897..93425395e5 100644 --- a/crates/conductor_lib/test-bridge-caller/Cargo.toml +++ b/crates/conductor_lib/test-bridge-caller/Cargo.toml @@ -18,4 +18,4 @@ serde_json = { version = "=1.0.47", features = ["preserve_order"] } hdk = { path = "../../hdk" } serde_derive = "=1.0.104" holochain_json_derive = "=0.0.23" -holochain_persistence_api = "=0.0.17" +holochain_persistence_api = { git = "https://github.com/holochain/holochain-persistence", branch = "transactional" } diff --git a/crates/core/Cargo.toml b/crates/core/Cargo.toml index 8bf7d16e5f..eaf98c8028 100644 --- a/crates/core/Cargo.toml +++ b/crates/core/Cargo.toml @@ -25,17 +25,17 @@ num-traits = "=0.2.6" num-derive = "=0.2.4" toml = "=0.5.0" futures = { version = "=0.3.2", features = [ "thread-pool" ] } +lib3h_protocol = { git = "https://github.com/holochain/lib3h", branch = "transactional" } +lib3h_sodium = { git = "https://github.com/holochain/lib3h", branch = "transactional" } holochain_net = { version = "=0.0.43-alpha3", path = "../net" } holochain_wasm_utils = { version = "=0.0.43-alpha3", path = "../wasm_utils" } holochain_common = { version = "=0.0.43-alpha3", path = "../common" } holochain_conductor_lib_api = { version = "=0.0.43-alpha3", path = "../conductor_api" } -lib3h_protocol = "=0.0.38" -lib3h_sodium = "=0.0.38" holochain_json_derive = "=0.0.23" holochain_json_api = "=0.0.23" -holochain_persistence_api = "=0.0.17" -holochain_persistence_file = "=0.0.17" -holochain_persistence_mem = "=0.0.17" +holochain_persistence_api = { git = "https://github.com/holochain/holochain-persistence", branch = "transactional" } +holochain_persistence_file = { git = "https://github.com/holochain/holochain-persistence", branch = "transactional" } +holochain_persistence_mem = { git = "https://github.com/holochain/holochain-persistence", branch = "transactional" } holochain_core_types = { version = "=0.0.43-alpha3", path = "../core_types" } holochain_dpki = { version = "=0.0.43-alpha3", path = "../dpki" } holochain_locksmith = { version = "=0.0.43-alpha3", path = "../locksmith" } @@ -65,4 +65,4 @@ newrelic="0.2" wabt = "=0.7.4" test_utils = { version = "=0.0.43-alpha3", path = "../../test_utils" } tempfile = "=3.0.7" -holochain_persistence_lmdb = "=0.0.17" +holochain_persistence_lmdb = { git = "https://github.com/holochain/holochain-persistence", branch = "transactional" } diff --git a/crates/core/src/agent/chain_store.rs b/crates/core/src/agent/chain_store.rs index f88696f7db..0a54e95b15 100644 --- a/crates/core/src/agent/chain_store.rs +++ b/crates/core/src/agent/chain_store.rs @@ -1,35 +1,32 @@ -use crate::{ - content_store::{AddContent, GetContent}, - NEW_RELIC_LICENSE_KEY, -}; +use crate::{content_store::GetContent, NEW_RELIC_LICENSE_KEY}; use globset::{GlobBuilder, GlobSetBuilder}; use holochain_core_types::{ chain_header::ChainHeader, + eav::Attribute, entry::entry_type::EntryType, error::{ HcResult, RibosomeErrorCode::{self, *}, }, }; -use holochain_locksmith::RwLock; -use holochain_persistence_api::cas::{ - content::{Address, AddressableContent, Content}, - storage::ContentAddressableStorage, +use holochain_persistence_api::{ + cas::content::{Address, AddressableContent, Content}, + error::PersistenceResult, + txn::{Cursor, CursorProviderDyn, CursorRwDyn, PersistenceManagerDyn}, }; + use std::{str::FromStr, sync::Arc}; #[derive(Debug, Clone)] pub struct ChainStore { // Storages holding local shard data - content_storage: Arc>, + persistence_manager: Arc>, } impl PartialEq for ChainStore { fn eq(&self, other: &ChainStore) -> bool { - let storage_lock = &self.content_storage.clone(); - let storage = &*storage_lock.read().unwrap(); - let other_storage_lock = &other.content_storage.clone(); - let other_storage = &*other_storage_lock.read().unwrap(); + let storage = &self.persistence_manager; + let other_storage = &other.persistence_manager; storage.get_id() == other_storage.get_id() } } @@ -49,12 +46,14 @@ pub enum ChainStoreQueryResult { #[holochain_tracing_macros::newrelic_autotrace(HOLOCHAIN_CORE)] impl ChainStore { - pub fn new(content_storage: Arc>) -> Self { - ChainStore { content_storage } + pub fn new(persistence_manager: Arc>) -> Self { + ChainStore { + persistence_manager, + } } pub fn iter(&self, start_chain_header: &Option) -> ChainStoreIterator { - ChainStoreIterator::new(self.content_storage.clone(), start_chain_header.clone()) + ChainStoreIterator::new(self.persistence_manager.clone(), start_chain_header.clone()) } /// Scans the local chain for the first Entry of EntryType, and then creates a @@ -66,7 +65,7 @@ impl ChainStore { entry_type: &EntryType, ) -> ChainStoreTypeIterator { ChainStoreTypeIterator::new( - self.content_storage.clone(), + self.persistence_manager.clone(), self.iter(start_chain_header) .find(|chain_header| chain_header.entry_type() == entry_type), ) @@ -190,15 +189,7 @@ impl ChainStore { impl GetContent for ChainStore { fn get_raw(&self, address: &Address) -> HcResult> { - Ok((*self.content_storage.read().unwrap()).fetch(address)?) - } -} - -impl AddContent for ChainStore { - fn add(&mut self, content: &T) -> HcResult<()> { - (*self.content_storage.write().unwrap()) - .add(content) - .map_err(|e| e.into()) + Ok((*self.persistence_manager.cas()).fetch(address)?) } } @@ -209,17 +200,25 @@ impl AddContent for ChainStore { /// Locates the next Entry by following ChainHeader's .link /// pub struct ChainStoreIterator { - content_storage: Arc>, + persistence_manager: Arc>, current: Option, } +impl CursorProviderDyn for ChainStore { + fn create_cursor(&self) -> PersistenceResult>> { + self.persistence_manager.create_cursor() + } + fn create_cursor_rw(&self) -> PersistenceResult>> { + self.persistence_manager.create_cursor_rw() + } +} impl ChainStoreIterator { pub fn new( - content_storage: Arc>, + persistence_manager: Arc>, current: Option, ) -> ChainStoreIterator { ChainStoreIterator { - content_storage, + persistence_manager, current, } } @@ -233,7 +232,7 @@ impl Iterator for ChainStoreIterator { /// May panic if there is an underlying error in the table fn next(&mut self) -> Option { let previous = self.current.take(); - let storage = &self.content_storage.clone(); + let storage = &self.persistence_manager.cas(); self.current = previous .as_ref() .and_then(|chain_header| chain_header.link()) @@ -242,8 +241,6 @@ impl Iterator for ChainStoreIterator { // @see https://github.com/holochain/holochain-rust/issues/146 .and_then(|linked_chain_header_address| { storage - .read() - .unwrap() .fetch(linked_chain_header_address) .expect("failed to fetch from CAS") .map(|content| { @@ -265,17 +262,17 @@ impl Iterator for ChainStoreIterator { /// multiple EntryType queries. /// pub struct ChainStoreTypeIterator { - content_storage: Arc>, + persistence_manager: Arc>, current: Option, } impl ChainStoreTypeIterator { pub fn new( - content_storage: Arc>, + persistence_manager: Arc>, current: Option, ) -> ChainStoreTypeIterator { ChainStoreTypeIterator { - content_storage, + persistence_manager, current, } } @@ -288,7 +285,7 @@ impl Iterator for ChainStoreTypeIterator { /// May panic if there is an underlying error in the table fn next(&mut self) -> Option { let previous = self.current.take(); - let storage = &self.content_storage.clone(); + let storage = &self.persistence_manager.cas(); self.current = previous .as_ref() .and_then(|chain_header| chain_header.link_same_type()) @@ -297,8 +294,6 @@ impl Iterator for ChainStoreTypeIterator { // @see https://github.com/holochain/holochain-rust/issues/146 .and_then(|linked_chain_header_address| { storage - .read() - .unwrap() .fetch(linked_chain_header_address) .expect("failed to fetch from CAS") .map(|content| { @@ -312,7 +307,6 @@ impl Iterator for ChainStoreTypeIterator { #[cfg(test)] pub mod tests { - use self::tempfile::tempdir; use crate::agent::chain_store::{ChainStore, ChainStoreQueryOptions, ChainStoreQueryResult}; use holochain_core_types::{ chain_header::{test_chain_header, test_provenances, ChainHeader}, @@ -323,16 +317,12 @@ pub mod tests { time::test_iso_8601, }; use holochain_json_api::json::{JsonString, RawString}; - use holochain_locksmith::RwLock; use holochain_persistence_api::cas::content::AddressableContent; - use holochain_persistence_file::cas::file::FilesystemStorage; - use tempfile; pub fn test_chain_store() -> ChainStore { - ChainStore::new(std::sync::Arc::new(RwLock::new( - FilesystemStorage::new(tempdir().unwrap().path().to_str().unwrap()) - .expect("could not create chain store"), - ))) + ChainStore::new(std::sync::Arc::new( + holochain_persistence_file::txn::default_manager(), + )) } #[test] @@ -352,14 +342,14 @@ pub mod tests { &test_iso_8601(), ); - let storage = chain_store.content_storage.clone(); - (*storage.write().unwrap()) + let storage = chain_store.persistence_manager.create_cursor_rw().unwrap(); + storage .add(&chain_header_a) .expect("could not add header to cas"); - (*storage.write().unwrap()) + storage .add(&chain_header_b) .expect("could not add header to cas"); - + storage.commit().unwrap(); let expected = vec![chain_header_b.clone(), chain_header_a.clone()]; let mut found = vec![]; for chain_header in chain_store.iter(&Some(chain_header_b)) { @@ -405,8 +395,8 @@ pub mod tests { ); for chain_header in vec![&chain_header_a, &chain_header_b, &chain_header_c] { - let storage = chain_store.content_storage.clone(); - (*storage.write().unwrap()) + let storage = chain_store.persistence_manager.cas(); + storage .add(chain_header) .expect("could not add header to cas"); } @@ -502,23 +492,23 @@ pub mod tests { &test_iso_8601(), ); - let storage = chain_store.content_storage.clone(); - (*storage.write().unwrap()) + let storage = chain_store.persistence_manager.create_cursor_rw().unwrap(); + storage .add(&chain_header_a) .expect("could not add header to cas"); - (*storage.write().unwrap()) + storage .add(&chain_header_b) .expect("could not add header to cas"); - (*storage.write().unwrap()) + storage .add(&chain_header_c) .expect("could not add header to cas"); - (*storage.write().unwrap()) + storage .add(&chain_header_d) .expect("could not add header to cas"); - (*storage.write().unwrap()) + storage .add(&chain_header_e) .expect("could not add header to cas"); - + storage.commit().unwrap(); // First, lets see if we can find the EntryType "testEntryTypeB" Entries let found = match chain_store .query( @@ -665,15 +655,18 @@ pub mod tests { &None, &test_iso_8601(), ); - (*storage.write().unwrap()) + + let storage = chain_store.persistence_manager.create_cursor_rw().unwrap(); + storage .add(&chain_header_f) .expect("could not add header to cas"); - (*storage.write().unwrap()) + storage .add(&chain_header_g) .expect("could not add header to cas"); - (*storage.write().unwrap()) + storage .add(&chain_header_h) .expect("could not add header to cas"); + storage.commit().unwrap(); // Multiple complex globs. The leading '**/' matches 0 or more leading .../ segments, so returns let found = match chain_store @@ -729,9 +722,12 @@ pub mod tests { &None, &test_iso_8601(), ); - (*storage.write().unwrap()) + + let storage = chain_store.persistence_manager.create_cursor_rw().unwrap(); + storage .add(&chain_header_i) .expect("could not add header to cas"); + storage.commit().unwrap(); // Find EntryTypes which are/not System (start with '%'), and end in 'e' let found = match chain_store diff --git a/crates/core/src/agent/state.rs b/crates/core/src/agent/state.rs index 380ae2e239..42811b0a83 100644 --- a/crates/core/src/agent/state.rs +++ b/crates/core/src/agent/state.rs @@ -1,16 +1,11 @@ use crate::{ action::{Action, ActionWrapper, AgentReduceFn}, agent::chain_store::{ChainStore, ChainStoreIterator}, + content_store::GetContent, network::entry_with_header::EntryWithHeader, - state::State, + state::{ActionResponse, State, StateWrapper, ACTION_PRUNE_MS}, NEW_RELIC_LICENSE_KEY, }; -use holochain_persistence_api::cas::content::{Address, AddressableContent, Content}; - -use crate::{ - content_store::{AddContent, GetContent}, - state::{ActionResponse, StateWrapper, ACTION_PRUNE_MS}, -}; use bitflags::_core::time::Duration; use holochain_core_types::{ agent::AgentId, @@ -24,6 +19,10 @@ use holochain_json_api::{ error::{JsonError, JsonResult}, json::JsonString, }; +use holochain_persistence_api::{ + cas::content::{Address, AddressableContent, Content}, + txn::CursorProviderDyn, +}; use holochain_wasm_utils::api_serialization::crypto::CryptoMethod; use im::HashMap; use serde_json; @@ -283,8 +282,10 @@ fn reduce_commit_entry( provenances, ) .and_then(|chain_header| { - agent_state.chain_store.add(entry)?; - agent_state.chain_store.add(&chain_header)?; + let cursor = agent_state.chain_store.create_cursor_rw()?; + cursor.add(entry)?; + cursor.add(&chain_header)?; + cursor.commit()?; Ok((chain_header, entry.address())) }) .and_then(|(chain_header, address)| { diff --git a/crates/core/src/content_store.rs b/crates/core/src/content_store.rs index daae1e8306..c1e9451857 100644 --- a/crates/core/src/content_store.rs +++ b/crates/core/src/content_store.rs @@ -1,5 +1,8 @@ -use holochain_core_types::{entry::Entry, error::HcResult}; -use holochain_persistence_api::cas::content::{Address, AddressableContent, Content}; +use holochain_core_types::{eav::Attribute, entry::Entry, error::HcResult}; +use holochain_persistence_api::{ + cas::content::{Address, AddressableContent, Content}, + txn::{Cursor, CursorRwDyn}, +}; pub trait GetContent { /// Return the content at this address, do not attempt to convert to an entry @@ -20,6 +23,14 @@ pub trait GetContent { } } -pub trait AddContent { - fn add(&mut self, content: &T) -> HcResult<()>; +impl GetContent for dyn Cursor { + fn get_raw(&self, address: &Address) -> HcResult> { + Ok(self.fetch(address)?) + } +} + +impl GetContent for dyn CursorRwDyn { + fn get_raw(&self, address: &Address) -> HcResult> { + Ok(self.fetch(address)?) + } } diff --git a/crates/core/src/context.rs b/crates/core/src/context.rs index 13157aab27..fe3ce04dbe 100644 --- a/crates/core/src/context.rs +++ b/crates/core/src/context.rs @@ -36,6 +36,7 @@ use holochain_persistence_api::{ storage::ContentAddressableStorage, }, eav::EntityAttributeValueStorage, + txn::PersistenceManagerDyn, }; use holochain_tracing as ht; use jsonrpc_core::{self, IoHandler}; @@ -95,9 +96,7 @@ pub struct Context { state: Option>>, pub action_channel: Option, pub observer_channel: Option>, - pub chain_storage: Arc>, - pub dht_storage: Arc>, - pub eav_storage: Arc>>, + pub persistence_manager: Arc>, pub p2p_config: P2pConfig, pub conductor_api: ConductorApi, pub(crate) signal_tx: Option>, @@ -142,9 +141,7 @@ impl Context { instance_name: &str, agent_id: AgentId, persister: Arc>, - chain_storage: Arc>, - dht_storage: Arc>, - eav: Arc>>, + persistence_manager: Arc>, p2p_config: P2pConfig, conductor_api: Option>>, signal_tx: Option, @@ -160,9 +157,7 @@ impl Context { action_channel: None, signal_tx, observer_channel: None, - chain_storage, - dht_storage, - eav_storage: eav, + persistence_manager, p2p_config, conductor_api: ConductorApi::new(Self::test_check_conductor_api( conductor_api, @@ -182,11 +177,10 @@ impl Context { instance_name: &str, agent_id: AgentId, persister: Arc>, + persistence_manager: Arc>, action_channel: Option, signal_tx: Option>, observer_channel: Option>, - cas: Arc>, - eav: Arc>>, p2p_config: P2pConfig, state_dump_logging: bool, metric_publisher: Arc>, @@ -196,13 +190,11 @@ impl Context { instance_name: instance_name.to_owned(), agent_id: agent_id.clone(), persister, + persistence_manager, state: None, action_channel, signal_tx, observer_channel, - chain_storage: cas.clone(), - dht_storage: cas, - eav_storage: eav, p2p_config, conductor_api: ConductorApi::new(Self::test_check_conductor_api(None, agent_id)), instance_is_alive: Arc::new(AtomicBool::new(true)), @@ -439,6 +431,18 @@ impl Context { offline: false, }) } + + pub fn chain_storage(&self) -> Arc { + self.persistence_manager.cas() + } + + pub fn dht_storage(&self) -> Arc { + self.persistence_manager.cas() + } + + pub fn eav_storage(&self) -> Arc> { + self.persistence_manager.eav() + } } #[autotrace] @@ -472,32 +476,25 @@ pub fn test_memory_network_config(network_name: Option<&str>) -> P2pConfig { #[cfg(test)] pub mod tests { - use self::tempfile::tempdir; use super::*; use crate::persister::SimplePersister; use holochain_core_types::agent::AgentId; use holochain_locksmith::RwLock; - use holochain_persistence_file::{cas::file::FilesystemStorage, eav::file::EavFileStorage}; use std::sync::Arc; - use tempfile; #[test] fn context_log_macro_test_from_context() { use crate::*; - let file_storage = Arc::new(RwLock::new( - FilesystemStorage::new(tempdir().unwrap().path().to_str().unwrap()).unwrap(), - )); + let persistence_manager = Arc::new(holochain_persistence_file::txn::default_manager()); + let ctx = Context::new( "LOG-TEST-ID", AgentId::generate_fake("Bilbo"), - Arc::new(RwLock::new(SimplePersister::new(file_storage.clone()))), - file_storage.clone(), - file_storage.clone(), - Arc::new(RwLock::new( - EavFileStorage::new(tempdir().unwrap().path().to_str().unwrap().to_string()) - .unwrap(), - )), + Arc::new(RwLock::new(SimplePersister::new( + persistence_manager.clone(), + ))), + persistence_manager.clone(), P2pConfig::new_with_unique_memory_backend(), None, None, diff --git a/crates/core/src/dht/dht_inner_reducers.rs b/crates/core/src/dht/dht_inner_reducers.rs index ac55d9dee4..c0477d0d3c 100644 --- a/crates/core/src/dht/dht_inner_reducers.rs +++ b/crates/core/src/dht/dht_inner_reducers.rs @@ -8,10 +8,7 @@ /// It is up to the calling reducer function whether the new state object should be kept and what to do with the return value /// use crate::dht::dht_store::DhtStore; -use crate::{ - content_store::{AddContent, GetContent}, - NEW_RELIC_LICENSE_KEY, -}; +use crate::{content_store::GetContent, NEW_RELIC_LICENSE_KEY}; use holochain_core_types::{ crud_status::{create_crud_link_eav, create_crud_status_eav, CrudStatus}, eav::{Attribute, EaviQuery, EntityAttributeValueIndex}, @@ -23,6 +20,7 @@ use holochain_core_types::{ use holochain_persistence_api::{ cas::content::{Address, AddressableContent}, eav::IndexFilter, + txn::CursorProviderDyn, }; use chrono::{DateTime, FixedOffset}; @@ -36,12 +34,25 @@ pub(crate) enum LinkModification { /// Used as the inner function for both commit and hold reducers #[holochain_tracing_macros::newrelic_autotrace(HOLOCHAIN_CORE)] pub(crate) fn reduce_store_entry_inner(store: &mut DhtStore, entry: &Entry) -> HcResult<()> { - match store.add(entry) { - Ok(()) => create_crud_status_eav(&entry.address(), CrudStatus::Live).map(|status_eav| { - store.add_eavi(&status_eav).map(|_| ()).map_err(|e| { - format!("err/dht: dht::reduce_store_entry_inner() FAILED {:?}", e).into() + let cursor = store.create_cursor_rw()?; + match cursor.add(entry) { + Ok(()) => { + let status_eav = create_crud_status_eav(&entry.address(), CrudStatus::Live)?; + cursor.add_eavi(&status_eav).map(|_| ()).map_err(|e| { + let e: HolochainError = + format!("err/dht: dht::reduce_store_entry_inner() FAILED {:?}", e).into(); + e + })?; + cursor.commit().map_err(|e| { + let e: HolochainError = format!( + "err/dht: dht::reduce_store_entry_inner() commit FAILED {:?}", + e + ) + .into(); + e }) - })?, + } + Err(e) => Err(format!("err/dht: dht::reduce_store_entry_inner() FAILED {:?}", e).into()), } } @@ -53,7 +64,8 @@ pub(crate) fn reduce_add_remove_link_inner( address: &Address, link_modification: LinkModification, ) -> HcResult
{ - if store.contains(link.link().base())? { + let cursor = store.create_cursor_rw()?; + if cursor.contains(link.link().base())? { let attr = match link_modification { LinkModification::Add => Attribute::LinkTag( link.link().link_type().to_string(), @@ -71,7 +83,8 @@ pub(crate) fn reduce_add_remove_link_inner( address, link_created_time.timestamp_nanos(), )?; - store.add_eavi(&eav)?; + cursor.add_eavi(&eav)?; + cursor.commit()?; Ok(link.link().base().clone()) } else { Err(HolochainError::ErrorGeneric(String::from( @@ -88,11 +101,12 @@ pub(crate) fn reduce_update_entry_inner( ) -> HcResult
{ // Update crud-status let new_status_eav = create_crud_status_eav(old_address, CrudStatus::Modified)?; - store.add_eavi(&new_status_eav)?; + let cursor = store.create_cursor_rw()?; + cursor.add_eavi(&new_status_eav)?; // add link from old to new let crud_link_eav = create_crud_link_eav(old_address, new_address)?; - store.add_eavi(&crud_link_eav)?; - + cursor.add_eavi(&crud_link_eav)?; + cursor.commit()?; Ok(new_address.clone()) } @@ -102,7 +116,8 @@ pub(crate) fn reduce_remove_entry_inner( latest_deleted_address: &Address, deletion_address: &Address, ) -> HcResult
{ - let entry = store + let cursor = store.create_cursor_rw()?; + let entry = cursor .get(latest_deleted_address)? .ok_or_else(|| HolochainError::ErrorGeneric("trying to remove a missing entry".into()))?; @@ -138,12 +153,14 @@ pub(crate) fn reduce_remove_entry_inner( // Update crud-status let new_status_eav = create_crud_status_eav(latest_deleted_address, CrudStatus::Deleted) .map_err(|_| HolochainError::ErrorGeneric("Could not create eav".into()))?; - store.add_eavi(&new_status_eav)?; + + cursor.add_eavi(&new_status_eav)?; // Update crud-link let crud_link_eav = create_crud_link_eav(latest_deleted_address, deletion_address) .map_err(|_| HolochainError::ErrorGeneric(String::from("Could not create eav")))?; - store.add_eavi(&crud_link_eav)?; + cursor.add_eavi(&crud_link_eav)?; + cursor.commit()?; Ok(latest_deleted_address.clone()) } diff --git a/crates/core/src/dht/dht_reducers.rs b/crates/core/src/dht/dht_reducers.rs index 6472bf97de..8cfabbd9b3 100644 --- a/crates/core/src/dht/dht_reducers.rs +++ b/crates/core/src/dht/dht_reducers.rs @@ -240,7 +240,7 @@ pub mod tests { use crate::{ action::{Action, ActionWrapper}, - content_store::{AddContent, GetContent}, + content_store::GetContent, dht::{ dht_reducers::{ reduce, reduce_hold_aspect, reduce_queue_holding_workflow, @@ -262,7 +262,7 @@ pub mod tests { link::{link_data::LinkData, Link, LinkActionKind}, network::entry_aspect::EntryAspect, }; - use holochain_persistence_api::cas::content::AddressableContent; + use holochain_persistence_api::{cas::content::AddressableContent, txn::CursorProviderDyn}; use std::{sync::Arc, time::SystemTime}; // TODO do this for all crate tests somehow #[allow(dead_code)] @@ -314,7 +314,9 @@ pub mod tests { let store = test_store(context.clone()); let entry = test_entry(); - let _ = (*store.dht()).clone().add(&entry); + let cursor = (*store.dht()).clone().create_cursor_rw().unwrap(); + cursor.add(&entry).unwrap(); + cursor.commit().unwrap(); let test_link = String::from("test_link"); let test_tag = String::from("test-tag"); let link = Link::new( @@ -358,7 +360,9 @@ pub mod tests { let store = test_store(context.clone()); let entry = test_entry(); - let _ = (*store.dht()).clone().add(&entry); + let cursor = (*store.dht()).clone().create_cursor_rw().unwrap(); + cursor.add(&entry).unwrap(); + cursor.commit().unwrap(); let test_link = String::from("test_link"); let test_tag = String::from("test-tag"); let link = Link::new( @@ -552,7 +556,7 @@ pub mod tests { #[test] pub fn test_holding_queue() { let context = test_context("test", None); - let store = DhtStore::new(context.dht_storage.clone(), context.eav_storage.clone()); + let store = DhtStore::new(context.persistence_manager.clone()); assert_eq!(store.queued_holding_workflows().len(), 0); let test_entry = test_entry(); diff --git a/crates/core/src/dht/dht_store.rs b/crates/core/src/dht/dht_store.rs index 27255931da..bf52f872b7 100644 --- a/crates/core/src/dht/dht_store.rs +++ b/crates/core/src/dht/dht_store.rs @@ -1,5 +1,5 @@ use crate::{ - content_store::{AddContent, GetContent}, + content_store::GetContent, dht::{ aspect_map::{AspectMap, AspectMapBare}, pending_validations::{PendingValidationWithTimeout, ValidationTimeout}, @@ -18,13 +18,10 @@ use holochain_core_types::{ }, }; use holochain_json_api::{error::JsonError, json::JsonString}; -use holochain_locksmith::RwLock; use holochain_persistence_api::{ - cas::{ - content::{Address, AddressableContent, Content}, - storage::ContentAddressableStorage, - }, - eav::{EavFilter, EntityAttributeValueStorage, IndexFilter}, + cas::content::{Address, AddressableContent, Content}, + eav::{EavFilter, IndexFilter}, + txn::{Cursor, CursorProviderDyn, CursorRwDyn, PersistenceManagerDyn}, }; use regex::Regex; @@ -44,10 +41,8 @@ use std::{ /// as well as the holding list, i.e. list of all entries held for the DHT. #[derive(Clone, Debug)] pub struct DhtStore { + persistence_manager: Arc>, // Storages holding local shard data - content_storage: Arc>, - meta_storage: Arc>>, - /// All the entry aspects that the network has told us to hold holding_map: AspectMap, @@ -56,14 +51,8 @@ pub struct DhtStore { impl PartialEq for DhtStore { fn eq(&self, other: &DhtStore) -> bool { - let content = &self.content_storage.clone(); - let other_content = &other.content_storage.clone(); - let meta = &self.meta_storage.clone(); - let other_meta = &other.meta_storage.clone(); - self.holding_map == other.holding_map - && (*content.read().unwrap()).get_id() == (*other_content.read().unwrap()).get_id() - && *meta.read().unwrap() == *other_meta.read().unwrap() + && (*self.persistence_manager).get_id() == (*other.persistence_manager).get_id() } } @@ -128,29 +117,32 @@ pub fn create_get_links_eavi_query<'a>( })), )) } +impl CursorProviderDyn for DhtStore { + fn create_cursor(&self) -> PersistenceResult>> { + self.persistence_manager.create_cursor() + } + fn create_cursor_rw(&self) -> PersistenceResult>> { + self.persistence_manager.create_cursor_rw() + } +} #[holochain_tracing_macros::newrelic_autotrace(HOLOCHAIN_CORE)] impl DhtStore { // LifeCycle // ========= - pub fn new( - content_storage: Arc>, - meta_storage: Arc>>, - ) -> Self { + pub fn new(persistence_manager: Arc>) -> Self { DhtStore { - content_storage, - meta_storage, + persistence_manager, holding_map: AspectMap::new(), queued_holding_workflows: VecDeque::new(), } } pub fn new_from_snapshot( - content_storage: Arc>, - meta_storage: Arc>>, + persistence_manager: Arc>, snapshot: DhtStoreSnapshot, ) -> Self { - let mut new_dht_store = Self::new(content_storage, meta_storage); + let mut new_dht_store = Self::new(persistence_manager); new_dht_store.holding_map = snapshot.holding_map.into(); new_dht_store.queued_holding_workflows = snapshot.queued_holding_workflows; new_dht_store @@ -170,7 +162,10 @@ impl DhtStore { configuration: GetLinksQueryConfiguration, ) -> Result, HolochainError> { let get_links_query = create_get_links_eavi_query(address, link_type, tag)?; - let filtered = self.meta_storage.read()?.fetch_eavi(&get_links_query)?; + let filtered = self + .persistence_manager + .eav() + .fetch_eavi(&get_links_query)?; let pagination = configuration.pagination; let filter_with_sort_order: Box> = match configuration.sort_order.unwrap_or_default() { @@ -227,46 +222,51 @@ impl DhtStore { IndexFilter::LatestByAttribute, None, ); - Ok(self.meta_storage.read()?.fetch_eavi(&query)?) + Ok(self.persistence_manager.eav().fetch_eavi(&query)?) } /// Get all headers for an entry by first looking in the DHT meta store /// for header addresses, then resolving them with the DHT CAS - pub fn get_headers(&self, entry_address: Address) -> Result, HolochainError> { - self.meta_storage - .read() - .unwrap() - // fetch all EAV references to chain headers for this entry + pub fn get_headers(&self, entry_address: Address) -> HcResult> { + let cursor: Box> = self.create_cursor()?; + // fetch all EAV references to chain headers for this entry + let eavis = cursor .fetch_eavi(&EaviQuery::new( Some(entry_address).into(), Some(Attribute::EntryHeader).into(), None.into(), IndexFilter::LatestByAttribute, None, - ))? - .into_iter() - // get the header addresses + )) + .map_err(|e| { + let e: HolochainError = format!("Persistence error: {:?}", e).into(); + e + })? + .into_iter(); + + // get the header addresses + let maybe_entries: Vec> = eavis .map(|eavi| eavi.value()) // fetch the header content from CAS - .map(|address| self.get(&address)) + .map(|address| { + let entry: Option = cursor.get(&address)?; + Ok(entry) + }) // rearrange - .collect::>, _>>() - .map(|r| { - r.into_iter() - // ignore None values - .flatten() - .map(|entry| match entry { - Entry::ChainHeader(chain_header) => Ok(chain_header), - _ => Err(HolochainError::ErrorGeneric( - "Unexpected non-chain_header entry".to_string(), - )), - }) - .collect::, _>>() - })? - .map_err(|err| { - let hc_error: HolochainError = err; - hc_error + .collect::>, HolochainError>>()?; + + let chain_headers = maybe_entries + .into_iter() + // ignore None values + .flatten() + .map(|entry| match entry { + Entry::ChainHeader(chain_header) => Ok(chain_header), + _ => Err(HolochainError::ErrorGeneric( + "Unexpected non-chain_header entry".to_string(), + )), }) + .collect::, _>>()?; + Ok(chain_headers) } /// Add an entry and header to the CAS and EAV, respectively @@ -280,8 +280,10 @@ impl DhtStore { &Attribute::EntryHeader, &header.address(), )?; - self.add(header)?; - self.meta_storage.write().unwrap().add_eavi(&eavi)?; + let cursor: Box> = self.create_cursor_rw()?; + cursor.add(header)?; + cursor.add_eavi(&eavi)?; + cursor.commit()?; Ok(()) } @@ -297,14 +299,7 @@ impl DhtStore { &self, query: &EaviQuery, ) -> PersistenceResult> { - self.meta_storage.read().unwrap().fetch_eavi(query) - } - - pub(crate) fn add_eavi( - &mut self, - eavi: &EntityAttributeValueIndex, - ) -> PersistenceResult> { - self.meta_storage.write().unwrap().add_eavi(&eavi) + self.persistence_manager.eav().fetch_eavi(query) } pub(crate) fn next_queued_holding_workflow( @@ -395,15 +390,7 @@ where impl GetContent for DhtStore { fn get_raw(&self, address: &Address) -> HcResult> { - Ok((*self.content_storage.read().unwrap()).fetch(address)?) - } -} - -impl AddContent for DhtStore { - fn add(&mut self, content: &T) -> HcResult<()> { - (*self.content_storage.write().unwrap()) - .add(content) - .map_err(|e| e.into()) + Ok((*self.persistence_manager.cas()).fetch(address)?) } } @@ -419,18 +406,11 @@ pub mod tests { entry::{test_entry, test_entry_a, test_entry_b, test_entry_c}, }; - use holochain_persistence_api::{ - cas::storage::ExampleContentAddressableStorage, eav::ExampleEntityAttributeValueStorage, - }; - #[test] fn get_headers_roundtrip() { - let mut store = DhtStore::new( - Arc::new(RwLock::new( - ExampleContentAddressableStorage::new().unwrap(), - )), - Arc::new(RwLock::new(ExampleEntityAttributeValueStorage::new())), - ); + let mut store = DhtStore::new(Arc::new( + holochain_persistence_api::txn::new_example_persistence_manager().unwrap(), + )); let entry = test_entry(); let header1 = test_chain_header_with_sig("sig1"); let header2 = test_chain_header_with_sig("sig2"); diff --git a/crates/core/src/instance.rs b/crates/core/src/instance.rs index 12e374cbb7..d1ac2184d7 100644 --- a/crates/core/src/instance.rs +++ b/crates/core/src/instance.rs @@ -515,7 +515,6 @@ pub mod tests { }; use holochain_locksmith::{Mutex, RwLock}; use holochain_persistence_api::cas::content::AddressableContent; - use holochain_persistence_file::{cas::file::FilesystemStorage, eav::file::EavFileStorage}; use tempfile; use test_utils; @@ -528,8 +527,6 @@ pub mod tests { use crate::nucleus::state::NucleusStatus; use holochain_core_types::entry::Entry; use holochain_json_api::json::JsonString; - use holochain_persistence_lmdb::{cas::lmdb::LmdbStorage, eav::lmdb::EavLmdbStorage}; - use holochain_persistence_mem::{cas::memory::MemoryStorage, eav::memory::EavMemoryStorage}; /// create a test context and TestLogger pair so we can use the logger in assertions #[cfg_attr(tarpaulin, skip)] @@ -547,17 +544,17 @@ pub mod tests { network_name: Option<&str>, ) -> (Arc, Arc>) { let agent = registered_test_agent(agent_name); - let content_storage = Arc::new(RwLock::new(MemoryStorage::new())); - let meta_storage = Arc::new(RwLock::new(EavMemoryStorage::new())); + + let persistence_manager = Arc::new(holochain_persistence_mem::txn::new_manager()); let logger = test_logger(); ( Arc::new(Context::new( "Test-context-and-logger-instance", agent, - Arc::new(RwLock::new(SimplePersister::new(content_storage.clone()))), - content_storage.clone(), - content_storage.clone(), - meta_storage, + Arc::new(RwLock::new(SimplePersister::new( + persistence_manager.clone(), + ))), + persistence_manager.clone(), test_memory_network_config(network_name), None, None, @@ -595,22 +592,20 @@ pub mod tests { network_name: Option<&str>, ) -> Arc { let agent = AgentId::generate_fake(agent_name); - let file_storage = Arc::new(RwLock::new( - FilesystemStorage::new(tempdir().unwrap().path().to_str().unwrap()).unwrap(), - )); + + let persistence_manager = Arc::new(holochain_persistence_file::txn::default_manager()); + Arc::new( Context::new_with_channels( "Test-context-with-channels-instance", agent, - Arc::new(RwLock::new(SimplePersister::new(file_storage.clone()))), + Arc::new(RwLock::new(SimplePersister::new( + persistence_manager.clone(), + ))), + persistence_manager.clone(), Some(action_channel.clone()), None, Some(observer_channel.clone()), - file_storage.clone(), - Arc::new(RwLock::new( - EavFileStorage::new(tempdir().unwrap().path().to_str().unwrap().to_string()) - .unwrap(), - )), // TODO should bootstrap nodes be set here? test_memory_network_config(network_name), false, @@ -625,19 +620,14 @@ pub mod tests { #[cfg_attr(tarpaulin, skip)] pub fn test_context_with_state(network_name: Option<&str>) -> Arc { - let file_storage = Arc::new(RwLock::new( - FilesystemStorage::new(tempdir().unwrap().path().to_str().unwrap()).unwrap(), - )); + let persistence_manager = Arc::new(holochain_persistence_file::txn::default_manager()); let mut context = Context::new( "test-context-with-state-instance", registered_test_agent("Florence"), - Arc::new(RwLock::new(SimplePersister::new(file_storage.clone()))), - file_storage.clone(), - file_storage.clone(), - Arc::new(RwLock::new( - EavFileStorage::new(tempdir().unwrap().path().to_str().unwrap().to_string()) - .unwrap(), - )), + Arc::new(RwLock::new(SimplePersister::new( + persistence_manager.clone(), + ))), + persistence_manager.clone(), // TODO BLOCKER should bootstrap nodes be set here? test_memory_network_config(network_name), None, @@ -655,19 +645,14 @@ pub mod tests { #[cfg_attr(tarpaulin, skip)] pub fn test_context_with_agent_state(network_name: Option<&str>) -> Arc { - let file_system = - FilesystemStorage::new(tempdir().unwrap().path().to_str().unwrap()).unwrap(); - let cas = Arc::new(RwLock::new(file_system.clone())); + let persistence_manager = Arc::new(holochain_persistence_file::txn::default_manager()); let mut context = Context::new( "test-context-with-agent-state-instance", registered_test_agent("Florence"), - Arc::new(RwLock::new(SimplePersister::new(cas.clone()))), - cas.clone(), - cas.clone(), - Arc::new(RwLock::new( - EavFileStorage::new(tempdir().unwrap().path().to_str().unwrap().to_string()) - .unwrap(), - )), + Arc::new(RwLock::new(SimplePersister::new( + persistence_manager.clone(), + ))), + persistence_manager.clone(), // TODO BLOCKER should bootstrap nodes be set here? test_memory_network_config(network_name), None, @@ -678,7 +663,7 @@ pub mod tests { )), Arc::new(ht::null_tracer()), ); - let chain_store = ChainStore::new(cas.clone()); + let chain_store = ChainStore::new(persistence_manager.clone()); let chain_header = test_chain_header(); let agent_state = AgentState::new_with_top_chain_header( chain_store, @@ -948,23 +933,27 @@ pub mod tests { ) -> (Arc, Arc>) { let agent = registered_test_agent(agent_name); - let cas_dir = tempdir().expect("Could not create a tempdir for CAS testing"); - let eav_dir = tempdir().expect("Could not create a tempdir for CAS testing"); + let lmdb_dir = tempdir().expect("Could not create a tempdir for CAS testing"); - let content_storage = Arc::new(RwLock::new(LmdbStorage::new( - cas_dir.path(), + let staging_path_prefix: Option = None; + let persistence_manager = Arc::new(holochain_persistence_lmdb::txn::new_manager( + lmdb_dir.path(), + staging_path_prefix, cas_initial_mmap, - ))); - let meta_storage = Arc::new(RwLock::new(EavLmdbStorage::new(eav_dir.path(), None))); + None, + None, + None, + )); + let logger = test_logger(); ( Arc::new(Context::new( "Test-context-lmdb", agent, - Arc::new(RwLock::new(SimplePersister::new(content_storage.clone()))), - content_storage.clone(), - content_storage.clone(), - meta_storage, + Arc::new(RwLock::new(SimplePersister::new( + persistence_manager.clone(), + ))), + persistence_manager, test_memory_network_config(network_name), None, None, @@ -1007,7 +996,7 @@ pub mod tests { .unwrap(); // ensure it was added - let dht = context.dht_storage.read().unwrap(); + let dht = context.persistence_manager.cas(); assert!(dht.contains(&entry.address()).unwrap()); } } diff --git a/crates/core/src/macros.rs b/crates/core/src/macros.rs index 325735f031..3507719013 100644 --- a/crates/core/src/macros.rs +++ b/crates/core/src/macros.rs @@ -95,23 +95,17 @@ fn context_log_macro_test() { use holochain_core_types::agent::AgentId; use holochain_locksmith::RwLock; use holochain_net::p2p_config::P2pConfig; - use holochain_persistence_file::{cas::file::FilesystemStorage, eav::file::EavFileStorage}; use holochain_tracing as ht; use std::sync::Arc; - use tempfile::tempdir; + let persistence_manager = Arc::new(holochain_persistence_file::txn::default_manager()); - let file_storage = Arc::new(RwLock::new( - FilesystemStorage::new(tempdir().unwrap().path().to_str().unwrap()).unwrap(), - )); let ctx = Context::new( "LOG-TEST-ID", AgentId::generate_fake("Bilbo"), - Arc::new(RwLock::new(SimplePersister::new(file_storage.clone()))), - file_storage.clone(), - file_storage.clone(), - Arc::new(RwLock::new( - EavFileStorage::new(tempdir().unwrap().path().to_str().unwrap().to_string()).unwrap(), - )), + Arc::new(RwLock::new(SimplePersister::new( + persistence_manager.clone(), + ))), + persistence_manager.clone(), P2pConfig::new_with_unique_memory_backend(), None, None, diff --git a/crates/core/src/network/reducers/init.rs b/crates/core/src/network/reducers/init.rs index 6672d3e3ee..5526683a3d 100644 --- a/crates/core/src/network/reducers/init.rs +++ b/crates/core/src/network/reducers/init.rs @@ -96,7 +96,6 @@ pub fn reduce_init(state: &mut NetworkState, root_state: &State, action_wrapper: #[cfg(test)] pub mod test { - use self::tempfile::tempdir; use super::*; use crate::{ context::Context, @@ -107,26 +106,20 @@ pub mod test { use holochain_locksmith::RwLock; use holochain_net::{connection::net_connection::NetHandler, p2p_config::P2pConfig}; use holochain_persistence_api::cas::content::{Address, AddressableContent}; - use holochain_persistence_file::{cas::file::FilesystemStorage, eav::file::EavFileStorage}; use holochain_tracing as ht; use serde_json::json; use std::sync::Arc; - use tempfile; fn test_context(p2p_config: P2pConfig) -> Arc { - let file_storage = Arc::new(RwLock::new( - FilesystemStorage::new(tempdir().unwrap().path().to_str().unwrap()).unwrap(), - )); + let persistence_manager = Arc::new(holochain_persistence_file::txn::default_manager()); + let mut context = Context::new( "Test-context-instance", AgentId::generate_fake("Terence"), - Arc::new(RwLock::new(SimplePersister::new(file_storage.clone()))), - file_storage.clone(), - file_storage.clone(), - Arc::new(RwLock::new( - EavFileStorage::new(tempdir().unwrap().path().to_str().unwrap().to_string()) - .unwrap(), - )), + Arc::new(RwLock::new(SimplePersister::new( + persistence_manager.clone(), + ))), + persistence_manager.clone(), p2p_config, None, None, diff --git a/crates/core/src/nucleus/actions/get_entry.rs b/crates/core/src/nucleus/actions/get_entry.rs index 00edd8af17..3a4fea8c52 100644 --- a/crates/core/src/nucleus/actions/get_entry.rs +++ b/crates/core/src/nucleus/actions/get_entry.rs @@ -137,9 +137,10 @@ pub fn get_entry_with_meta( #[cfg(test)] pub mod tests { - use crate::{content_store::AddContent, instance::tests::test_context_with_state}; + use crate::instance::tests::test_context_with_state; use holochain_core_types::entry::test_entry; use holochain_persistence_api::cas::content::AddressableContent; + use holochain_wasm_utils::holochain_persistence_api::txn::CursorProviderDyn; #[test] fn test_get_entry_from_dht_cas() { @@ -147,7 +148,12 @@ pub mod tests { let context = test_context_with_state(None); let result = super::get_entry_from_dht(&context, &entry.address()); assert_eq!(Ok(None), result); - let _ = (*context.state().unwrap().dht()).clone().add(&entry); + let cursor = (*context.state().unwrap().dht()) + .clone() + .create_cursor_rw() + .unwrap(); + cursor.add(&entry).unwrap(); + cursor.commit().unwrap(); let result = super::get_entry_from_dht(&context, &entry.address()); assert_eq!(Ok(Some(entry.clone())), result); } diff --git a/crates/core/src/persister.rs b/crates/core/src/persister.rs index a243ffb114..95ed46fa69 100644 --- a/crates/core/src/persister.rs +++ b/crates/core/src/persister.rs @@ -5,12 +5,11 @@ use crate::{ state::State, NEW_RELIC_LICENSE_KEY, }; -use holochain_core_types::error::HolochainError; -use holochain_locksmith::RwLock; +use holochain_core_types::{eav::Attribute, error::HolochainError}; -use holochain_persistence_api::cas::{ - content::{Address, AddressableContent, Content}, - storage::ContentAddressableStorage, +use holochain_persistence_api::{ + cas::content::{Address, AddressableContent, Content}, + txn::PersistenceManagerDyn, }; use crate::{ @@ -31,31 +30,32 @@ pub trait Persister: Send + Sync { #[derive(Clone)] pub struct SimplePersister { - storage: Arc>, + storage: Arc>, } impl PartialEq for SimplePersister { fn eq(&self, other: &SimplePersister) -> bool { - (&*self.storage.read().unwrap()).get_id() == (&*other.storage.read().unwrap()).get_id() + (&*self.storage).get_id() == (&*other.storage).get_id() } } #[holochain_tracing_macros::newrelic_autotrace(HOLOCHAIN_CORE)] impl Persister for SimplePersister { fn save(&mut self, state: &StateWrapper) -> Result<(), HolochainError> { - let lock = &*self.storage.clone(); - let mut store = lock.write()?; let agent_snapshot = AgentStateSnapshot::from(state); let nucleus_snapshot = NucleusStateSnapshot::from(state); let dht_store_snapshot = DhtStoreSnapshot::from(state); - store.add(&agent_snapshot)?; - store.add(&nucleus_snapshot)?; - store.add(&dht_store_snapshot)?; + + let cursor = self.storage.create_cursor_rw()?; + cursor.add(&agent_snapshot)?; + cursor.add(&nucleus_snapshot)?; + cursor.add(&dht_store_snapshot)?; + cursor.commit()?; Ok(()) } + fn load(&self, context: Arc) -> Result, HolochainError> { - let lock = &*self.storage.clone(); - let store = lock.read().unwrap(); + let store = self.storage.cas(); let agent_snapshot: Option = store .fetch(&Address::from(AGENT_SNAPSHOT_ADDRESS))? @@ -93,7 +93,7 @@ impl Persister for SimplePersister { } impl SimplePersister { - pub fn new(storage: Arc>) -> Self { + pub fn new(storage: Arc>) -> Self { SimplePersister { storage } } } @@ -116,7 +116,7 @@ mod tests { let _tempfile = temp_path.to_str().unwrap(); let context = test_context_with_agent_state(None); File::create(temp_path.clone()).unwrap(); - let mut persistance = SimplePersister::new(context.dht_storage.clone()); + let mut persistance = SimplePersister::new(context.persistence_manager.clone()); let state = context.state().unwrap().clone(); persistance.save(&state).unwrap(); let state_from_file = persistance.load(context).unwrap().unwrap(); diff --git a/crates/core/src/state.rs b/crates/core/src/state.rs index 008976923f..86b6cc59cc 100644 --- a/crates/core/src/state.rs +++ b/crates/core/src/state.rs @@ -19,7 +19,6 @@ use holochain_core_types::{ entry::{entry_type::EntryType, Entry}, error::{HcResult, HolochainError}, }; -use holochain_locksmith::RwLock; use holochain_persistence_api::{ cas::{ content::{Address, AddressableContent}, @@ -71,16 +70,13 @@ impl State { // @TODO file table // @see https://github.com/holochain/holochain-rust/pull/246 - let chain_cas = &(*context).chain_storage; - let dht_cas = &(*context).dht_storage; - let eav = context.eav_storage.clone(); State { nucleus: Arc::new(NucleusState::new()), agent: Arc::new(AgentState::new( - ChainStore::new(chain_cas.clone()), + ChainStore::new(context.persistence_manager.clone()), context.agent_id.address(), )), - dht: Arc::new(DhtStore::new(dht_cas.clone(), eav)), + dht: Arc::new(DhtStore::new(context.persistence_manager.clone())), network: Arc::new(NetworkState::new()), conductor_api: context.conductor_api.clone(), } @@ -95,10 +91,7 @@ impl State { agent_state: AgentState, nucleus_state: NucleusState, ) -> Self { - let cas = context.dht_storage.clone(); - let eav = context.eav_storage.clone(); - - let dht_store = DhtStore::new(cas.clone(), eav.clone()); + let dht_store = DhtStore::new(context.persistence_manager.clone()); Self::new_with_agent_nucleus_dht(context, agent_state, nucleus_state, dht_store) } @@ -108,9 +101,7 @@ impl State { mut nucleus_state: NucleusState, dht_store: DhtStore, ) -> Self { - let cas = context.dht_storage.clone(); - //let eav = context.eav_storage.clone(); - + let cas = context.persistence_manager.cas(); nucleus_state.dna = Self::get_dna(&agent_state, cas.clone()).ok(); State { @@ -122,10 +113,7 @@ impl State { } } - fn get_dna( - agent_state: &AgentState, - cas: Arc>, - ) -> HcResult { + fn get_dna(agent_state: &AgentState, cas: Arc) -> HcResult { let dna_entry_header = agent_state .chain_store() .iter_type(&agent_state.top_chain_header(), &EntryType::Dna) @@ -136,7 +124,7 @@ impl State { .to_string(), ) })?; - let json = (*cas.read().unwrap()).fetch(dna_entry_header.entry_address())?; + let json = (*cas).fetch(dna_entry_header.entry_address())?; let entry: Entry = json.map(|e| e.try_into()).ok_or_else(|| { HolochainError::ErrorGeneric( "No DNA entry found in storage while creating state from agent".to_string(), @@ -198,16 +186,13 @@ impl State { dht_store_snapshot: DhtStoreSnapshot, ) -> HcResult { let agent_state = AgentState::new_with_top_chain_header( - ChainStore::new(context.chain_storage.clone()), + ChainStore::new(context.persistence_manager.clone()), agent_snapshot.top_chain_header().map(|h| h.to_owned()), context.agent_id.address(), ); let nucleus_state = NucleusState::from(nucleus_snapshot); - let dht_store = DhtStore::new_from_snapshot( - context.dht_storage.clone(), - context.eav_storage.clone(), - dht_store_snapshot, - ); + let dht_store = + DhtStore::new_from_snapshot(context.persistence_manager.clone(), dht_store_snapshot); Ok(State::new_with_agent_nucleus_dht( context, agent_state, diff --git a/crates/core/src/state_dump.rs b/crates/core/src/state_dump.rs index 197b6dccc5..d636567731 100644 --- a/crates/core/src/state_dump.rs +++ b/crates/core/src/state_dump.rs @@ -98,8 +98,8 @@ pub fn address_to_content_and_type( context: Arc, ) -> Result<(String, String), HolochainError> { let raw_content = context - .dht_storage - .read()? + .persistence_manager + .cas() .fetch(address)? .ok_or(HolochainError::EntryNotFoundLocally)?; let maybe_entry: Result = raw_content.clone().try_into(); diff --git a/crates/core_types/Cargo.toml b/crates/core_types/Cargo.toml index bb764ce9a5..e703272b7a 100644 --- a/crates/core_types/Cargo.toml +++ b/crates/core_types/Cargo.toml @@ -27,7 +27,7 @@ hcid = "=0.0.6" rust-base58 = "=0.0.4" snowflake = "=1.3.0" objekt= "=0.1.2" -holochain_persistence_api = "=0.0.17" +holochain_persistence_api = { git = "https://github.com/holochain/holochain-persistence", branch = "transactional" } holochain_json_derive = "=0.0.23" holochain_json_api = "=0.0.23" holochain_locksmith = { version = "=0.0.43-alpha3", path = "../locksmith" } @@ -35,7 +35,7 @@ uuid = { version = "=0.7.1", features = ["v4"] } regex = "=1.1.2" shrinkwraprs = "=0.2.1" crossbeam-channel = "=0.3.8" -lib3h_crypto_api = "=0.0.38" +lib3h_crypto_api = { git = "https://github.com/holochain/lib3h", branch = "transactional" } parking_lot ="=0.9.0" log = "=0.4.8" holochain_logging = "=0.0.7" diff --git a/crates/core_types/src/eav/eavi.rs b/crates/core_types/src/eav/eavi.rs index 3607dd80a4..7e22b7dbdd 100644 --- a/crates/core_types/src/eav/eavi.rs +++ b/crates/core_types/src/eav/eavi.rs @@ -9,7 +9,7 @@ use holochain_persistence_api::{ storage::{ EntityAttributeValueStorage as GenericStorage, ExampleEntityAttributeValueStorage, }, - AttributeError, IndexFilter, + AddEavi, AttributeError, FetchEavi, IndexFilter, }, error::{PersistenceError, PersistenceResult}, }; @@ -58,8 +58,6 @@ impl Default for Attribute { unsafe impl Sync for Attribute {} unsafe impl Send for Attribute {} -impl holochain_persistence_api::eav::Attribute for Attribute {} - impl From for HolochainError { fn from(err: AttributeError) -> HolochainError { let msg = match err { @@ -216,7 +214,7 @@ pub fn eav_round_trip_test_runner( &value_content.address(), ) .expect("Could not create EAV"); - let mut eav_storage = ExampleEntityAttributeValueStorage::new(); + let eav_storage = ExampleEntityAttributeValueStorage::new(); assert_eq!( BTreeSet::new(), diff --git a/crates/dpki/Cargo.toml b/crates/dpki/Cargo.toml index 5939107470..02bf195488 100644 --- a/crates/dpki/Cargo.toml +++ b/crates/dpki/Cargo.toml @@ -11,14 +11,15 @@ edition = "2018" [dependencies] lazy_static = "=1.4.0" base64 = "=0.10.1" +holochain_common = { version = "=0.0.43-alpha3", path = "../common" } holochain_core_types = { version = "=0.0.43-alpha3", path = "../core_types" } holochain_tracing_macros = "=0.0.19" +lib3h_sodium = { git = "https://github.com/holochain/lib3h", branch = "transactional" } +holochain_persistence_api = { git = "https://github.com/holochain/holochain-persistence", branch = "transactional" } newrelic="0.2" -lib3h_sodium = "=0.0.38" -holochain_persistence_api = "=0.0.17" serde = "=1.0.104" serde_derive = "=1.0.104" serde_json = { version = "=1.0.47", features = ["preserve_order"] } hcid = "=0.0.6" bip39 = "=0.6.0-beta.1" -holochain_common = { version = "=0.0.43-alpha3", path = "../common" } + diff --git a/crates/hdk/Cargo.toml b/crates/hdk/Cargo.toml index 8456bb9778..3a49eef0e1 100644 --- a/crates/hdk/Cargo.toml +++ b/crates/hdk/Cargo.toml @@ -18,7 +18,7 @@ holochain_wasm_utils = { version = "=0.0.43-alpha3", path = "../wasm_utils" } holochain_core_types = { version = "=0.0.43-alpha3", path = "../core_types" } holochain_json_api = "=0.0.23" holochain_json_derive = "=0.0.23" -holochain_persistence_api = "=0.0.17" +holochain_persistence_api = { git = "https://github.com/holochain/holochain-persistence", branch = "transactional" } pretty_assertions = "=0.6.1" env_logger = "=0.6.1" url = "=2.1.0" diff --git a/crates/holochain/Cargo.toml b/crates/holochain/Cargo.toml index 95fad06f48..302709c8fc 100644 --- a/crates/holochain/Cargo.toml +++ b/crates/holochain/Cargo.toml @@ -11,7 +11,7 @@ authors = ["Holochain Core Dev Team "] crossbeam-channel = "=0.3.8" holochain_core_types = { version = "=0.0.43-alpha3", path = "../core_types" } holochain_conductor_lib = { version = "=0.0.43-alpha3", path = "../conductor_lib" } -lib3h_sodium = "=0.0.38" +lib3h_sodium = { git = "https://github.com/holochain/lib3h", branch = "transactional" } holochain_common = { version = "=0.0.43-alpha3", path = "../common" } holochain_locksmith = { version = "=0.0.43-alpha3", path = "../locksmith" } holochain_tracing = "=0.0.19" diff --git a/crates/net/Cargo.toml b/crates/net/Cargo.toml index f06f918298..3f78356b3f 100644 --- a/crates/net/Cargo.toml +++ b/crates/net/Cargo.toml @@ -9,7 +9,7 @@ authors = ["Holochain Core Dev Team "] edition = "2018" [dev-dependencies] -lib3h_crypto_api = "=0.0.38" +lib3h_crypto_api = { git = "https://github.com/holochain/lib3h", branch = "transactional" } base64 = "=0.10.1" hcid = "=0.0.6" jsonrpc-core = "=14.0.1" @@ -18,10 +18,10 @@ tempfile = "=3.0.7" [dependencies] failure = "=0.1.5" sim2h = { version = "=0.0.43-alpha3", path = "../sim2h" } -lib3h_sodium = "=0.0.38" -lib3h_protocol = "=0.0.38" -lib3h = "=0.0.38" -lib3h_zombie_actor = "=0.0.38" +lib3h_sodium = { git = "https://github.com/holochain/lib3h", branch = "transactional" } +lib3h_protocol = { git = "https://github.com/holochain/lib3h", branch = "transactional" } +lib3h = { git = "https://github.com/holochain/lib3h", branch = "transactional" } +lib3h_zombie_actor = { git = "https://github.com/holochain/lib3h", branch = "transactional" } detach = "=0.0.19" holochain_tracing = "=0.0.19" holochain_metrics = { version = "=0.0.43-alpha3", path = "../metrics" } @@ -31,7 +31,7 @@ holochain_locksmith = { version = "=0.0.43-alpha3", path = "../locksmith" } holochain_json_derive = "=0.0.23" holochain_json_api = "=0.0.23" holochain_tracing_macros = "=0.0.19" -holochain_persistence_api = "=0.0.17" +holochain_persistence_api = { git = "https://github.com/holochain/holochain-persistence", branch = "transactional" } holochain_common = { version = "=0.0.43-alpha3", path = "../common" } in_stream = { version = "=0.0.43-alpha3", path = "../in_stream" } lazy_static = "=1.4.0" diff --git a/crates/sim2h/Cargo.toml b/crates/sim2h/Cargo.toml index 3d49135f84..a3e7841dd5 100644 --- a/crates/sim2h/Cargo.toml +++ b/crates/sim2h/Cargo.toml @@ -14,19 +14,19 @@ repository = "https://github.com/holochain/sim2h" [dependencies] backtrace = "=0.3.27" hcid = "=0.0.6" -holochain_persistence_api = "=0.0.17" holochain_json_api = "=0.0.23" +holochain_persistence_api = { git = "https://github.com/holochain/holochain-persistence", branch = "transactional" } futures = "=0.3.2" -lib3h = "=0.0.38" -lib3h_crypto_api = "=0.0.38" -lib3h_sodium = "=0.0.38" -lib3h_protocol = "=0.0.38" -lib3h_zombie_actor = "=0.0.38" -holochain_tracing = "=0.0.19" +lib3h = { git = "https://github.com/holochain/lib3h", branch = "transactional" } +lib3h_crypto_api = { git = "https://github.com/holochain/lib3h", branch = "transactional" } +lib3h_sodium = { git = "https://github.com/holochain/lib3h", branch = "transactional" } +lib3h_protocol = { git = "https://github.com/holochain/lib3h", branch = "transactional" } +lib3h_zombie_actor = { git = "https://github.com/holochain/lib3h", branch = "transactional" } holochain_core_types = { version = "=0.0.43-alpha3", path = "../core_types" } holochain_locksmith = { version = "=0.0.43-alpha3", path = "../locksmith" } holochain_metrics = { version = "=0.0.43-alpha3", path = "../metrics" } holochain_common = { version = "=0.0.43-alpha3", path = "../common" } +holochain_tracing = "=0.0.19" holochain_tracing_macros = "=0.0.19" im = { version = "=14.0.0", features = ["serde"] } in_stream = { version = "=0.0.43-alpha3", path = "../in_stream" } @@ -53,6 +53,5 @@ native-tls = "=0.2.3" openssl = "=0.10.25" tungstenite = "=0.9.2" threadpool = "=1.7.1" -chashmap = "=2.2.2" newrelic="0.2" twox-hash = "1.5.0" \ No newline at end of file diff --git a/crates/sim2h_server/Cargo.toml b/crates/sim2h_server/Cargo.toml index 358c0140ea..1176ba39a1 100644 --- a/crates/sim2h_server/Cargo.toml +++ b/crates/sim2h_server/Cargo.toml @@ -20,9 +20,9 @@ holochain_tracing_macros = "=0.0.19" newrelic="0.2" detach = "=0.0.19" futures = "=0.3.2" -lib3h = "=0.0.38" -lib3h_protocol = "=0.0.38" -lib3h_sodium = "=0.0.38" +lib3h = { git = "https://github.com/holochain/lib3h", branch = "transactional" } +lib3h_protocol = { git = "https://github.com/holochain/lib3h", branch = "transactional" } +lib3h_sodium = { git = "https://github.com/holochain/lib3h", branch = "transactional" } lazy_static = "=1.4.0" log = "0.4.8" env_logger = "0.7.0" diff --git a/crates/stress/Cargo.toml b/crates/stress/Cargo.toml index 642ee064e4..d8f6be3b16 100644 --- a/crates/stress/Cargo.toml +++ b/crates/stress/Cargo.toml @@ -14,9 +14,9 @@ base64 = "=0.10.1" crossbeam-channel = "=0.3.8" env_logger = "=0.6.1" hcid = "=0.0.6" -lib3h_crypto_api = "=0.0.38" -lib3h_protocol = "=0.0.38" -lib3h_sodium = "=0.0.38" +lib3h_crypto_api = { git = "https://github.com/holochain/lib3h", branch = "transactional" } +lib3h_protocol = { git = "https://github.com/holochain/lib3h", branch = "transactional" } +lib3h_sodium = { git = "https://github.com/holochain/lib3h", branch = "transactional" } holochain_tracing = "=0.0.19" log = "=0.4.8" nanoid = "=0.2.0" diff --git a/crates/wasm_utils/Cargo.toml b/crates/wasm_utils/Cargo.toml index e3d7f6c07d..37aa31208c 100644 --- a/crates/wasm_utils/Cargo.toml +++ b/crates/wasm_utils/Cargo.toml @@ -12,9 +12,9 @@ serde = "=1.0.104" serde_derive = "=1.0.104" serde_json = { version = "=1.0.47", features = ["preserve_order"] } holochain_core_types = { version = "=0.0.43-alpha3", path = "../core_types" } -holochain_json_derive = "=0.0.23" -holochain_persistence_api = "=0.0.17" holochain_json_api = "=0.0.23" +holochain_json_derive = "=0.0.23" +holochain_persistence_api = { git = "https://github.com/holochain/holochain-persistence", branch = "transactional" } [dev-dependencies] test_utils = { version = "=0.0.43-alpha3", path = "../../test_utils" } diff --git a/test/deptool/deptool2.bash b/test/deptool/deptool2.bash new file mode 100755 index 0000000000..e5f6ea1ad7 --- /dev/null +++ b/test/deptool/deptool2.bash @@ -0,0 +1,16 @@ +#!/bin/bash +CRATE=$1 +REPO=$2 +BRANCH=$3 +ROOT=`pwd` +cd $ROOT/crates +dirs=`ls` +for d in $dirs +do + cd $d +if grep "$CRATE" Cargo.toml > /dev/null; then + cargo-add add $CRATE --git $REPO --branch $BRANCH +fi +cd .. +done +cd $ROOT diff --git a/test_utils/Cargo.toml b/test_utils/Cargo.toml index 921c46aca7..0bf07e4958 100644 --- a/test_utils/Cargo.toml +++ b/test_utils/Cargo.toml @@ -17,10 +17,10 @@ holochain_core_types = { version = "=0.0.43-alpha3", path = "../crates/core_type holochain_dpki = { version = "=0.0.43-alpha3", path = "../crates/dpki" } holochain_wasm_utils = { version = "=0.0.43-alpha3", path = "../crates/wasm_utils" } holochain_locksmith = { version = "=0.0.43-alpha3", path = "../crates/locksmith" } -holochain_persistence_api = "=0.0.17" +holochain_persistence_api = { git = "https://github.com/holochain/holochain-persistence", branch = "transactional" } holochain_json_api = "=0.0.23" holochain_json_derive = "=0.0.23" -lib3h_sodium = "=0.0.38" +lib3h_sodium = { git = "https://github.com/holochain/lib3h", branch = "transactional" } wabt = "=0.7.4" tempfile = "=3.0.7" serde = "=1.0.104"