func printRaftLogEntry(kv engine.MVCCKeyValue) (bool, error) { var meta engine.MVCCMetadata if err := meta.Unmarshal(kv.Value); err != nil { return false, err } value := roachpb.Value{ RawBytes: meta.RawBytes, } var ent raftpb.Entry if err := value.GetProto(&ent); err != nil { return false, err } if len(ent.Data) > 0 { _, cmdData := storage.DecodeRaftCommand(ent.Data) var cmd roachpb.RaftCommand if err := cmd.Unmarshal(cmdData); err != nil { return false, err } ent.Data = nil fmt.Printf("%s\n", &ent) fmt.Printf("%s\n", &cmd) } else { fmt.Printf("%s: EMPTY\n", &ent) } return false, nil }
func tryRaftLogEntry(kv engine.MVCCKeyValue) (string, error) { var ent raftpb.Entry if err := maybeUnmarshalInline(kv.Value, &ent); err != nil { return "", err } if ent.Type == raftpb.EntryNormal { if len(ent.Data) > 0 { _, cmdData := storage.DecodeRaftCommand(ent.Data) var cmd roachpb.RaftCommand if err := cmd.Unmarshal(cmdData); err != nil { return "", err } ent.Data = nil return fmt.Sprintf("%s by %v\n%s\n%s\n", &ent, cmd.OriginReplica, &cmd.Cmd, &cmd), nil } return fmt.Sprintf("%s: EMPTY\n", &ent), nil } else if ent.Type == raftpb.EntryConfChange { var cc raftpb.ConfChange if err := cc.Unmarshal(ent.Data); err != nil { return "", err } var ctx storage.ConfChangeContext if err := ctx.Unmarshal(cc.Context); err != nil { return "", err } var cmd roachpb.RaftCommand if err := cmd.Unmarshal(ctx.Payload); err != nil { return "", err } ent.Data = nil return fmt.Sprintf("%s\n%s\n", &ent, &cmd), nil } return "", fmt.Errorf("Unknown log entry type: %s\n", &ent) }