mirror of
https://github.com/neondatabase/neon.git
synced 2026-01-07 13:32:57 +00:00
Downsides are:
* We store all components of the config separately. `Url` stores them inside a single
`String` and a bunch of ints which point to different parts of the URL, which is
probably more efficient.
* It is now impossible to pass arbitrary connection strings to the configuration file,
one has to support all components explicitly. However, we never supported anything
except for `host:port` anyway.
Upsides are:
* This significantly restricts the space of possible connection strings, some of which
may be either invalid or unsupported. E.g. Postgres' connection strings may include
a bunch of parameters as query (e.g. `connect_timeout=`, `options=`). These are nether
validated by the current implementation, nor passed to the postgres client library,
Hence, storing separate fields expresses the intention better.
* The same connection configuration may be represented as a URL in multiple ways
(e.g. either `password=` in the query part or a standard URL password).
Now we have a single canonical way.
* Escaping is provided for `options=`.
Other possibilities considered:
* `newtype` with a `String` inside and some validation on creation.
This is more efficient, but harder to log for two reasons:
* Passwords should never end up in logs, so we have to somehow
* Escaped `options=` are harder to read, especially if URL-encoded,
and we use `options=` a lot.
30 lines
969 B
TOML
30 lines
969 B
TOML
[package]
|
|
name = "control_plane"
|
|
version = "0.1.0"
|
|
edition = "2021"
|
|
|
|
[dependencies]
|
|
anyhow = "1.0"
|
|
clap = "4.0"
|
|
comfy-table = "6.1"
|
|
git-version = "0.3.5"
|
|
nix = "0.25"
|
|
once_cell = "1.13.0"
|
|
postgres = { git = "https://github.com/neondatabase/rust-postgres.git", rev = "d052ee8b86fff9897c77b0fe89ea9daba0e1fa38" }
|
|
regex = "1"
|
|
reqwest = { version = "0.11", default-features = false, features = ["blocking", "json", "rustls-tls"] }
|
|
serde = { version = "1.0", features = ["derive"] }
|
|
serde_with = "2.0"
|
|
tar = "0.4.38"
|
|
thiserror = "1"
|
|
toml = "0.5"
|
|
url = "2.2.2"
|
|
|
|
# Note: Do not directly depend on pageserver or safekeeper; use pageserver_api or safekeeper_api
|
|
# instead, so that recompile times are better.
|
|
pageserver_api = { path = "../libs/pageserver_api" }
|
|
postgres_connection = { path = "../libs/postgres_connection" }
|
|
safekeeper_api = { path = "../libs/safekeeper_api" }
|
|
utils = { path = "../libs/utils" }
|
|
workspace_hack = { version = "0.1", path = "../workspace_hack" }
|