mirror of
https://github.com/neondatabase/neon.git
synced 2026-01-04 12:02:55 +00:00
Most of the work here was done on the postgres side. There's more
information in the commit message there.
(see: 04cfa326a5)
On the WAL acceptor side, we're now expecting 'START_WAL_PUSH' to
initialize the WAL keeper protocol. Everything else is mostly the same,
with the only real difference being that protocol messages are now
discrete CopyData messages sent over the postgres protocol.
For the sake of documentation, the full set of these messages is:
<- recv: START_WAL_PUSH query
<- recv: server info from postgres (type `ServerInfo`)
-> send: walkeeper info (type `SafeKeeperInfo`)
<- recv: vote info (type `RequestVote`)
if node id mismatch:
-> send: self node id (type `NodeId`); exit
-> send: confirm vote (with node id) (type `NodeId`)
loop:
<- recv: info and maybe WAL block (type `SafeKeeperRequest` + bytes)
(break loop if done)
-> send: confirm receipt (type `SafeKeeperResponse`)
41 lines
1.2 KiB
TOML
41 lines
1.2 KiB
TOML
[package]
|
|
name = "walkeeper"
|
|
version = "0.1.0"
|
|
authors = ["Stas Kelvich <stas@zenith.tech>"]
|
|
edition = "2018"
|
|
|
|
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
|
|
|
[dependencies]
|
|
regex = "1.4.5"
|
|
bincode = "1.3"
|
|
bytes = "1.0.1"
|
|
byteorder = "1.4.3"
|
|
fs2 = "0.4.3"
|
|
lazy_static = "1.4.0"
|
|
slog-stdlog = "4.1.0"
|
|
slog-async = "2.6.0"
|
|
slog-scope = "4.4.0"
|
|
slog-term = "2.8.0"
|
|
slog = "2.7.0"
|
|
log = "0.4.14"
|
|
clap = "2.33.0"
|
|
daemonize = "0.4.1"
|
|
rust-s3 = { version = "0.27.0-rc4", features = ["no-verify-ssl"] }
|
|
tokio = { version = "1.3.0", features = ["full"] }
|
|
tokio-stream = { version = "0.1.4" }
|
|
postgres-protocol = { git = "https://github.com/zenithdb/rust-postgres.git", rev="9eb0dbfbeb6a6c1b79099b9f7ae4a8c021877858" }
|
|
postgres = { git = "https://github.com/zenithdb/rust-postgres.git", rev="9eb0dbfbeb6a6c1b79099b9f7ae4a8c021877858" }
|
|
anyhow = "1.0"
|
|
crc32c = "0.6.0"
|
|
humantime = "2.1.0"
|
|
walkdir = "2"
|
|
serde = { version = "1.0", features = ["derive"] }
|
|
hex = "0.4.3"
|
|
|
|
# FIXME: 'pageserver' is needed for ZTimelineId. Refactor
|
|
pageserver = { path = "../pageserver" }
|
|
postgres_ffi = { path = "../postgres_ffi" }
|
|
workspace_hack = { path = "../workspace_hack" }
|
|
zenith_utils = { path = "../zenith_utils" }
|