Skip to content

Commit 3455d25

Browse files
Maint/additional logging (#144)
* Add additional debug/warn logs
1 parent 54f8f6a commit 3455d25

File tree

2 files changed

+26
-6
lines changed

2 files changed

+26
-6
lines changed

analyticsservice/analytics.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,12 @@ import (
44
"context"
55
"encoding/json"
66
"fmt"
7-
"github.com/harness/ff-golang-server-sdk/sdk_codes"
87
"strconv"
98
"sync"
109
"time"
1110

11+
"github.com/harness/ff-golang-server-sdk/sdk_codes"
12+
1213
"github.com/harness/ff-golang-server-sdk/rest"
1314

1415
"github.com/harness/ff-golang-server-sdk/evaluation"
@@ -25,7 +26,7 @@ const (
2526
variationValueAttribute string = "featureValue"
2627
targetAttribute string = "target"
2728
sdkVersionAttribute string = "SDK_VERSION"
28-
SdkVersion string = "0.1.18"
29+
SdkVersion string = "0.1.19"
2930
sdkTypeAttribute string = "SDK_TYPE"
3031
sdkType string = "server"
3132
sdkLanguageAttribute string = "SDK_LANGUAGE"

evaluation/evaluator.go

Lines changed: 23 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,13 @@ import (
44
"encoding/json"
55
"errors"
66
"fmt"
7-
"github.com/harness/ff-golang-server-sdk/sdk_codes"
87
"regexp"
98
"sort"
109
"strconv"
1110
"strings"
1211

12+
"github.com/harness/ff-golang-server-sdk/sdk_codes"
13+
1314
"github.com/harness/ff-golang-server-sdk/logger"
1415

1516
"github.com/harness/ff-golang-server-sdk/rest"
@@ -96,11 +97,13 @@ func (e Evaluator) evaluateClause(clause *rest.Clause, target *Target) bool {
9697

9798
operator := clause.Op
9899
if operator == "" {
100+
e.logger.Warnf("Clause has no valid operator: Clause (%v)", clause)
99101
return false
100102
}
101103

102104
attrValue := getAttrValue(target, clause.Attribute)
103105
if operator != segmentMatchOperator && !attrValue.IsValid() {
106+
e.logger.Debugf("Operator is not a segment match and attribute value is not valid: Operator (%s), attributeVal (%s)", operator, attrValue.String())
104107
return false
105108
}
106109

@@ -154,6 +157,7 @@ func (e Evaluator) evaluateRule(servingRule *rest.ServingRule, target *Target) b
154157

155158
func (e Evaluator) evaluateRules(servingRules []rest.ServingRule, target *Target) string {
156159
if target == nil || servingRules == nil {
160+
e.logger.Debugf("Serving Rules or Target are Nil")
157161
return ""
158162
}
159163

@@ -162,6 +166,9 @@ func (e Evaluator) evaluateRules(servingRules []rest.ServingRule, target *Target
162166
})
163167
for i := range servingRules {
164168
rule := servingRules[i]
169+
if len(rule.Clauses) == 0 {
170+
e.logger.Warnf("Serving Rule has no Clauses: Rule (%v)", rule)
171+
}
165172
// if evaluation is false just continue to next rule
166173
if !e.evaluateRule(&rule, target) {
167174
continue
@@ -174,7 +181,10 @@ func (e Evaluator) evaluateRules(servingRules []rest.ServingRule, target *Target
174181

175182
// rule matched, here must be variation if distribution is undefined or null
176183
if rule.Serve.Variation != nil {
184+
e.logger.Debugf("Rule Matched for Target(%v), Variation returned (%v)", target, rule.Serve.Variation)
177185
return *rule.Serve.Variation
186+
} else {
187+
e.logger.Warnf("No Variation on Serve for Rule (%v), Target (%v)", rule, target)
178188
}
179189
}
180190
return ""
@@ -201,6 +211,7 @@ func (e Evaluator) evaluateVariationMap(variationsMap []rest.VariationMap, targe
201211
if variationMap.Targets != nil {
202212
for _, t := range *variationMap.Targets {
203213
if *t.Identifier != "" && *t.Identifier == target.Identifier {
214+
e.logger.Debugf("Specific targeting matched in Variation Map: Variation Map (%v) Target(%v), Variation returned (%s)", t.Identifier, target, variationMap.Variation)
204215
return variationMap.Variation
205216
}
206217
}
@@ -230,6 +241,8 @@ func (e Evaluator) evaluateFlag(fc rest.FeatureConfig, target *Target) (rest.Var
230241
if variation == "" && fc.DefaultServe.Variation != nil {
231242
variation = *fc.DefaultServe.Variation
232243
}
244+
} else {
245+
e.logger.Debugf("Flag is off: Flag(%s)", fc.Feature)
233246
}
234247

235248
if variation != "" {
@@ -245,11 +258,12 @@ func (e Evaluator) isTargetIncludedOrExcludedInSegment(segmentList []string, tar
245258
for _, segmentIdentifier := range segmentList {
246259
segment, err := e.query.GetSegment(segmentIdentifier)
247260
if err != nil {
261+
e.logger.Errorf("Error on GetSegment returning false. Target (%v), Segment (%s)", target, segmentIdentifier)
248262
return false
249263
}
250264
// Should Target be excluded - if in excluded list we return false
251265
if segment.Excluded != nil && isTargetInList(target, *segment.Excluded) {
252-
e.logger.Debugf("Target %s excluded from segment %s via exclude list", target.Name, segment.Name)
266+
e.logger.Debugf("Target (%v) excluded from segment %s via exclude list", target, segmentIdentifier)
253267
return false
254268
}
255269

@@ -341,7 +355,10 @@ func (e Evaluator) evaluateAll(target *Target) ([]FlagVariation, error) {
341355
return variations, err
342356
}
343357
for _, f := range flags {
344-
v, _ := e.getVariationForTheFlag(f, target)
358+
v, err := e.getVariationForTheFlag(f, target)
359+
if err != nil {
360+
e.logger.Warnf("Error Getting Variation for Flag: Flag (%s), Target (%v), Err: %s", f.Feature, target, err)
361+
}
345362
variations = append(variations, FlagVariation{f.Feature, f.Kind, v})
346363
}
347364

@@ -355,18 +372,20 @@ func (e Evaluator) Evaluate(identifier string, target *Target) (FlagVariation, e
355372

356373
// this is evaluating flag.
357374
func (e Evaluator) evaluate(identifier string, target *Target) (FlagVariation, error) {
358-
375+
e.logger.Debugf("Evaluating: Flag(%s) Target(%v)", identifier, target)
359376
if e.query == nil {
360377
e.logger.Errorf(ErrQueryProviderMissing.Error())
361378
return FlagVariation{}, ErrQueryProviderMissing
362379
}
363380
flag, err := e.query.GetFlag(identifier)
364381
if err != nil {
382+
e.logger.Warnf("Error Getting Flag: Flag (%s), Target(%v), Err: %s", identifier, target, err)
365383
return FlagVariation{}, err
366384
}
367385

368386
variation, err := e.getVariationForTheFlag(&flag, target)
369387
if err != nil {
388+
e.logger.Warnf("Error Getting Variation for Flag: Flag (%s), Target(%v), Err: %s", identifier, target, err)
370389
return FlagVariation{}, err
371390
}
372391
return FlagVariation{flag.Feature, flag.Kind, variation}, nil

0 commit comments

Comments
 (0)