This is an automated email from the ASF dual-hosted git repository.

jiacai2050 pushed a commit to branch dev
in repository https://gitbox.apache.org/repos/asf/incubator-horaedb-meta.git


The following commit(s) were added to refs/heads/dev by this push:
     new ce995e2  refactor: remove useless procedure persist (#300)
ce995e2 is described below

commit ce995e2422010d9096c9c6a95eb2f6293198404f
Author: CooooolFrog <[email protected]>
AuthorDate: Thu Jan 11 15:38:59 2024 +0800

    refactor: remove useless procedure persist (#300)
    
    ## Rationale
    Currently, the `TransferLeader` procedure will be persisted every time
    it is executed, but they actually have no effect. When the cluster runs
    for a long time, some garbage data will be generated to occupy ETCD's
    storage space.
    
    ## Detailed Changes
    * Remove useless procedure persist in `transfer_leader`.
    
    ## Test Plan
    Pass CI.
---
 .../operation/transferleader/transfer_leader.go    | 70 +---------------------
 1 file changed, 2 insertions(+), 68 deletions(-)

diff --git 
a/server/coordinator/procedure/operation/transferleader/transfer_leader.go 
b/server/coordinator/procedure/operation/transferleader/transfer_leader.go
index 050c68a..db5917a 100644
--- a/server/coordinator/procedure/operation/transferleader/transfer_leader.go
+++ b/server/coordinator/procedure/operation/transferleader/transfer_leader.go
@@ -18,7 +18,6 @@ package transferleader
 
 import (
        "context"
-       "encoding/json"
        "sync"
 
        "github.com/CeresDB/ceresmeta/pkg/log"
@@ -58,6 +57,8 @@ var (
        }
 )
 
+// Procedure will not persist.
+// TODO: After supporting the expiration cleanup mechanism of Procedure, we 
can consider persisting it to facilitate tracing historical information.
 type Procedure struct {
        fsm                *fsm.FSM
        params             ProcedureParams
@@ -69,18 +70,6 @@ type Procedure struct {
        state procedure.State
 }
 
-// rawData used for storage, procedure will be converted to persist raw data 
before saved in storage.
-type rawData struct {
-       ID       uint64
-       FsmState string
-       State    procedure.State
-
-       snapshot          metadata.Snapshot
-       ShardID           storage.ShardID
-       OldLeaderNodeName string
-       NewLeaderNodeName string
-}
-
 // callbackRequest is fsm callbacks param.
 type callbackRequest struct {
        ctx context.Context
@@ -194,25 +183,16 @@ func (p *Procedure) Start(ctx context.Context) error {
        for {
                switch p.fsm.Current() {
                case stateBegin:
-                       if err := p.persist(ctx); err != nil {
-                               return errors.WithMessage(err, "transferLeader 
procedure persist")
-                       }
                        if err := p.fsm.Event(eventCloseOldLeader, 
transferLeaderRequest); err != nil {
                                p.updateStateWithLock(procedure.StateFailed)
                                return errors.WithMessage(err, "transferLeader 
procedure close old leader")
                        }
                case stateCloseOldLeader:
-                       if err := p.persist(ctx); err != nil {
-                               return errors.WithMessage(err, "transferLeader 
procedure persist")
-                       }
                        if err := p.fsm.Event(eventOpenNewLeader, 
transferLeaderRequest); err != nil {
                                p.updateStateWithLock(procedure.StateFailed)
                                return errors.WithMessage(err, "transferLeader 
procedure open new leader")
                        }
                case stateOpenNewLeader:
-                       if err := p.persist(ctx); err != nil {
-                               return errors.WithMessage(err, "transferLeader 
procedure persist")
-                       }
                        if err := p.fsm.Event(eventFinish, 
transferLeaderRequest); err != nil {
                                p.updateStateWithLock(procedure.StateFailed)
                                return errors.WithMessage(err, "transferLeader 
procedure finish")
@@ -220,26 +200,11 @@ func (p *Procedure) Start(ctx context.Context) error {
                case stateFinish:
                        // TODO: The state update sequence here is inconsistent 
with the previous one. Consider reconstructing the state update logic of the 
state machine.
                        p.updateStateWithLock(procedure.StateFinished)
-                       if err := p.persist(ctx); err != nil {
-                               return errors.WithMessage(err, "transferLeader 
procedure persist")
-                       }
                        return nil
                }
        }
 }
 
-func (p *Procedure) persist(ctx context.Context) error {
-       meta, err := p.convertToMeta()
-       if err != nil {
-               return errors.WithMessage(err, "convert to meta")
-       }
-       err = p.params.Storage.CreateOrUpdate(ctx, meta)
-       if err != nil {
-               return errors.WithMessage(err, "createOrUpdate procedure 
storage")
-       }
-       return nil
-}
-
 func (p *Procedure) Cancel(_ context.Context) error {
        p.updateStateWithLock(procedure.StateCancelled)
        return nil
@@ -325,34 +290,3 @@ func (p *Procedure) updateStateWithLock(state 
procedure.State) {
 
        p.state = state
 }
-
-// TODO: Consider refactor meta procedure convertor function, encapsulate as a 
tool function.
-func (p *Procedure) convertToMeta() (procedure.Meta, error) {
-       p.lock.RLock()
-       defer p.lock.RUnlock()
-
-       rawData := rawData{
-               ID:                p.params.ID,
-               FsmState:          p.fsm.Current(),
-               ShardID:           p.params.ShardID,
-               snapshot:          p.params.ClusterSnapshot,
-               OldLeaderNodeName: p.params.OldLeaderNodeName,
-               NewLeaderNodeName: p.params.NewLeaderNodeName,
-               State:             p.state,
-       }
-       rawDataBytes, err := json.Marshal(rawData)
-       if err != nil {
-               var emptyMeta procedure.Meta
-               return emptyMeta, 
procedure.ErrEncodeRawData.WithCausef("marshal raw data, procedureID:%v, 
err:%v", p.params.ShardID, err)
-       }
-
-       meta := procedure.Meta{
-               ID:    p.params.ID,
-               Kind:  procedure.TransferLeader,
-               State: p.state,
-
-               RawData: rawDataBytes,
-       }
-
-       return meta, nil
-}


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to