Skip to content

Commit 57b694d

Browse files
fix: correct error handling logic
- Update FeatureDecision struct to include 'error' property - Update handling of errors in OptimizelyClient+Decide.swift - Adjust guard clause to properly check for errors before decision making
1 parent 6d95172 commit 57b694d

File tree

2 files changed

+5
-2
lines changed

2 files changed

+5
-2
lines changed

Sources/Implementation/DefaultDecisionService.swift

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ struct FeatureDecision {
2121
let variation: Variation?
2222
let source: String
2323
var cmabUUID: String?
24+
var error = false
2425
}
2526

2627
struct VariationDecision {
@@ -457,7 +458,7 @@ class DefaultDecisionService: OPTDecisionService {
457458
if result.cmabError {
458459
// For CMAB - we're supposed to get decision from the server.
459460
// If failed, return decision with nil variation, so the client can take care of them.
460-
let featureDecision = FeatureDecision(experiment: experiment, variation: nil, source: Constants.DecisionSource.featureTest.rawValue)
461+
let featureDecision = FeatureDecision(experiment: experiment, variation: nil, source: Constants.DecisionSource.featureTest.rawValue, error: true)
461462
return DecisionResponse(result: featureDecision, reasons: reasons)
462463
} else if let variation = result.variation {
463464
let featureDecision = FeatureDecision(experiment: experiment, variation: variation, source: Constants.DecisionSource.featureTest.rawValue, cmabUUID: result.cmabUUID)

Sources/Optimizely+Decide/OptimizelyClient+Decide.swift

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -297,7 +297,9 @@ extension OptimizelyClient {
297297
return OptimizelyDecision.errorDecision(key: flagKey, user: user, error: .featureKeyInvalid(flagKey))
298298
}
299299

300-
guard flagDecision?.variation != nil else {
300+
let error = flagDecision?.error ?? false
301+
302+
guard !error else {
301303
return OptimizelyDecision.errorDecision(key: flagKey, user: user, reasons: decisionReasons.toReport())
302304
}
303305

0 commit comments

Comments
 (0)