mirror of
https://github.com/neondatabase/neon.git
synced 2026-01-08 14:02:55 +00:00
fixes https://github.com/neondatabase/neon/issues/5878 obsoletes https://github.com/neondatabase/neon/issues/5879 Before this PR, it could happen that `load_layer_map` schedules removal of the future image layer. Then a later compaction run could re-create the same image layer, scheduling a PUT. Due to lack of an upload queue barrier, the PUT and DELETE could be re-ordered. The result was IndexPart referencing a non-existent object. ## Summary of changes * Add support to `pagectl` / Python tests to decode `IndexPart` * Rust * new `pagectl` Subcommand * `IndexPart::{from,to}_s3_bytes()` methods to internalize knowledge about encoding of `IndexPart` * Python * new `NeonCli` subclass * Add regression test * Rust * Ability to force repartitioning; required to ensure image layer creation at last_record_lsn * Python * The regression test. * Fix the issue * Insert an `UploadOp::Barrier` after scheduling the deletions.
23 lines
573 B
TOML
23 lines
573 B
TOML
[package]
|
|
name = "pagectl"
|
|
version = "0.1.0"
|
|
edition.workspace = true
|
|
license.workspace = true
|
|
|
|
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
|
|
|
[dependencies]
|
|
anyhow.workspace = true
|
|
bytes.workspace = true
|
|
camino.workspace = true
|
|
clap = { workspace = true, features = ["string"] }
|
|
git-version.workspace = true
|
|
pageserver = { path = ".." }
|
|
postgres_ffi.workspace = true
|
|
tokio.workspace = true
|
|
utils.workspace = true
|
|
svg_fmt.workspace = true
|
|
workspace_hack.workspace = true
|
|
serde.workspace = true
|
|
serde_json.workspace = true
|