Skip to content

Commit 974324b

Browse files
vuid manager thread safe added
1 parent 63014dd commit 974324b

File tree

2 files changed

+14
-16
lines changed

2 files changed

+14
-16
lines changed

Sources/Optimizely+Decide/OptimizelyUserContext.swift

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -85,11 +85,10 @@ public class OptimizelyUserContext {
8585
self.atomicForcedDecisions = AtomicProperty(property: nil, lock: lock)
8686
self.atomicQualifiedSegments = AtomicProperty(property: nil, lock: lock)
8787
if identify {
88-
self.optimizely?.identifyUserToOdp(userId: userId)
8988
// async call so event building overhead is not blocking context creation
90-
// lock.async {
91-
// self.optimizely?.identifyUserToOdp(userId: userId)
92-
// }
89+
lock.async {
90+
self.optimizely?.identifyUserToOdp(userId: userId)
91+
}
9392
}
9493
}
9594

Sources/Optimizely/VuidManager.swift

Lines changed: 11 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -20,17 +20,19 @@ public class VuidManager {
2020
private var _vuid: String = ""
2121
private(set) var enable: Bool = false
2222
let logger = OPTLoggerFactory.getLogger()
23-
23+
let lock = DispatchQueue(label: "vuid-manager")
2424
// a single vuid should be shared for all SDK instances
2525
public static let shared = VuidManager()
2626

2727
public func configure(enable: Bool) {
28-
self.enable = enable
29-
if enable {
30-
self._vuid = load()
31-
} else {
32-
self.remove()
33-
self._vuid = ""
28+
lock.async {
29+
self.enable = enable
30+
if enable {
31+
self._vuid = self.load()
32+
} else {
33+
self.remove()
34+
self._vuid = ""
35+
}
3436
}
3537
}
3638

@@ -53,11 +55,8 @@ public class VuidManager {
5355

5456
extension VuidManager {
5557
public var vuid: String {
56-
if self.enable {
57-
return _vuid
58-
} else {
59-
logger.w("VUID is not enabled.")
60-
return ""
58+
lock.sync {
59+
return self._vuid
6160
}
6261
}
6362

0 commit comments

Comments
 (0)