Accountsdb: support config in Json5 (#22605)

* accountsdb: support config in json5

* update docs

* remove not required dependencies

Co-authored-by: Lijun Wang <83639177+lijunwangs@users.noreply.github.com>
(cherry picked from commit 31ed4c18f9)

# Conflicts:
#	Cargo.lock
#	accountsdb-plugin-manager/Cargo.toml
This commit is contained in:
Kirill Fomichev
2022-01-23 05:00:06 +03:00
committed by mergify-bot
parent 620a80b581
commit 3c4cc40a3e
4 changed files with 170 additions and 6 deletions

155
Cargo.lock generated
View File

@@ -28,6 +28,45 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe"
[[package]]
<<<<<<< HEAD
=======
name = "aead"
version = "0.4.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0b613b8e1e3cf911a086f53f03bf286f52fd7a7258e4fa606f0ef220d39d8877"
dependencies = [
"generic-array 0.14.5",
]
[[package]]
name = "aes"
version = "0.7.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9e8b47f52ea9bae42228d07ec09eb676433d7c4ed1ebdf0f1d1c29ed446f1ab8"
dependencies = [
"cfg-if 1.0.0",
"cipher",
"cpufeatures",
"opaque-debug 0.3.0",
]
[[package]]
name = "aes-gcm-siv"
version = "0.10.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "589c637f0e68c877bbd59a4599bbe849cac8e5f3e4b5a3ebae8f528cd218dcdc"
dependencies = [
"aead",
"aes",
"cipher",
"ctr",
"polyval",
"subtle",
"zeroize",
]
[[package]]
>>>>>>> 31ed4c18f (Accountsdb: support config in Json5 (#22605))
name = "ahash"
version = "0.4.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -354,6 +393,18 @@ dependencies = [
"generic-array 0.12.4",
]
[[package]]
name = "block-buffer"
version = "0.7.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c0940dc441f31689269e10ac70eb1002a3a1d3ad1390e030043662eb7fe4688b"
dependencies = [
"block-padding 0.1.5",
"byte-tools",
"byteorder",
"generic-array 0.12.4",
]
[[package]]
name = "block-buffer"
version = "0.9.0"
@@ -361,7 +412,20 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4152116fd6e9dadb291ae18fc1ec3575ed6d84c29642d97890f4b4a3417297e4"
dependencies = [
"block-padding 0.2.1",
<<<<<<< HEAD
"generic-array 0.14.4",
=======
"generic-array 0.14.5",
>>>>>>> 31ed4c18f (Accountsdb: support config in Json5 (#22605))
]
[[package]]
name = "block-padding"
version = "0.1.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fa79dedbb091f449f1f39e53edf88d5dbe95f895dae6135a8d7b881fb5af73f5"
dependencies = [
"byte-tools",
]
[[package]]
@@ -1362,12 +1426,15 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e88a8acf291dafb59c2d96e8f59828f3838bb1a70398823ade51a84de6a6deed"
[[package]]
<<<<<<< HEAD
name = "fallible-iterator"
version = "0.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4443176a9f2c162692bd3d352d745ef9413eec5782a80d8fd6f8a1ac692a07f7"
[[package]]
=======
>>>>>>> 31ed4c18f (Accountsdb: support config in Json5 (#22605))
name = "fast-math"
version = "0.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -2102,6 +2169,17 @@ dependencies = [
"wasm-bindgen",
]
[[package]]
name = "json5"
version = "0.4.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "96b0db21af676c1ce64250b5f40f3ce2cf27e4e47cb91ed91eb6fe9350b430c1"
dependencies = [
"pest",
"pest_derive",
"serde",
]
[[package]]
name = "jsonrpc-client-transports"
version = "18.0.0"
@@ -2424,6 +2502,12 @@ dependencies = [
"hashbrown 0.11.2",
]
[[package]]
name = "maplit"
version = "1.0.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3e2e65a1a2e43cfcb47a895c4c8b10d1f4a61097f9f254f183aee60cad9c651d"
[[package]]
name = "matches"
version = "0.1.9"
@@ -2983,6 +3067,40 @@ dependencies = [
"ucd-trie",
]
[[package]]
name = "pest_derive"
version = "2.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "833d1ae558dc601e9a60366421196a8d94bc0ac980476d0b67e1d0988d72b2d0"
dependencies = [
"pest",
"pest_generator",
]
[[package]]
name = "pest_generator"
version = "2.1.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "99b8db626e31e5b81787b9783425769681b347011cc59471e33ea46d2ea0cf55"
dependencies = [
"pest",
"pest_meta",
"proc-macro2 1.0.32",
"quote 1.0.10",
"syn 1.0.81",
]
[[package]]
name = "pest_meta"
version = "2.1.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "54be6e404f5317079812fc8f9f5279de376d8856929e21c184ecf6bbd692a11d"
dependencies = [
"maplit",
"pest",
"sha-1 0.8.2",
]
[[package]]
name = "petgraph"
version = "0.6.0"
@@ -3074,6 +3192,7 @@ version = "0.19.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "eb76d6535496f633fa799bb872ffb4790e9cbdedda9d35564ca0252f930c0dd5"
dependencies = [
<<<<<<< HEAD
"bytes 1.1.0",
"fallible-iterator",
"futures 0.3.18",
@@ -3122,6 +3241,12 @@ dependencies = [
"fallible-iterator",
"postgres-derive",
"postgres-protocol",
=======
"cfg-if 1.0.0",
"cpufeatures",
"opaque-debug 0.3.0",
"universal-hash",
>>>>>>> 31ed4c18f (Accountsdb: support config in Json5 (#22605))
]
[[package]]
@@ -4135,6 +4260,20 @@ dependencies = [
"cpufeatures",
"digest 0.9.0",
"opaque-debug 0.3.0",
<<<<<<< HEAD
=======
]
[[package]]
name = "sha2"
version = "0.10.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "99c3bd8169c58782adad9290a9af5939994036b76187f7b4f0e6de91dbbfc0ec"
dependencies = [
"cfg-if 1.0.0",
"cpufeatures",
"digest 0.10.1",
>>>>>>> 31ed4c18f (Accountsdb: support config in Json5 (#22605))
]
[[package]]
@@ -4147,6 +4286,19 @@ dependencies = [
"digest 0.9.0",
"keccak",
"opaque-debug 0.3.0",
<<<<<<< HEAD
=======
]
[[package]]
name = "sha3"
version = "0.10.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "31f935e31cf406e8c0e96c2815a5516181b7004ae8c5f296293221e9b1e356bd"
dependencies = [
"digest 0.10.1",
"keccak",
>>>>>>> 31ed4c18f (Accountsdb: support config in Json5 (#22605))
]
[[package]]
@@ -4341,10 +4493,9 @@ version = "1.9.6"
dependencies = [
"bs58 0.4.0",
"crossbeam-channel",
"json5",
"libloading",
"log 0.4.14",
"serde",
"serde_derive",
"serde_json",
"solana-accountsdb-plugin-interface",
"solana-logger 1.9.6",

View File

@@ -12,6 +12,7 @@ documentation = "https://docs.rs/solana-validator"
[dependencies]
bs58 = "0.4.0"
crossbeam-channel = "0.5"
<<<<<<< HEAD
libloading = "0.7.2"
log = "0.4.11"
serde = "1.0.130"
@@ -25,6 +26,19 @@ solana-rpc = { path = "../rpc", version = "=1.9.6" }
solana-runtime = { path = "../runtime", version = "=1.9.6" }
solana-sdk = { path = "../sdk", version = "=1.9.6" }
solana-transaction-status = { path = "../transaction-status", version = "=1.9.6" }
=======
json5 = "0.4.1"
libloading = "0.7.3"
log = "0.4.11"
serde_json = "1.0.75"
solana-accountsdb-plugin-interface = { path = "../accountsdb-plugin-interface", version = "=1.10.0" }
solana-measure = { path = "../measure", version = "=1.10.0" }
solana-metrics = { path = "../metrics", version = "=1.10.0" }
solana-rpc = { path = "../rpc", version = "=1.10.0" }
solana-runtime = { path = "../runtime", version = "=1.10.0" }
solana-sdk = { path = "../sdk", version = "=1.10.0" }
solana-transaction-status = { path = "../transaction-status", version = "=1.10.0" }
>>>>>>> 31ed4c18f (Accountsdb: support config in Json5 (#22605))
thiserror = "1.0.30"
[package.metadata.docs.rs]

View File

@@ -9,7 +9,6 @@ use {
},
crossbeam_channel::Receiver,
log::*,
serde_json,
solana_rpc::{
optimistically_confirmed_bank_tracker::BankNotification,
transaction_notifier_interface::TransactionNotifierLock,
@@ -156,12 +155,12 @@ impl AccountsDbPluginService {
)));
}
let result: serde_json::Value = match serde_json::from_str(&contents) {
let result: serde_json::Value = match json5::from_str(&contents) {
Ok(value) => value,
Err(err) => {
return Err(AccountsdbPluginServiceError::InvalidConfigFileFormat(
format!(
"The config file {:?} is not in a valid Json format, error: {:?}",
"The config file {:?} is not in a valid Json5 format, error: {:?}",
accountsdb_plugin_config_file, err
),
));

View File

@@ -58,7 +58,7 @@ pub unsafe extern "C" fn _create_plugin() -> *mut dyn AccountsDbPlugin {
A plugin implementation can implement the `on_load` method to initialize itself.
This function is invoked after a plugin is dynamically loaded into the validator
when it starts. The configuration of the plugin is controlled by a configuration
file in JSON format. The JSON file must have a field `libpath` that points
file in JSON5 format. The JSON5 file must have a field `libpath` that points
to the full path name of the shared library implementing the plugin, and may
have other configuration information, like connection parameters for the external
database. The plugin configuration file is specified by the validator's CLI