Files
solana/rpc/Cargo.toml
mergify[bot] 03da3eaa81 Optimize RPC pubsub for multiple clients with the same subscription (backport #18943) (#19987)
* Optimize RPC pubsub for multiple clients with the same subscription (#18943)

* reimplement rpc pubsub with a broadcast queue

* update tests for new pubsub implementation

* fix: fix review suggestions

* chore(rpc): add additional pubsub metrics

* integrate max subscriptions check into SubscriptionTracker to reduce locking

* separate subscription control from tracker

* limit memory usage of items in pubsub broadcast queue, improve error handling

* add more pubsub metrics

* add final count metrics to pubsub

* add metric for total number of subscriptions

* fix small review suggestions

* remove by_params from SubscriptionTracker and add node_progress_watchers map instead

* add subscription tracker tests

* add metrics for number of pubsub notifications as a counter

* ignore clippy lint in TokenCounter

* fix underflow in token counter

* reduce queue capacity in pubsub tests

* fix(rpc): fix test timeouts

* fix race in account subscription test

* Add RpcSubscriptions::new_for_tests

Co-authored-by: Pavel Strakhov <p.strakhov@iconic.vc>
Co-authored-by: Nikita Podoliako <n.podoliako@zubr.io>
Co-authored-by: Tyera Eulberg <tyera@solana.com>
(cherry picked from commit 65227f44dc)

# Conflicts:
#	Cargo.lock
#	core/Cargo.toml
#	core/src/replay_stage.rs
#	core/src/validator.rs
#	replica-node/src/replica_node.rs
#	rpc/Cargo.toml

* Fix conflicts (and standardize naming to make future subscription backports easier

Co-authored-by: Pavel Strakhov <ri@idzaaus.org>
Co-authored-by: Tyera Eulberg <tyera@solana.com>
2021-09-20 06:00:08 +00:00

67 lines
2.4 KiB
TOML

[package]
name = "solana-rpc"
version = "1.7.13"
description = "Solana RPC"
authors = ["Solana Maintainers <maintainers@solana.foundation>"]
repository = "https://github.com/solana-labs/solana"
license = "Apache-2.0"
homepage = "https://solana.com/"
documentation = "https://docs.rs/solana-rpc"
edition = "2018"
[dependencies]
base64 = "0.12.3"
bincode = "1.3.1"
bs58 = "0.3.1"
crossbeam-channel = "0.4"
dashmap = "4.0.2"
itertools = "0.9.0"
jsonrpc-core = "18.0.0"
jsonrpc-core-client = { version = "18.0.0", features = ["ipc", "ws"] }
jsonrpc-derive = "18.0.0"
jsonrpc-http-server = "18.0.0"
jsonrpc-pubsub = "18.0.0"
jsonrpc-ws-server = "18.0.0"
libc = "0.2.81"
log = "0.4.11"
regex = "1.3.9"
serde = "1.0.122"
serde_derive = "1.0.103"
serde_json = "1.0.56"
soketto = "0.6"
solana-account-decoder = { path = "../account-decoder", version = "=1.7.13" }
solana-client = { path = "../client", version = "=1.7.13" }
solana-faucet = { path = "../faucet", version = "=1.7.13" }
solana-gossip = { path = "../gossip", version = "=1.7.13" }
solana-ledger = { path = "../ledger", version = "=1.7.13" }
solana-measure = { path = "../measure", version = "=1.7.13" }
solana-metrics = { path = "../metrics", version = "=1.7.13" }
solana-perf = { path = "../perf", version = "=1.7.13" }
solana-poh = { path = "../poh", version = "=1.7.13" }
solana-runtime = { path = "../runtime", version = "=1.7.13" }
solana-sdk = { path = "../sdk", version = "=1.7.13" }
solana-streamer = { path = "../streamer", version = "=1.7.13" }
solana-storage-bigtable = { path = "../storage-bigtable", version = "=1.7.13" }
solana-transaction-status = { path = "../transaction-status", version = "=1.7.13" }
solana-version = { path = "../version", version = "=1.7.13" }
solana-vote-program = { path = "../programs/vote", version = "=1.7.13" }
spl-token-v2-0 = { package = "spl-token", version = "=3.2.0", features = ["no-entrypoint"] }
stream-cancel = "0.8.1"
thiserror = "1.0"
tokio = { version = "1", features = ["full"] }
tokio-util = { version = "0.6", features = ["codec", "compat"] }
[dev-dependencies]
serial_test = "0.4.0"
solana-logger = { path = "../logger", version = "=1.7.13" }
solana-net-utils = { path = "../net-utils", version = "=1.7.13" }
solana-stake-program = { path = "../programs/stake", version = "=1.7.13" }
symlink = "0.1.0"
[lib]
crate-type = ["lib"]
name = "solana_rpc"
[package.metadata.docs.rs]
targets = ["x86_64-unknown-linux-gnu"]