diff --git a/constants/common.go b/constants/common.go index 4c5bd55..16bf1ce 100644 --- a/constants/common.go +++ b/constants/common.go @@ -1,7 +1,14 @@ package constants +import "regexp" + const ( SESSION_HEADER_NAME = "x-session-token" EMAIL_HEADER_NAME = "x-user-email" ISSUE_ID_HEADER_NAME = "x-issue-id" ) + +var IgnorePatterns = []*regexp.Regexp{ + regexp.MustCompile(`\[mobx-state-tree\]`), + regexp.MustCompile(`Object captured as exception with keys: code, message`), +} diff --git a/service/ExceptionService.go b/service/ExceptionService.go index 63eb72e..f425249 100644 --- a/service/ExceptionService.go +++ b/service/ExceptionService.go @@ -3,6 +3,7 @@ package service import ( "bufio" "cybertron/configs" + "cybertron/constants" "cybertron/models/db" "cybertron/models/instrumentation" inPodCache "cybertron/pkg/cache" @@ -59,6 +60,15 @@ type Payload struct { Extra interface{} `json:"extra"` } +func isIgnored(value string) bool { + for _, pattern := range constants.IgnorePatterns { + if pattern.MatchString(value) { + return true + } + } + return false +} + func NewExceptionService(logger *log.Logger, dbClient *gorm.DB, kafkaProducer producer.KProducer, cache *inPodCache.Cache, kafkaConfig configs.KafkaConfig) *ExceptionService { return &ExceptionService{ logger: logger, @@ -110,6 +120,9 @@ func (exceptionService *ExceptionService) CatchErrors(c *gin.Context) { metrics.PublishErrorConsumptionMetric(instrumentation.ErrorConsumptionMetric{ProjectId: projectID}) for _, errorItem := range jsonData.Exception.Values { + if isIgnored(errorItem.Value) { + continue + } errorItem.ProjectId = projectID errorItem.Breadcrumbs = jsonData.Breadcrumbs errorItem.Extra = jsonData.Extra