mirror of
https://github.com/percona/percona-toolkit.git
synced 2025-09-17 00:47:44 +00:00
Fix: error msg with uppercase, usage missed pt-
This commit is contained in:
@@ -19,7 +19,7 @@ func (c *ctx) Help() string {
|
|||||||
func (c *ctx) Run() error {
|
func (c *ctx) Run() error {
|
||||||
|
|
||||||
if len(c.Paths) != 1 {
|
if len(c.Paths) != 1 {
|
||||||
return errors.New("Can only use 1 path at a time for ctx subcommand")
|
return errors.New("can only use 1 path at a time for ctx subcommand")
|
||||||
}
|
}
|
||||||
|
|
||||||
timeline, err := timelineFromPaths(c.Paths, regex.AllRegexes())
|
timeline, err := timelineFromPaths(c.Paths, regex.AllRegexes())
|
||||||
|
@@ -49,7 +49,7 @@ func timelineFromPaths(paths []string, regexes types.RegexMap) (types.Timeline,
|
|||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
found = true
|
found = true
|
||||||
logger.Debug().Str("path", path).Msg("Finished searching")
|
logger.Debug().Str("path", path).Msg("finished searching")
|
||||||
|
|
||||||
// Why it should not just identify using the file path:
|
// Why it should not just identify using the file path:
|
||||||
// so that we are able to merge files that belong to the same nodes
|
// so that we are able to merge files that belong to the same nodes
|
||||||
@@ -63,7 +63,7 @@ func timelineFromPaths(paths []string, regexes types.RegexMap) (types.Timeline,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if !found {
|
if !found {
|
||||||
return nil, errors.New("Could not find data")
|
return nil, errors.New("could not find data")
|
||||||
}
|
}
|
||||||
return timeline, nil
|
return timeline, nil
|
||||||
}
|
}
|
||||||
@@ -89,7 +89,7 @@ func prepareGrepArgument(regexes types.RegexMap) string {
|
|||||||
if CLI.PxcOperator {
|
if CLI.PxcOperator {
|
||||||
grepRegex += ")"
|
grepRegex += ")"
|
||||||
}
|
}
|
||||||
logger.Debug().Str("grepArg", grepRegex).Msg("Compiled grep arguments")
|
logger.Debug().Str("grepArg", grepRegex).Msg("compiled grep arguments")
|
||||||
return grepRegex
|
return grepRegex
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -135,7 +135,7 @@ func execGrepAndIterate(path, compiledRegex string, stdout chan<- string) error
|
|||||||
// double-check it stopped correctly
|
// double-check it stopped correctly
|
||||||
if err = cmd.Wait(); err != nil {
|
if err = cmd.Wait(); err != nil {
|
||||||
if exiterr, ok := err.(*exec.ExitError); ok && exiterr.ExitCode() == 1 {
|
if exiterr, ok := err.(*exec.ExitError); ok && exiterr.ExitCode() == 1 {
|
||||||
return errors.New("Found nothing")
|
return errors.New("found nothing")
|
||||||
}
|
}
|
||||||
return errors.Wrap(err, "grep subprocess error")
|
return errors.Wrap(err, "grep subprocess error")
|
||||||
}
|
}
|
||||||
|
@@ -1,6 +1,8 @@
|
|||||||
package main
|
package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"fmt"
|
||||||
|
|
||||||
"github.com/percona/percona-toolkit/src/go/pt-galera-log-explainer/display"
|
"github.com/percona/percona-toolkit/src/go/pt-galera-log-explainer/display"
|
||||||
"github.com/percona/percona-toolkit/src/go/pt-galera-log-explainer/regex"
|
"github.com/percona/percona-toolkit/src/go/pt-galera-log-explainer/regex"
|
||||||
"github.com/percona/percona-toolkit/src/go/pt-galera-log-explainer/types"
|
"github.com/percona/percona-toolkit/src/go/pt-galera-log-explainer/types"
|
||||||
@@ -20,30 +22,30 @@ type list struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (l *list) Help() string {
|
func (l *list) Help() string {
|
||||||
return `List events for each nodes in a columnar output
|
return fmt.Sprintf(`List events for each nodes in a columnar output
|
||||||
It will merge logs between themselves
|
It will merge logs between themselves
|
||||||
|
|
||||||
"identifier" is an internal metadata, this is used to merge logs.
|
"identifier" is an internal metadata, this is used to merge logs.
|
||||||
|
|
||||||
Usage:
|
Usage:
|
||||||
galera-log-explainer list --all <list of files>
|
%[1]s list --all <list of files>
|
||||||
galera-log-explainer list --all *.log
|
%[1]s list --all *.log
|
||||||
galera-log-explainer list --sst --views --states <list of files>
|
%[1]s list --sst --views --states <list of files>
|
||||||
galera-log-explainer list --events --views *.log
|
%[1]s list --events --views *.log
|
||||||
`
|
`, toolname)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (l *list) Run() error {
|
func (l *list) Run() error {
|
||||||
|
|
||||||
if !(l.All || l.Events || l.States || l.SST || l.Views || l.Applicative) {
|
if !(l.All || l.Events || l.States || l.SST || l.Views || l.Applicative) {
|
||||||
return errors.New("Please select a type of logs to search: --all, or any parameters from: --sst --views --events --states")
|
return errors.New("flag required: --all, or any parameters from: --sst --views --events --states --applicative")
|
||||||
}
|
}
|
||||||
|
|
||||||
toCheck := l.regexesToUse()
|
toCheck := l.regexesToUse()
|
||||||
|
|
||||||
timeline, err := timelineFromPaths(CLI.List.Paths, toCheck)
|
timeline, err := timelineFromPaths(CLI.List.Paths, toCheck)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return errors.Wrap(err, "Could not list events")
|
return errors.Wrap(err, "could not list events")
|
||||||
}
|
}
|
||||||
|
|
||||||
display.TimelineCLI(timeline, CLI.Verbosity)
|
display.TimelineCLI(timeline, CLI.Verbosity)
|
||||||
|
@@ -12,7 +12,7 @@ import (
|
|||||||
func internalRegexSubmatch(regex *regexp.Regexp, log string) ([]string, error) {
|
func internalRegexSubmatch(regex *regexp.Regexp, log string) ([]string, error) {
|
||||||
slice := regex.FindStringSubmatch(log)
|
slice := regex.FindStringSubmatch(log)
|
||||||
if len(slice) == 0 {
|
if len(slice) == 0 {
|
||||||
return nil, errors.New(fmt.Sprintf("Could not find submatch from log \"%s\" using pattern \"%s\"", log, regex.String()))
|
return nil, errors.New(fmt.Sprintf("could not find submatch from log \"%s\" using pattern \"%s\"", log, regex.String()))
|
||||||
}
|
}
|
||||||
return slice, nil
|
return slice, nil
|
||||||
}
|
}
|
||||||
|
@@ -17,21 +17,22 @@ type sed struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (s *sed) Help() string {
|
func (s *sed) Help() string {
|
||||||
return `sed translates a log, replacing node UUID, IPS, names with either name or IP everywhere. By default it replaces by name.
|
|
||||||
|
return fmt.Sprintf(`sed translates a log, replacing node UUID, IPS, names with either name or IP everywhere. By default it replaces by name.
|
||||||
|
|
||||||
Use like so:
|
Use like so:
|
||||||
cat node1.log | galera-log-explainer sed *.log | less
|
cat node1.log | %[1]s sed *.log | less
|
||||||
galera-log-explainer sed *.log < node1.log | less
|
%[1]s sed *.log < node1.log | less
|
||||||
|
|
||||||
You can also simply call the command to get a generated sed command to review and apply yourself
|
You can also simply call the command to get a generated sed command to review and apply yourself
|
||||||
galera-log-explainer sed *.log`
|
%[1]s sed *.log`, toolname)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *sed) Run() error {
|
func (s *sed) Run() error {
|
||||||
toCheck := regex.AllRegexes()
|
toCheck := regex.AllRegexes()
|
||||||
timeline, err := timelineFromPaths(s.Paths, toCheck)
|
timeline, err := timelineFromPaths(s.Paths, toCheck)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return errors.Wrap(err, "Found nothing worth replacing")
|
return errors.Wrap(err, "found nothing worth replacing")
|
||||||
}
|
}
|
||||||
ctxs := timeline.GetLatestUpdatedContextsByNodes()
|
ctxs := timeline.GetLatestUpdatedContextsByNodes()
|
||||||
|
|
||||||
@@ -56,7 +57,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 informations to replace")
|
||||||
}
|
}
|
||||||
|
|
||||||
fstat, err := os.Stdin.Stat()
|
fstat, err := os.Stdin.Stat()
|
||||||
|
@@ -26,7 +26,7 @@ func (w *whois) Run() error {
|
|||||||
toCheck := regex.AllRegexes()
|
toCheck := regex.AllRegexes()
|
||||||
timeline, err := timelineFromPaths(CLI.Whois.Paths, toCheck)
|
timeline, err := timelineFromPaths(CLI.Whois.Paths, toCheck)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return errors.Wrap(err, "Found nothing to translate")
|
return errors.Wrap(err, "found nothing to translate")
|
||||||
}
|
}
|
||||||
ctxs := timeline.GetLatestUpdatedContextsByNodes()
|
ctxs := timeline.GetLatestUpdatedContextsByNodes()
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user