From 784f61cc2709f90df962b6e90f3f9eece559fc56 Mon Sep 17 00:00:00 2001 From: Denis Arh Date: Thu, 12 Nov 2020 08:07:58 +0100 Subject: [PATCH] Expression error logging --- compose/service/values/formatter.go | 17 ++++++++++++++++- compose/service/values/sanitizer.go | 17 ++++++++++++++++- 2 files changed, 32 insertions(+), 2 deletions(-) diff --git a/compose/service/values/formatter.go b/compose/service/values/formatter.go index f3799462a..6c5910137 100644 --- a/compose/service/values/formatter.go +++ b/compose/service/values/formatter.go @@ -2,6 +2,8 @@ package values import ( "github.com/cortezaproject/corteza-server/compose/types" + "github.com/cortezaproject/corteza-server/pkg/logger" + "go.uber.org/zap" "strings" "time" ) @@ -20,6 +22,10 @@ func Formatter() *formatter { func (f formatter) Run(m *types.Module, vv types.RecordValueSet) types.RecordValueSet { var ( exprParser = parser() + + log = logger.Default(). + WithOptions(zap.AddStacktrace(zap.PanicLevel)). + With(zap.Uint64("module", m.ID)) ) for _, v := range vv { @@ -43,7 +49,16 @@ func (f formatter) Run(m *types.Module, vv types.RecordValueSet) types.RecordVal if len(fld.Expressions.Formatters) > 0 { for _, expr := range fld.Expressions.Formatters { - rval, _ := exprParser.Evaluate(expr, map[string]interface{}{"value": v.Value}) + rval, err := exprParser.Evaluate(expr, map[string]interface{}{"value": v.Value}) + if err != nil { + log.Error( + "failed to evaluate sanitizer expression", + zap.String("field", fld.Name), + zap.String("expr", expr), + zap.Error(err), + ) + continue + } v.Value = sanitize(fld, rval) } } diff --git a/compose/service/values/sanitizer.go b/compose/service/values/sanitizer.go index 19b50e4c3..ba724166b 100644 --- a/compose/service/values/sanitizer.go +++ b/compose/service/values/sanitizer.go @@ -2,6 +2,8 @@ package values import ( "fmt" + "github.com/cortezaproject/corteza-server/pkg/logger" + "go.uber.org/zap" "strconv" "strings" "time" @@ -55,6 +57,10 @@ func (s sanitizer) Run(m *types.Module, vv types.RecordValueSet) (out types.Reco var ( f *types.ModuleField kind string + + log = logger.Default(). + WithOptions(zap.AddStacktrace(zap.PanicLevel)). + With(zap.Uint64("module", m.ID)) ) for _, v := range out { @@ -75,7 +81,16 @@ func (s sanitizer) Run(m *types.Module, vv types.RecordValueSet) (out types.Reco if len(f.Expressions.Sanitizers) > 0 { for _, expr := range f.Expressions.Sanitizers { - rval, _ := exprParser.Evaluate(expr, map[string]interface{}{"value": v.Value}) + rval, err := exprParser.Evaluate(expr, map[string]interface{}{"value": v.Value}) + if err != nil { + log.Error( + "failed to evaluate sanitizer expression", + zap.String("field", f.Name), + zap.String("expr", expr), + zap.Error(err), + ) + continue + } v.Value = sanitize(f, rval) } }