mirror of
https://github.com/neondatabase/neon.git
synced 2026-01-04 03:52:56 +00:00
## Problem As documented, the global connection pool will be high contention. ## Summary of changes Use DashMap rather than Mutex<HashMap>. Of note, DashMap currently uses a RwLock internally, but it's partially sharded to reduce contention by a factor of N. We could potentially use flurry which is a port of Java's concurrent hashmap, but I have no good understanding of it's performance characteristics. Dashmap is at least equivalent to hashmap but less contention. See the read heavy benchmark to analyse our expected performance <https://github.com/xacrimon/conc-map-bench#ready-heavy> I also spoke with the developer of dashmap recently, and they are working on porting the implementation to use concurrent HAMT FWIW
77 lines
2.0 KiB
TOML
77 lines
2.0 KiB
TOML
[package]
|
|
name = "proxy"
|
|
version = "0.1.0"
|
|
edition.workspace = true
|
|
license.workspace = true
|
|
|
|
[dependencies]
|
|
anyhow.workspace = true
|
|
async-trait.workspace = true
|
|
base64.workspace = true
|
|
bstr.workspace = true
|
|
bytes = { workspace = true, features = ["serde"] }
|
|
chrono.workspace = true
|
|
clap.workspace = true
|
|
consumption_metrics.workspace = true
|
|
dashmap.workspace = true
|
|
futures.workspace = true
|
|
git-version.workspace = true
|
|
hashbrown.workspace = true
|
|
hashlink.workspace = true
|
|
hex.workspace = true
|
|
hmac.workspace = true
|
|
hostname.workspace = true
|
|
humantime.workspace = true
|
|
hyper-tungstenite.workspace = true
|
|
hyper.workspace = true
|
|
itertools.workspace = true
|
|
md5.workspace = true
|
|
metrics.workspace = true
|
|
once_cell.workspace = true
|
|
opentelemetry.workspace = true
|
|
parking_lot.workspace = true
|
|
pbkdf2 = { workspace = true, features = ["simple", "std"] }
|
|
pin-project-lite.workspace = true
|
|
postgres_backend.workspace = true
|
|
pq_proto.workspace = true
|
|
prometheus.workspace = true
|
|
rand.workspace = true
|
|
regex.workspace = true
|
|
reqwest = { workspace = true, features = ["json"] }
|
|
reqwest-middleware.workspace = true
|
|
reqwest-retry.workspace = true
|
|
reqwest-tracing.workspace = true
|
|
routerify.workspace = true
|
|
rustls-pemfile.workspace = true
|
|
rustls.workspace = true
|
|
scopeguard.workspace = true
|
|
serde.workspace = true
|
|
serde_json.workspace = true
|
|
sha2.workspace = true
|
|
socket2.workspace = true
|
|
sync_wrapper.workspace = true
|
|
thiserror.workspace = true
|
|
tls-listener.workspace = true
|
|
tokio-postgres.workspace = true
|
|
tokio-rustls.workspace = true
|
|
tokio = { workspace = true, features = ["signal"] }
|
|
tracing-opentelemetry.workspace = true
|
|
tracing-subscriber.workspace = true
|
|
tracing-utils.workspace = true
|
|
tracing.workspace = true
|
|
url.workspace = true
|
|
utils.workspace = true
|
|
uuid.workspace = true
|
|
webpki-roots.workspace = true
|
|
x509-parser.workspace = true
|
|
native-tls.workspace = true
|
|
postgres-native-tls.workspace = true
|
|
|
|
workspace_hack.workspace = true
|
|
tokio-util.workspace = true
|
|
|
|
[dev-dependencies]
|
|
rcgen.workspace = true
|
|
rstest.workspace = true
|
|
tokio-postgres-rustls.workspace = true
|