Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Epic: safekeepers dynamic membership change (Phase 2) #8614

Open
5 of 24 tasks
koivunej opened this issue Aug 6, 2024 · 0 comments
Open
5 of 24 tasks

Epic: safekeepers dynamic membership change (Phase 2) #8614

koivunej opened this issue Aug 6, 2024 · 0 comments
Assignees
Labels
c/storage/safekeeper Component: storage: safekeeper

Comments

@koivunej
Copy link
Member

koivunej commented Aug 6, 2024

Phase 1 enabled runtime changes to walproposer configuration, and a semi-manual routine involving pullign timeline data between safekeepers (#4782)

In this phase, we will implement joint consensus for the safekeeper

Tasks

Tasks

Preview Give feedback
  1. 3 of 3
    koivunej
  2. arpad-m
  3. c/storage/safekeeper
    arssher
  4. c/storage/safekeeper
    arssher
  5. c/storage/safekeeper
    arssher
  6. c/storage/safekeeper
    arssher
  7. a/tech_debt c/storage c/storage/controller

Later

Tasks

Preview Give feedback
@koivunej koivunej added the c/storage/safekeeper Component: storage: safekeeper label Aug 6, 2024
@jcsp jcsp assigned arpad-m and unassigned koivunej Dec 3, 2024
github-merge-queue bot pushed a commit that referenced this issue Jan 16, 2025
…#10406)

## Problem

As part of #8614 we need to
pass options to START_WAL_PUSH.

## Summary of changes

Add two options. `allow_timeline_creation`, default true, disables
implicit timeline creation in the connection from compute. Eventually
such creation will be forbidden completely, but as we migrate to
configurations we need to support both: current mode and configurations
enabled where creation by compute is disabled.

`proto_version` specifies compute <-> sk protocol version. We have it
currently in the first greeting package also, but I plan to change tag
size from u64 to u8, which would make it hard to use. Command is more
appropriate place for it anyway.
github-merge-queue bot pushed a commit that referenced this issue Feb 25, 2025
## Problem

As part of #8614 we need to
pass membership configurations between compute and safekeepers.

## Summary of changes

Add version 3 of the protocol carrying membership configurations.
Greeting message in both sides gets full conf, and other messages
generation number only. Use protocol bump to include other accumulated
changes:
- stop packing whole structs on the wire as is;
- make the tag u8 instead of u64;
- send all ints in network order;
- drop proposer_uuid, we can pass it in START_WAL_PUSH and it wasn't
much useful anyway.
Per message changes, apart from mconf:
- ProposerGreeting: tenant / timeline id is sent now as hex cstring.
Remove proto version, it is passed outside in START_WAL_PUSH. Remove
postgres timeline, it is unused. Reorder fields a bit.
- AcceptorGreeting: reorder fields
- VoteResponse: timeline_start_lsn is removed. It can be taken from
first member of term history, and later we won't need it at all when all
timelines will be explicitly created. Vote itself is u8 instead of u64.
- ProposerElected: timeline_start_lsn is removed for the same reasons.
- AppendRequest: epoch_start_lsn removed, it is known from term history
in ProposerElected.

Both compute and sk are able to talk v2 and v3 to make rollbacks (in
case we need them) easier; neon.safekeeper_proto_version GUC sets the
client version. v2 code can be dropped later.

So far empty conf is passed everywhere, future PRs will handle them.

To test, add param to some tests choosing proto version; we want to test
both 2 and 3 until we fully migrate.

ref #10326

---------

Co-authored-by: Arthur Petukhovsky <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
c/storage/safekeeper Component: storage: safekeeper
Projects
None yet
Development

No branches or pull requests

3 participants