123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 |
- package topology
- import (
- "encoding/json"
- "fmt"
- hashicorpRaft "github.com/hashicorp/raft"
- "github.com/seaweedfs/raft"
- "github.com/seaweedfs/seaweedfs/weed/glog"
- "github.com/seaweedfs/seaweedfs/weed/storage/needle"
- )
- type MaxVolumeIdCommand struct {
- MaxVolumeId needle.VolumeId `json:"maxVolumeId"`
- }
- func NewMaxVolumeIdCommand(value needle.VolumeId) *MaxVolumeIdCommand {
- return &MaxVolumeIdCommand{
- MaxVolumeId: value,
- }
- }
- func (c *MaxVolumeIdCommand) CommandName() string {
- return "MaxVolumeId"
- }
- // deprecatedCommandApply represents the old interface to apply a command to the server.
- func (c *MaxVolumeIdCommand) Apply(server raft.Server) (interface{}, error) {
- topo := server.Context().(*Topology)
- before := topo.GetMaxVolumeId()
- topo.UpAdjustMaxVolumeId(c.MaxVolumeId)
- glog.V(1).Infoln("max volume id", before, "==>", topo.GetMaxVolumeId())
- return nil, nil
- }
- func (s *MaxVolumeIdCommand) Persist(sink hashicorpRaft.SnapshotSink) error {
- b, err := json.Marshal(s)
- if err != nil {
- return fmt.Errorf("marshal: %v", err)
- }
- _, err = sink.Write(b)
- if err != nil {
- sink.Cancel()
- return fmt.Errorf("sink.Write(): %v", err)
- }
- return sink.Close()
- }
- func (s *MaxVolumeIdCommand) Release() {
- }
|