engine: graph, util: Clean up error printing

We should improve on this more, but at least as a quick fix, stop
splitting the error across two lines. This makes the logs really ugly.
This commit is contained in:
James Shubin
2023-09-01 16:49:50 -04:00
parent 0b1b0a3f80
commit 8299c04fc6
4 changed files with 18 additions and 7 deletions

View File

@@ -24,6 +24,7 @@ import (
"time"
"github.com/purpleidea/mgmt/engine"
engineUtil "github.com/purpleidea/mgmt/engine/util"
"github.com/purpleidea/mgmt/pgraph"
"github.com/purpleidea/mgmt/util/errwrap"
@@ -155,7 +156,7 @@ func (obj *Engine) Process(vertex pgraph.Vertex) error {
obj.Logf("%s: CheckApply(%t)", res, !noop)
// if this fails, don't UpdateTimestamp()
checkOK, err = res.CheckApply(!noop)
obj.Logf("%s: CheckApply(%t): Return(%t, %+v)", res, !noop, checkOK, err)
obj.Logf("%s: CheckApply(%t): Return(%t, %s)", res, !noop, checkOK, engineUtil.CleanError(err))
}
if checkOK && err != nil { // should never return this way
@@ -325,7 +326,7 @@ func (obj *Engine) Worker(vertex pgraph.Vertex) error {
obj.state[vertex].cuid.StartTimer()
obj.Logf("Watch(%s)", vertex)
err = res.Watch(obj.state[vertex].doneCtx) // run the watch normally
obj.Logf("Watch(%s): Exited(%+v)", vertex, err)
obj.Logf("Watch(%s): Exited(%s)", vertex, engineUtil.CleanError(err))
obj.state[vertex].cuid.StopTimer() // clean up nicely
}
if err == nil { // || err == engine.ErrClosed
@@ -534,7 +535,7 @@ Loop:
}
err = obj.Process(vertex)
if obj.Debug {
obj.Logf("Process(%s): Return(%+v)", vertex, err)
obj.Logf("Process(%s): Return(%s)", vertex, engineUtil.CleanError(err))
}
if err == nil {
break RetryLoop

View File

@@ -183,7 +183,7 @@ func (obj *Engine) Commit() error {
}
err := engine.Validate(res)
if obj.Debug {
obj.Logf("Validate(%s): Return(%+v)", res, err)
obj.Logf("Validate(%s): Return(%s)", res, engineUtil.CleanError(err))
}
if err != nil {
return errwrap.Wrapf(err, "the Res did not Validate")
@@ -239,7 +239,7 @@ func (obj *Engine) Commit() error {
obj.Logf("Worker(%s)", v)
// contains the Watch and CheckApply loops
err := obj.Worker(v)
obj.Logf("Worker(%s): Exited(%+v)", v, err)
obj.Logf("Worker(%s): Exited(%s)", v, engineUtil.CleanError(err))
obj.state[v].workerErr = err // store the error
// If the Rewatch metaparam is true, then this will get
// restarted if we do a graph cmp swap. This is why the

View File

@@ -25,6 +25,7 @@ import (
"github.com/purpleidea/mgmt/converger"
"github.com/purpleidea/mgmt/engine"
engineUtil "github.com/purpleidea/mgmt/engine/util"
"github.com/purpleidea/mgmt/pgraph"
"github.com/purpleidea/mgmt/util/errwrap"
)
@@ -253,7 +254,7 @@ func (obj *State) Init() error {
err := res.Init(obj.init)
if obj.Debug {
obj.Logf("Init(%s): Return(%+v)", res, err)
obj.Logf("Init(%s): Return(%s)", res, engineUtil.CleanError(err))
}
if err != nil {
return errwrap.Wrapf(err, "could not Init() resource")
@@ -295,7 +296,7 @@ func (obj *State) Cleanup() error {
reterr := res.Cleanup()
if obj.Debug {
obj.Logf("Close(%s): Return(%+v)", res, reterr)
obj.Logf("Close(%s): Return(%s)", res, engineUtil.CleanError(reterr))
}
reterr = errwrap.Append(reterr, reverr)

View File

@@ -400,3 +400,12 @@ func AutoEdgeCombiner(ae ...engine.AutoEdge) (engine.AutoEdge, error) {
ae: ae,
}, nil
}
// CleanError takes the engine errors and prints them on a single line.
// TODO: maybe we can improve this here, it's a bit ugly.
func CleanError(err error) string {
if err == nil {
return fmt.Sprintf("%v", err)
}
return strings.ReplaceAll(err.Error(), "\n", " ")
}