Unify logic of building raft-loggers for etcd.

1. We had the same code copied 3 times.
2. For no good reason the code was not reusing existing logger if this one is given.
This commit is contained in:
Piotr Tabor 2021-03-14 16:02:50 +01:00
parent 44bd22307e
commit 1e7c1805d8

View File

@ -461,17 +461,7 @@ func startNode(cfg config.ServerConfig, cl *membership.RaftCluster, ids []types.
CheckQuorum: true,
PreVote: cfg.PreVote,
}
if cfg.Logger != nil {
// called after capnslog setting in "init" function
if cfg.LoggerConfig != nil {
c.Logger, err = NewRaftLogger(cfg.LoggerConfig)
if err != nil {
log.Fatalf("cannot create raft logger %v", err)
}
} else if cfg.LoggerCore != nil && cfg.LoggerWriteSyncer != nil {
c.Logger = NewRaftLoggerFromZapCore(cfg.LoggerCore, cfg.LoggerWriteSyncer)
}
}
c.Logger, err = getRaftLogger(cfg)
if len(peers) == 0 {
n = raft.RestartNode(c)
@ -515,17 +505,10 @@ func restartNode(cfg config.ServerConfig, snapshot *raftpb.Snapshot) (types.ID,
CheckQuorum: true,
PreVote: cfg.PreVote,
}
if cfg.Logger != nil {
// called after capnslog setting in "init" function
var err error
if cfg.LoggerConfig != nil {
c.Logger, err = NewRaftLogger(cfg.LoggerConfig)
if err != nil {
log.Fatalf("cannot create raft logger %v", err)
}
} else if cfg.LoggerCore != nil && cfg.LoggerWriteSyncer != nil {
c.Logger = NewRaftLoggerFromZapCore(cfg.LoggerCore, cfg.LoggerWriteSyncer)
}
var err error
c.Logger, err = getRaftLogger(cfg)
if err != nil {
log.Fatalf("cannot create raft logger %v", err)
}
n := raft.RestartNode(c)
@ -600,16 +583,10 @@ func restartAsStandaloneNode(cfg config.ServerConfig, snapshot *raftpb.Snapshot)
CheckQuorum: true,
PreVote: cfg.PreVote,
}
if cfg.Logger != nil {
// called after capnslog setting in "init" function
if cfg.LoggerConfig != nil {
c.Logger, err = NewRaftLogger(cfg.LoggerConfig)
if err != nil {
log.Fatalf("cannot create raft logger %v", err)
}
} else if cfg.LoggerCore != nil && cfg.LoggerWriteSyncer != nil {
c.Logger = NewRaftLoggerFromZapCore(cfg.LoggerCore, cfg.LoggerWriteSyncer)
}
c.Logger, err = getRaftLogger(cfg)
if err != nil {
log.Fatalf("cannot create raft logger %v", err)
}
n := raft.RestartNode(c)
@ -617,6 +594,20 @@ func restartAsStandaloneNode(cfg config.ServerConfig, snapshot *raftpb.Snapshot)
return id, cl, n, s, w
}
func getRaftLogger(cfg config.ServerConfig) (raft.Logger, error) {
if cfg.Logger != nil {
// called after capnslog setting in "init" function
if cfg.LoggerConfig != nil {
return NewRaftLogger(cfg.LoggerConfig)
} else if cfg.LoggerCore != nil && cfg.LoggerWriteSyncer != nil {
return NewRaftLoggerFromZapCore(cfg.LoggerCore, cfg.LoggerWriteSyncer), nil
} else {
return NewRaftLoggerZap(cfg.Logger), nil
}
}
return nil, nil
}
// getIDs returns an ordered set of IDs included in the given snapshot and
// the entries. The given snapshot/entries can contain three kinds of
// ID-related entry: