mirror of
https://github.com/percona/percona-toolkit.git
synced 2025-09-23 12:47:56 +00:00
Fix: typos
This commit is contained in:

committed by
Sveta Smirnova

parent
7876a0511c
commit
3fae43123e
@@ -233,7 +233,7 @@ type transitionSummary [RowPerTransitions]string
|
|||||||
// because only those transitions are implemented: file path, ip, node name, version
|
// because only those transitions are implemented: file path, ip, node name, version
|
||||||
const NumberOfPossibleTransition = 4
|
const NumberOfPossibleTransition = 4
|
||||||
|
|
||||||
// transactionSeparator is useful to highligh a change of context
|
// transactionSeparator is useful to highlight a change of context
|
||||||
// example, changing file
|
// example, changing file
|
||||||
// mysqld.log.2
|
// mysqld.log.2
|
||||||
// (file path)
|
// (file path)
|
||||||
|
@@ -46,7 +46,7 @@ var PXCOperatorMap = types.RegexMap{
|
|||||||
// it could have been useful as an "verbosity=types.Detailed" regexes, very rarely
|
// it could have been useful as an "verbosity=types.Detailed" regexes, very rarely
|
||||||
// but in context of operators, it is actually a very important information
|
// but in context of operators, it is actually a very important information
|
||||||
"RegexGcacheScan": &types.LogRegex{
|
"RegexGcacheScan": &types.LogRegex{
|
||||||
// those "operators" regexes do not have the log prefix added implicitely. It's not strictly needed, but
|
// those "operators" regexes do not have the log prefix added implicitly. It's not strictly needed, but
|
||||||
// it will help to avoid catching random piece of log out of order
|
// it will help to avoid catching random piece of log out of order
|
||||||
Regex: regexp.MustCompile(k8sprefix + ".*GCache::RingBuffer initial scan"),
|
Regex: regexp.MustCompile(k8sprefix + ".*GCache::RingBuffer initial scan"),
|
||||||
Handler: func(submatches map[string]string, ctx types.LogCtx, log string, date time.Time) (types.LogCtx, types.LogDisplayer) {
|
Handler: func(submatches map[string]string, ctx types.LogCtx, log string, date time.Time) (types.LogCtx, types.LogDisplayer) {
|
||||||
@@ -59,7 +59,7 @@ var PXCOperatorMap = types.RegexMap{
|
|||||||
// so this regex is about capturing subgroups to re-handle each them to the appropriate existing IdentsMap regex
|
// so this regex is about capturing subgroups to re-handle each them to the appropriate existing IdentsMap regex
|
||||||
"RegexOperatorMemberAssociations": &types.LogRegex{
|
"RegexOperatorMemberAssociations": &types.LogRegex{
|
||||||
Regex: regexp.MustCompile("================================================.*View:"),
|
Regex: regexp.MustCompile("================================================.*View:"),
|
||||||
InternalRegex: regexp.MustCompile("own_index: " + regexIdx + ".*(?P<memberlog>" + IdentsMap["RegexMemberCount"].Regex.String() + ")(?P<compiledAssocations>(....-?[0-9]{1,2}(\\.-?[0-9])?: [a-z0-9]+-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]+, [a-zA-Z0-9-_\\.]+)+)"),
|
InternalRegex: regexp.MustCompile("own_index: " + regexIdx + ".*(?P<memberlog>" + IdentsMap["RegexMemberCount"].Regex.String() + ")(?P<compiledAssociations>(....-?[0-9]{1,2}(\\.-?[0-9])?: [a-z0-9]+-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]+, [a-zA-Z0-9-_\\.]+)+)"),
|
||||||
Handler: func(submatches map[string]string, ctx types.LogCtx, log string, date time.Time) (types.LogCtx, types.LogDisplayer) {
|
Handler: func(submatches map[string]string, ctx types.LogCtx, log string, date time.Time) (types.LogCtx, types.LogDisplayer) {
|
||||||
|
|
||||||
ctx.MyIdx = submatches[groupIdx]
|
ctx.MyIdx = submatches[groupIdx]
|
||||||
@@ -72,13 +72,13 @@ var PXCOperatorMap = types.RegexMap{
|
|||||||
ctx, displayer = IdentsMap["RegexMemberCount"].Handle(ctx, submatches["memberlog"], date)
|
ctx, displayer = IdentsMap["RegexMemberCount"].Handle(ctx, submatches["memberlog"], date)
|
||||||
msg += displayer(ctx) + "; "
|
msg += displayer(ctx) + "; "
|
||||||
|
|
||||||
subAssociations := strings.Split(submatches["compiledAssocations"], "\\n\\t")
|
subAssociations := strings.Split(submatches["compiledAssociations"], "\\n\\t")
|
||||||
if len(subAssociations) < 2 {
|
if len(subAssociations) < 2 {
|
||||||
return ctx, types.SimpleDisplayer(msg)
|
return ctx, types.SimpleDisplayer(msg)
|
||||||
}
|
}
|
||||||
for _, subAssocation := range subAssociations[1:] {
|
for _, subAssociation := range subAssociations[1:] {
|
||||||
// better to reuse the idents regex
|
// better to reuse the idents regex
|
||||||
ctx, displayer = IdentsMap["RegexMemberAssociations"].Handle(ctx, subAssocation, date)
|
ctx, displayer = IdentsMap["RegexMemberAssociations"].Handle(ctx, subAssociation, date)
|
||||||
msg += displayer(ctx) + "; "
|
msg += displayer(ctx) + "; "
|
||||||
}
|
}
|
||||||
return ctx, types.SimpleDisplayer(msg)
|
return ctx, types.SimpleDisplayer(msg)
|
||||||
|
@@ -273,7 +273,7 @@ var SSTMap = types.RegexMap{
|
|||||||
},
|
},
|
||||||
|
|
||||||
"RegexTimeoutReceivingFirstData": &types.LogRegex{
|
"RegexTimeoutReceivingFirstData": &types.LogRegex{
|
||||||
Regex: regexp.MustCompile("Possible timeout in receving first data from donor in gtid/keyring stage"),
|
Regex: regexp.MustCompile("Possible timeout in receving first data from donor in gtid/keyring stage"), // typo is in Galera lib
|
||||||
Handler: func(submatches map[string]string, ctx types.LogCtx, log string, date time.Time) (types.LogCtx, types.LogDisplayer) {
|
Handler: func(submatches map[string]string, ctx types.LogCtx, log string, date time.Time) (types.LogCtx, types.LogDisplayer) {
|
||||||
return ctx, types.SimpleDisplayer(utils.Paint(utils.RedText, "timeout from donor in gtid/keyring stage"))
|
return ctx, types.SimpleDisplayer(utils.Paint(utils.RedText, "timeout from donor in gtid/keyring stage"))
|
||||||
},
|
},
|
||||||
|
@@ -147,7 +147,7 @@ var ViewsMap = types.RegexMap{
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
||||||
"RegexSafeToBoostrapSet": &types.LogRegex{
|
"RegexSafeToBootstrapSet": &types.LogRegex{
|
||||||
Regex: regexp.MustCompile("safe_to_bootstrap: 1"),
|
Regex: regexp.MustCompile("safe_to_bootstrap: 1"),
|
||||||
Handler: func(submatches map[string]string, ctx types.LogCtx, log string, date time.Time) (types.LogCtx, types.LogDisplayer) {
|
Handler: func(submatches map[string]string, ctx types.LogCtx, log string, date time.Time) (types.LogCtx, types.LogDisplayer) {
|
||||||
return ctx, types.SimpleDisplayer(utils.Paint(utils.YellowText, "safe_to_bootstrap: 1"))
|
return ctx, types.SimpleDisplayer(utils.Paint(utils.YellowText, "safe_to_bootstrap: 1"))
|
||||||
@@ -159,8 +159,8 @@ var ViewsMap = types.RegexMap{
|
|||||||
return ctx, types.SimpleDisplayer(utils.Paint(utils.YellowText, "no grastate.dat file"))
|
return ctx, types.SimpleDisplayer(utils.Paint(utils.YellowText, "no grastate.dat file"))
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
"RegexBootstrapingDefaultState": &types.LogRegex{
|
"RegexBootstrappingDefaultState": &types.LogRegex{
|
||||||
Regex: regexp.MustCompile("Bootstraping with default state"),
|
Regex: regexp.MustCompile("Bootstraping with default state"), // typo is in Galera lib
|
||||||
Handler: func(submatches map[string]string, ctx types.LogCtx, log string, date time.Time) (types.LogCtx, types.LogDisplayer) {
|
Handler: func(submatches map[string]string, ctx types.LogCtx, log string, date time.Time) (types.LogCtx, types.LogDisplayer) {
|
||||||
return ctx, types.SimpleDisplayer(utils.Paint(utils.YellowText, "bootstrapping(empty grastate)"))
|
return ctx, types.SimpleDisplayer(utils.Paint(utils.YellowText, "bootstrapping(empty grastate)"))
|
||||||
},
|
},
|
||||||
|
@@ -200,13 +200,13 @@ func TestViewsRegex(t *testing.T) {
|
|||||||
{
|
{
|
||||||
log: "2001-01-01T01:01:01.000000Z 0 [Note] WSREP: Found saved state: 8e862473-455e-11e8-a0ca-3fcd8faf3209:-1, safe_to_bootstrap: 1",
|
log: "2001-01-01T01:01:01.000000Z 0 [Note] WSREP: Found saved state: 8e862473-455e-11e8-a0ca-3fcd8faf3209:-1, safe_to_bootstrap: 1",
|
||||||
expectedOut: "safe_to_bootstrap: 1",
|
expectedOut: "safe_to_bootstrap: 1",
|
||||||
key: "RegexSafeToBoostrapSet",
|
key: "RegexSafeToBootstrapSet",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "should not match",
|
name: "should not match",
|
||||||
log: "2001-01-01T01:01:01.000000Z 0 [Note] WSREP: Found saved state: 8e862473-455e-11e8-a0ca-3fcd8faf3209:-1, safe_to_bootstrap: 0",
|
log: "2001-01-01T01:01:01.000000Z 0 [Note] WSREP: Found saved state: 8e862473-455e-11e8-a0ca-3fcd8faf3209:-1, safe_to_bootstrap: 0",
|
||||||
expectedErr: true,
|
expectedErr: true,
|
||||||
key: "RegexSafeToBoostrapSet",
|
key: "RegexSafeToBootstrapSet",
|
||||||
},
|
},
|
||||||
|
|
||||||
{
|
{
|
||||||
@@ -218,7 +218,7 @@ func TestViewsRegex(t *testing.T) {
|
|||||||
{
|
{
|
||||||
log: "2001-01-01T01:01:01.000000Z 0 [Warning] [MY-000000] [Galera] No persistent state found. Bootstraping with default state",
|
log: "2001-01-01T01:01:01.000000Z 0 [Warning] [MY-000000] [Galera] No persistent state found. Bootstraping with default state",
|
||||||
expectedOut: "bootstrapping(empty grastate)",
|
expectedOut: "bootstrapping(empty grastate)",
|
||||||
key: "RegexBootstrapingDefaultState",
|
key: "RegexBootstrappingDefaultState",
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -47,7 +47,7 @@ func (s *sed) Run() error {
|
|||||||
|
|
||||||
}
|
}
|
||||||
if len(args) == 0 {
|
if len(args) == 0 {
|
||||||
return errors.New("could not find informations to replace")
|
return errors.New("could not find information to replace")
|
||||||
}
|
}
|
||||||
|
|
||||||
fstat, err := os.Stdin.Stat()
|
fstat, err := os.Stdin.Stat()
|
||||||
|
@@ -10,9 +10,9 @@ import (
|
|||||||
|
|
||||||
// LogCtx is the main context storage for a node.
|
// LogCtx is the main context storage for a node.
|
||||||
// It is the principal storage of this tool, this is the source of truth to merge logs and take decisions
|
// It is the principal storage of this tool, this is the source of truth to merge logs and take decisions
|
||||||
// It is stored along wih each single log line we matched, and copied for each new log line.
|
// It is stored along with each single log line we matched, and copied for each new log line.
|
||||||
// It is NOT meant to be used as a singleton by pointer, it must keep its original state for each log lines
|
// It is NOT meant to be used as a singleton by pointer, it must keep its original state for each log lines
|
||||||
// If not, every informaiton would be overwritten (states, sst, version, membercount, ...) and we would not be able to give the history of changes
|
// If not, every information would be overwritten (states, sst, version, membercount, ...) and we would not be able to give the history of changes
|
||||||
type LogCtx struct {
|
type LogCtx struct {
|
||||||
FilePath string
|
FilePath string
|
||||||
FileType string
|
FileType string
|
||||||
@@ -48,7 +48,7 @@ func (ctx *LogCtx) InitMaps() {
|
|||||||
|
|
||||||
// State will return the wsrep state of the current file type
|
// State will return the wsrep state of the current file type
|
||||||
// That is because for operator related logs, we have every type of files
|
// That is because for operator related logs, we have every type of files
|
||||||
// Not tracking and differenciating by file types led to confusions in most subcommands
|
// Not tracking and differentiating by file types led to confusions in most subcommands
|
||||||
// as it would seem that sometimes mysql is restarting after a crash, while actually
|
// as it would seem that sometimes mysql is restarting after a crash, while actually
|
||||||
// the operator was simply launching a "wsrep-recover" instance while mysql was still running
|
// the operator was simply launching a "wsrep-recover" instance while mysql was still running
|
||||||
func (ctx LogCtx) State() string {
|
func (ctx LogCtx) State() string {
|
||||||
@@ -101,7 +101,7 @@ func (ctx *LogCtx) IsPrimary() bool {
|
|||||||
// AddOwnName propagates a name into the translation maps using the trusted node's known own hashes and ips
|
// AddOwnName propagates a name into the translation maps using the trusted node's known own hashes and ips
|
||||||
func (ctx *LogCtx) AddOwnName(name string, date time.Time) {
|
func (ctx *LogCtx) AddOwnName(name string, date time.Time) {
|
||||||
// used to be a simple "if utils.SliceContains", changed to "is it the last known name?"
|
// used to be a simple "if utils.SliceContains", changed to "is it the last known name?"
|
||||||
// because somes names/ips come back and forth, we should keep track of that
|
// because some names/ips come back and forth, we should keep track of that
|
||||||
name = utils.ShortNodeName(name)
|
name = utils.ShortNodeName(name)
|
||||||
if len(ctx.OwnNames) > 0 && ctx.OwnNames[len(ctx.OwnNames)-1] == name {
|
if len(ctx.OwnNames) > 0 && ctx.OwnNames[len(ctx.OwnNames)-1] == name {
|
||||||
return
|
return
|
||||||
|
@@ -62,7 +62,7 @@ func (li *LogInfo) Msg(ctx LogCtx) string {
|
|||||||
return msg
|
return msg
|
||||||
}
|
}
|
||||||
|
|
||||||
// IsDuplicatedEvent will aim to keep 2 occurences of the same event
|
// IsDuplicatedEvent will aim to keep 2 occurrences of the same event
|
||||||
// To be considered duplicated, they must be from the same regexes and have the same message
|
// To be considered duplicated, they must be from the same regexes and have the same message
|
||||||
func (current *LogInfo) IsDuplicatedEvent(base, previous LogInfo) bool {
|
func (current *LogInfo) IsDuplicatedEvent(base, previous LogInfo) bool {
|
||||||
return base.RegexUsed == previous.RegexUsed &&
|
return base.RegexUsed == previous.RegexUsed &&
|
||||||
|
@@ -11,7 +11,7 @@ type LocalTimeline []LogInfo
|
|||||||
|
|
||||||
func (lt LocalTimeline) Add(li LogInfo) LocalTimeline {
|
func (lt LocalTimeline) Add(li LogInfo) LocalTimeline {
|
||||||
|
|
||||||
// to deduplicate, it will keep 2 loginfo occurences
|
// to deduplicate, it will keep 2 loginfo occurrences
|
||||||
// 1st one for the 1st timestamp found, it will also show the number of repetition
|
// 1st one for the 1st timestamp found, it will also show the number of repetition
|
||||||
// 2nd loginfo the keep the last timestamp found, so that we don't loose track
|
// 2nd loginfo the keep the last timestamp found, so that we don't loose track
|
||||||
// so there will be a corner case if the first ever event is repeated, but that is acceptable
|
// so there will be a corner case if the first ever event is repeated, but that is acceptable
|
||||||
|
@@ -10,7 +10,7 @@ import (
|
|||||||
// Color is given its own type for safe function signatures
|
// Color is given its own type for safe function signatures
|
||||||
type Color string
|
type Color string
|
||||||
|
|
||||||
// Color codes interpretted by the terminal
|
// Color codes interpreted by the terminal
|
||||||
// NOTE: all codes must be of the same length or they will throw off the field alignment of tabwriter
|
// NOTE: all codes must be of the same length or they will throw off the field alignment of tabwriter
|
||||||
const (
|
const (
|
||||||
ResetText Color = "\x1b[0000m"
|
ResetText Color = "\x1b[0000m"
|
||||||
@@ -109,11 +109,11 @@ func StringsReplaceReversed(s, old, new string, n int) string {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func UUIDToShortUUID(uuid string) string {
|
func UUIDToShortUUID(uuid string) string {
|
||||||
splitted := strings.Split(uuid, "-")
|
split := strings.Split(uuid, "-")
|
||||||
if len(splitted) != 5 {
|
if len(split) != 5 {
|
||||||
return uuid
|
return uuid
|
||||||
}
|
}
|
||||||
return splitted[0] + "-" + splitted[3]
|
return split[0] + "-" + split[3]
|
||||||
}
|
}
|
||||||
|
|
||||||
// ShortNodeName helps reducing the node name when it is the default value (node hostname)
|
// ShortNodeName helps reducing the node name when it is the default value (node hostname)
|
||||||
|
Reference in New Issue
Block a user