Skip to content

Migrate from openark/raft fork to upstream hashicorp/raft v1.7 #61

@renecannao

Description

@renecannao

Raft Upstream Migration

Based on the evaluation in PR #59 (docs/raft-evaluation.md), migrate from the 2017 openark/raft fork to upstream hashicorp/raft v1.7.x.

Why

  • 9 years of missing security patches, bug fixes, and performance improvements
  • Fork uses deprecated APIs removed from upstream
  • No pre-vote protocol (split-brain risk)
  • No leadership transfer support

Scope (from evaluation)

10 divergent API calls to migrate:

  1. raft.NewRaft() — 7-arg → 6-arg constructor (PeerStore removed)
  2. raft.Configuration / bootstrapping — replace StaticPeers + EnableSingleNode
  3. AddPeer / RemovePeer — replace with AddVoter / RemoveServer
  4. Yield() — replace with LeadershipTransfer()
  5. SnapshotStore.Create() — signature change (SnapshotMeta.PeersConfiguration)
  6. PeerStore — removed entirely, use GetConfiguration()

Estimated effort: ~32 hours (3-5 working days)

Files to modify

  • go/raft/raft.go — main initialization (heaviest changes)
  • go/raft/file_snapshot.go — snapshot store
  • go/raft/fsm.go — FSM (minor)
  • go/raft/store.go — compatible, minimal changes
  • go/raft/rel_store.go — compatible
  • go/raft/http_client.go — transport changes
  • go.mod — remove replace directive, add hashicorp/raft v1.7.x

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions