Skip to content
Snippets Groups Projects
Unverified Commit fdca65e7 authored by Wei Ziran's avatar Wei Ziran Committed by GitHub
Browse files

refactor LogString (#4734)


Co-authored-by: default avatarmergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
Co-authored-by: default avatarfengttt <fengttt@gmail.com>
parent ef2d4630
No related branches found
No related tags found
No related merge requests found
......@@ -17,6 +17,7 @@ package logservice
import (
"fmt"
"reflect"
"sort"
"github.com/matrixorigin/matrixone/pkg/pb/metadata"
)
......@@ -155,52 +156,44 @@ func (s *LogState) updateShards(hb LogStoreHeartbeat) {
// LogString returns "ServiceType/ConfigChangeType UUID RepUuid:RepShardID:RepID InitialMembers"
func (m *ScheduleCommand) LogString() string {
var serviceType = map[ServiceType]string{
c := func(s string) string {
if len(s) > 6 {
return s[:6]
}
return s
}
serviceType := map[ServiceType]string{
LogService: "L",
DnService: "D",
}[m.ServiceType]
target := c(m.UUID)
if m.ConfigChange == nil {
return fmt.Sprintf("%s/shutdown %s", serviceType, target)
}
var configChangeType = map[ConfigChangeType]string{
configChangeType := map[ConfigChangeType]string{
AddReplica: "Add",
RemoveReplica: "Remove",
StartReplica: "Start",
StopReplica: "Stop",
KillZombie: "Kill",
}
scheUuid := m.UUID
if len(m.UUID) > 6 {
scheUuid = scheUuid[:6]
}
}[m.ConfigChange.ChangeType]
if m.ConfigChange == nil {
return fmt.Sprintf("%s/shutdown %s", serviceType[m.ServiceType], scheUuid)
}
repUuid := m.ConfigChange.Replica.UUID
if len(repUuid) > 6 {
repUuid = repUuid[:6]
}
replica := c(m.ConfigChange.Replica.UUID)
s := fmt.Sprintf("%s/%s %s %s:%d:%d:%d",
serviceType, configChangeType, target, replica,
m.ConfigChange.Replica.ShardID,
m.ConfigChange.Replica.ReplicaID,
m.ConfigChange.Replica.Epoch)
var initMembers map[uint64]string
if len(m.ConfigChange.InitialMembers) == 0 {
initMembers = nil
} else {
initMembers = make(map[uint64]string)
if len(m.ConfigChange.InitialMembers) != 0 {
initMembers := make([]string, 0, len(m.ConfigChange.InitialMembers))
for repId, uuid := range m.ConfigChange.InitialMembers {
if len(uuid) > 6 {
initMembers[repId] = uuid[:6]
} else {
initMembers[repId] = uuid
}
initMembers = append(initMembers, fmt.Sprintf("%d:%s", repId, c(uuid)))
}
}
s := fmt.Sprintf("%s/%s %s %s:%d:%d:%d", serviceType[m.ServiceType],
configChangeType[m.ConfigChange.ChangeType], scheUuid,
repUuid, m.ConfigChange.Replica.ShardID,
m.ConfigChange.Replica.ReplicaID, m.ConfigChange.Replica.Epoch)
if initMembers != nil {
sort.Strings(initMembers)
s += fmt.Sprintf(" %v", initMembers)
}
......
......@@ -303,6 +303,24 @@ func TestLogString(t *testing.T) {
},
expected: "L/Kill storeA storeA:1:0:0",
},
{
desc: "bootstrapping",
command: ScheduleCommand{
UUID: "storeA",
Bootstrapping: true,
ConfigChange: &ConfigChange{
Replica: Replica{
UUID: "storeA",
ShardID: 1,
ReplicaID: 1,
},
ChangeType: StartReplica,
InitialMembers: map[uint64]string{1: "storeA123", 2: "storeB", 3: "storeC"},
},
ServiceType: LogService,
},
expected: "L/Start storeA storeA:1:1:0 [1:storeA 2:storeB 3:storeC]",
},
}
for _, c := range cases {
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment