aergoio/aergo

View on GitHub
consensus/impl/raftv2/cluster.go

Summary

Maintainability
D
2 days
Test Coverage
F
30%

File cluster.go has 830 lines of code (exceeds 500 allowed). Consider refactoring.
Open

package raftv2

import (
    "bytes"
    "context"
Severity: Major
Found in consensus/impl/raftv2/cluster.go - About 1 day to fix

    Cluster has 41 methods (exceeds 20 allowed). Consider refactoring.
    Open

    type Cluster struct {
        component.ICompSyncRequester
        sync.Mutex
        cdb consensus.ChainDB
    
    
    Severity: Minor
    Found in consensus/impl/raftv2/cluster.go - About 5 hrs to fix

      Method Cluster.isEnableChangeMembership has 57 lines of code (exceeds 50 allowed). Consider refactoring.
      Open

      func (cl *Cluster) isEnableChangeMembership(cc *raftpb.ConfChange) error {
          status := cl.rs.Status()
          if status.ID == 0 {
              logger.Debug().Msg("raft node is not initialized")
              return ErrRaftStatusEmpty
      Severity: Minor
      Found in consensus/impl/raftv2/cluster.go - About 1 hr to fix

        Method Cluster.isEnableChangeMembership has 11 return statements (exceeds 4 allowed).
        Open

        func (cl *Cluster) isEnableChangeMembership(cc *raftpb.ConfChange) error {
            status := cl.rs.Status()
            if status.ID == 0 {
                logger.Debug().Msg("raft node is not initialized")
                return ErrRaftStatusEmpty
        Severity: Major
        Found in consensus/impl/raftv2/cluster.go - About 1 hr to fix

          Method Cluster.validateChangeMembership has 8 return statements (exceeds 4 allowed).
          Open

          func (cl *Cluster) validateChangeMembership(cc *raftpb.ConfChange, member *consensus.Member, needlock bool) error {
              if member == nil {
                  return ErrCCMemberIsNil
              }
          
          
          Severity: Major
          Found in consensus/impl/raftv2/cluster.go - About 50 mins to fix

            Method Cluster.ChangeMembership has 7 return statements (exceeds 4 allowed).
            Open

            func (cl *Cluster) ChangeMembership(req *types.MembershipChange, nowait bool) (*consensus.Member, error) {
                var (
                    proposal *consensus.ConfChangePropose
                    err      error
                )
            Severity: Major
            Found in consensus/impl/raftv2/cluster.go - About 45 mins to fix

              Method Cluster.isAllMembersEqual has 6 return statements (exceeds 4 allowed).
              Open

              func (cl *Cluster) isAllMembersEqual(members []*consensus.Member, RemovedMembers []*consensus.Member) bool {
                  membersEqual := func(x []*consensus.Member, y []*consensus.Member) bool {
                      if len(x) != len(y) {
                          return false
                      }
              Severity: Major
              Found in consensus/impl/raftv2/cluster.go - About 40 mins to fix

                Method Cluster.makeProposal has 5 return statements (exceeds 4 allowed).
                Open

                func (cl *Cluster) makeProposal(req *types.MembershipChange, nowait bool) (*consensus.ConfChangePropose, error) {
                    if cl.savedChange != nil {
                        logger.Error().Str("cc", types.RaftConfChangeToString(cl.savedChange.Cc)).Msg("already exist pending conf change")
                        return nil, ErrPendingConfChange
                    }
                Severity: Major
                Found in consensus/impl/raftv2/cluster.go - About 35 mins to fix

                  There are no issues that match your filters.

                  Category
                  Status