Skip to content

feat: support filtering replicas based on known lsn - #1956

Merged
levkk merged 7 commits into
mainfrom
levkk-lsn-filter
Nov 4, 2026
Merged

levkk merged 7 commits into
mainfrom
levkk-lsn-filter

Conversation

@levkk

@levkk levkk commented Nov 4, 2026

Copy link
Copy Markdown
Collaborator

@codecov

codecov Bot commented Nov 4, 2026 •

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 97.58713% with 9 lines in your changes missing coverage. Please review.

Files with missing lines Patch % Lines
pgdog-postgres-types/src/bigint.rs 58.33% 5 Missing ⚠️
pgdog-config/src/database.rs 0.00% 2 Missing ⚠️
...eplication/logical/publisher/replication_stream.rs 80.00% 1 Missing ⚠️
pgdog/src/frontend/router/comment.rs 0.00% 1 Missing ⚠️

📢 Thoughts on this report? Let us know!

@github-actions

github-actions Bot commented Nov 4, 2026 •

Copy link
Copy Markdown
Contributor

Metal bench (arm64) failed. 45 of 152 measures outside bounds.

suite throughput cpu/txn user cycles/txn user instr/txn kernel cycles/txn kernel instr/txn ctx/txn
pooler 19.97 (-0.8% ± 0.8%) 20,343 (-1.0% ± 0.2%) 35,276 (+0.1% ± 0.05%) 30,988 (-1.0% ± 1.3%) 51,779 (+0.0% ± 0.2%)
lb 20.44 (-0.4% ± 0.6%) 20,842 (-1.0% ± 0.3%) 36,201 (+0.1% ± 0.04%) 31,492 (-0.1% ± 1.1%) 53,077 (+0.1% ± 0.2%)
sharding-w2 38.3 (-0.3% ± 0.7%) 53,028 (+0.1% ± 0.6%) 102,633 (+0.1% ± 0.00%) 47,502 (-0.6% ± 1.0%) 54,323 (-0.0% ± 0.1%) 1.514 (-0.2% ± 0.1%)
sharding-w8 218,345 (+0.0% ± 0.4%) 33.65 (-0.1% ± 0.3%) 51,529 (-0.6% ± 0.5%) 57,956 (+0.1% ± 0.06%) 41,683 (+0.7% ± 0.4%) 42,954 (+0.0% ± 0.07%) 0.1416 (+0.3% ± 1.1%)
Counters per txn
suite frontend stall l1i refill backend stall
pooler 8,374 (-3.3% ± 0.7%) 2,794 (-0.3% ± 0.3%)
lb 8,590 (-3.6% ± 0.8%) 2,840 (-0.4% ± 0.3%)
sharding-w2 24,680 (+0.3% ± 1.8%) 4,930 (-0.0% ± 1.1%)
sharding-w8 26,246 (-0.9% ± 0.6%) 4,726 (-1.7% ± 0.3%)
benchmark measure result baseline change bound
extended_cached::aggregate alloc_bytes 941 917 +2.62% ± 0.00% +1%
extended_cached::begin alloc_bytes 240 216 +11.11% ± 0.00% +1%
extended_cached::cte alloc_bytes 1,204 1,180 +2.03% ± 0.00% +1%
extended_cached::delete_by_key alloc_bytes 636 612 +3.92% ± 0.00% +1%
extended_cached::insert alloc_bytes 560 536 +4.48% ± 0.00% +1%
extended_cached::insert_split alloc_bytes 6,810 6,530 +4.29% ± 0.00% +1%
extended_cached::join alloc_bytes 1,588 1,564 +1.53% ± 0.00% +1%
extended_cached::order_limit_offset alloc_bytes 931 907 +2.65% ± 0.00% +1%
extended_cached::select_all_shards alloc_bytes 624 600 +4.00% ± 0.00% +1%
extended_cached::select_by_key alloc_bytes 936 912 +2.63% ± 0.00% +1%
extended_cached::select_in_list alloc_bytes 1,144 1,120 +2.14% ± 0.00% +1%
extended_cached::select_omni alloc_bytes 432 408 +5.88% ± 0.00% +1%
extended_cached::set alloc_bytes 425 401 +5.99% ± 0.00% +1%
extended_cached::subquery alloc_bytes 816 792 +3.03% ± 0.00% +1%
extended_cached::update_by_key alloc_bytes 636 612 +3.92% ± 0.00% +1%
extended_cold::aggregate alloc_bytes 2,006 1,982 +1.21% ± 0.00% +1%
extended_cold::begin alloc_bytes 678 654 +3.67% ± 0.00% +1%
extended_cold::cte alloc_bytes 1,755 1,731 +1.39% ± 0.00% +1%
extended_cold::delete_by_key alloc_bytes 1,125 1,101 +2.18% ± 0.00% +1%
extended_cold::insert alloc_bytes 1,511 1,487 +1.61% ± 0.00% +1%
extended_cold::insert_split alloc_bytes 9,386 9,106 +3.07% ± 0.00% +1%
extended_cold::join alloc_bytes 2,166 2,142 +1.12% ± 0.00% +1%
extended_cold::order_limit_offset alloc_bytes 1,547 1,523 +1.58% ± 0.00% +1%
extended_cold::select_all_shards alloc_bytes 1,094 1,070 +2.24% ± 0.00% +1%
extended_cold::select_by_key alloc_bytes 1,435 1,411 +1.70% ± 0.00% +1%
extended_cold::select_in_list alloc_bytes 1,660 1,636 +1.47% ± 0.00% +1%
extended_cold::select_omni alloc_bytes 915 891 +2.69% ± 0.00% +1%
extended_cold::set alloc_bytes 911 887 +2.71% ± 0.00% +1%
extended_cold::subquery alloc_bytes 1,368 1,344 +1.79% ± 0.00% +1%
extended_cold::update_by_key alloc_bytes 1,152 1,128 +2.13% ± 0.00% +1%
simple_cold::aggregate alloc_bytes 1,870 1,846 +1.30% ± 0.00% +1%
simple_cold::begin alloc_bytes 614 590 +4.07% ± 0.00% +1%
simple_cold::cte alloc_bytes 1,691 1,667 +1.44% ± 0.00% +1%
simple_cold::delete_by_key alloc_bytes 1,061 1,037 +2.31% ± 0.00% +1%
simple_cold::insert alloc_bytes 1,447 1,423 +1.69% ± 0.00% +1%
simple_cold::insert_split alloc_bytes 8,058 7,922 +1.72% ± 0.00% +1%
simple_cold::join alloc_bytes 2,102 2,078 +1.15% ± 0.00% +1%
simple_cold::order_limit_offset alloc_bytes 1,425 1,401 +1.71% ± 0.00% +1%
simple_cold::select_all_shards alloc_bytes 1,030 1,006 +2.39% ± 0.00% +1%
simple_cold::select_by_key alloc_bytes 1,371 1,347 +1.78% ± 0.00% +1%

Microbench: 90 of 135 measures within bounds. See verdict.json for the rest.

Microbench latency: 2 benches changed more than 3%
benchmark latency baseline change instructions change
simple_cold::set 2,304 ns 2,392 ns -3.67% ± 0.42% +0.38% ± 0.00%
simple_cold::begin 1,965 ns 1,901 ns +3.38% ± 0.70% +0.55% ± 0.00%
lb flamegraph vs 6c785c0

lb

Open interactive for hover, zoom and search.

lb removed

Open interactive.

microbench flamegraph vs 6c785c0

microbench

Open interactive for hover, zoom and search.

microbench removed

Open interactive.

pooler flamegraph vs 6c785c0

pooler

Open interactive for hover, zoom and search.

pooler removed

Open interactive.

sharding-w2 flamegraph vs 6c785c0

sharding-w2

Open interactive for hover, zoom and search.

sharding-w2 removed

Open interactive.

sharding-w8 flamegraph vs 6c785c0

sharding-w8

Open interactive for hover, zoom and search.

sharding-w8 removed

Open interactive.

Logs

lb, microbench, pooler, sharding-w2, sharding-w8, verdict.json

Compared 6739d44 with 6c785c0 on m8g.metal-24xl (spot).

@github-actions

github-actions Bot commented Nov 4, 2026 •

Copy link
Copy Markdown
Contributor

Metal bench (x86) failed. 47 of 152 measures outside bounds.

suite throughput cpu/txn user cycles/txn user instr/txn kernel cycles/txn kernel instr/txn ctx/txn
pooler 35.15 (-0.5% ± 0.1%) 24,525 (-1.4% ± 0.3%) 36,709 (+0.0% ± 0.01%) 57,605 (-0.3% ± 0.2%) 38,484 (+0.0% ± 0.2%)
lb 36.14 (-0.5% ± 0.2%) 25,599 (-1.5% ± 0.4%) 37,653 (+0.1% ± 0.02%) 58,618 (-0.1% ± 0.3%) 39,177 (+0.1% ± 0.2%)
sharding-w2 57.85 (-0.5% ± 0.3%) 57,108 (-0.3% ± 0.4%) 106,046 (+0.0% ± 0.04%) 73,040 (-0.7% ± 0.8%) 43,007 (+0.0% ± 0.08%) 1.381 (+0.1% ± 0.3%)
sharding-w8 143,706 (-0.3% ± 0.8%) 50.06 (+0.2% ± 0.4%) 62,650 (+0.5% ± 0.4%) 61,446 (+0.0% ± 0.03%) 64,764 (+0.1% ± 0.7%) 34,212 (-0.0% ± 0.06%) 0.1564 (-2.3% ± 0.6%)
Counters per txn
suite frontend stall l1i refill backend stall
pooler 77,158 (-2.9% ± 0.4%) 3,748 (-3.1% ± 0.1%)
lb 80,165 (-2.5% ± 0.6%) 3,880 (-3.0% ± 0.09%)
sharding-w2 170,123 (-2.5% ± 0.8%) 6,400 (-2.7% ± 0.3%)
sharding-w8 133,241 (-0.8% ± 1.5%) 5,101 (-0.2% ± 0.3%)
benchmark measure result baseline change bound
extended_cached::aggregate alloc_bytes 941 917 +2.62% ± 0.00% +1%
extended_cached::begin alloc_bytes 240 216 +11.11% ± 0.00% +1%
extended_cached::cte alloc_bytes 1,228 1,204 +1.99% ± 0.00% +1%
extended_cached::delete_by_key alloc_bytes 644 620 +3.87% ± 0.00% +1%
extended_cached::insert alloc_bytes 560 536 +4.48% ± 0.00% +1%
extended_cached::insert_split alloc_bytes 6,810 6,530 +4.29% ± 0.00% +1%
extended_cached::join alloc_bytes 1,612 1,588 +1.51% ± 0.00% +1%
extended_cached::order_limit_offset alloc_bytes 931 907 +2.65% ± 0.00% +1%
extended_cached::order_limit_offset instructions 18,060 17,666 +2.23% ± 0.00% +1%
extended_cached::select_all_shards alloc_bytes 624 600 +4.00% ± 0.00% +1%
extended_cached::select_by_key alloc_bytes 952 928 +2.59% ± 0.00% +1%
extended_cached::select_in_list alloc_bytes 1,160 1,136 +2.11% ± 0.00% +1%
extended_cached::select_omni alloc_bytes 432 408 +5.88% ± 0.00% +1%
extended_cached::set alloc_bytes 425 401 +5.99% ± 0.00% +1%
extended_cached::set instructions 8,213 7,845 +4.69% ± 0.00% +1%
extended_cached::subquery alloc_bytes 816 792 +3.03% ± 0.00% +1%
extended_cached::update_by_key alloc_bytes 644 620 +3.87% ± 0.00% +1%
extended_cold::aggregate alloc_bytes 2,006 1,982 +1.21% ± 0.00% +1%
extended_cold::begin alloc_bytes 678 654 +3.67% ± 0.00% +1%
extended_cold::cte alloc_bytes 1,779 1,755 +1.37% ± 0.00% +1%
extended_cold::delete_by_key alloc_bytes 1,133 1,109 +2.16% ± 0.00% +1%
extended_cold::insert alloc_bytes 1,511 1,487 +1.61% ± 0.00% +1%
extended_cold::insert_split alloc_bytes 9,386 9,106 +3.07% ± 0.00% +1%
extended_cold::join alloc_bytes 2,190 2,166 +1.11% ± 0.00% +1%
extended_cold::order_limit_offset alloc_bytes 1,547 1,523 +1.58% ± 0.00% +1%
extended_cold::select_all_shards alloc_bytes 1,094 1,070 +2.24% ± 0.00% +1%
extended_cold::select_by_key alloc_bytes 1,451 1,427 +1.68% ± 0.00% +1%
extended_cold::select_in_list alloc_bytes 1,676 1,652 +1.45% ± 0.00% +1%
extended_cold::select_omni alloc_bytes 915 891 +2.69% ± 0.00% +1%
extended_cold::set alloc_bytes 911 887 +2.71% ± 0.00% +1%
extended_cold::subquery alloc_bytes 1,368 1,344 +1.79% ± 0.00% +1%
extended_cold::update_by_key alloc_bytes 1,160 1,136 +2.11% ± 0.00% +1%
simple_cold::aggregate alloc_bytes 1,870 1,846 +1.30% ± 0.00% +1%
simple_cold::begin alloc_bytes 614 590 +4.07% ± 0.00% +1%
simple_cold::cte alloc_bytes 1,715 1,691 +1.42% ± 0.00% +1%
simple_cold::delete_by_key alloc_bytes 1,069 1,045 +2.30% ± 0.00% +1%
simple_cold::insert alloc_bytes 1,447 1,423 +1.69% ± 0.00% +1%
simple_cold::insert_split alloc_bytes 8,058 7,922 +1.72% ± 0.00% +1%
simple_cold::join alloc_bytes 2,126 2,102 +1.14% ± 0.00% +1%
simple_cold::order_limit_offset alloc_bytes 1,425 1,401 +1.71% ± 0.00% +1%

Microbench: 88 of 135 measures within bounds. See verdict.json for the rest.

lb flamegraph vs 6c785c0

lb

Open interactive for hover, zoom and search.

lb removed

Open interactive.

microbench flamegraph vs 6c785c0

microbench

Open interactive for hover, zoom and search.

microbench removed

Open interactive.

pooler flamegraph vs 6c785c0

pooler

Open interactive for hover, zoom and search.

pooler removed

Open interactive.

sharding-w2 flamegraph vs 6c785c0

sharding-w2

Open interactive for hover, zoom and search.

sharding-w2 removed

Open interactive.

sharding-w8 flamegraph vs 6c785c0

sharding-w8

Open interactive for hover, zoom and search.

sharding-w8 removed

Open interactive.

Logs

lb, microbench, pooler, sharding-w2, sharding-w8, verdict.json

Compared 6739d44 with 6c785c0 on m7a.metal-48xl (spot).

@levkk
levkk merged commit b5e6d54 into main Nov 4, 2026
44 of 46 checks passed
@levkk
levkk deleted the levkk-lsn-filter branch November 4, 2026 22:28
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant