github.com/hernad/nomad@v1.6.112/command/raft_tools/state.go (about)

     1  // Copyright (c) HashiCorp, Inc.
     2  // SPDX-License-Identifier: MPL-2.0
     3  
     4  package rafttools
     5  
     6  import (
     7  	"fmt"
     8  
     9  	raftboltdb "github.com/hashicorp/raft-boltdb/v2"
    10  )
    11  
    12  func RaftState(p string) (store *raftboltdb.BoltStore, firstIdx uint64, lastIdx uint64, err error) {
    13  	s, err := raftboltdb.NewBoltStore(p)
    14  	if err != nil {
    15  		return nil, 0, 0, fmt.Errorf("failed to open raft logs: %v", err)
    16  	}
    17  
    18  	firstIdx, err = s.FirstIndex()
    19  	if err != nil {
    20  		return nil, 0, 0, fmt.Errorf("failed to fetch first index: %v", err)
    21  	}
    22  
    23  	lastIdx, err = s.LastIndex()
    24  	if err != nil {
    25  		return nil, 0, 0, fmt.Errorf("failed to fetch last index: %v", err)
    26  	}
    27  
    28  	return s, firstIdx, lastIdx, nil
    29  }