@@ -89,32 +89,30 @@ func InitialDatafile(datafile []byte) OptionFunc {
8989func (cm * PollingProjectConfigManager ) SyncConfig (datafile []byte ) {
9090 var e error
9191 var code int
92+
93+ closeMutex := func (e error ) {
94+ cm .err = e
95+ cm .configLock .Unlock ()
96+ }
97+
9298 if len (datafile ) == 0 {
9399 datafile , code , e = cm .requester .Get ()
94100
95101 if e != nil {
96102 cmLogger .Error (fmt .Sprintf ("request returned with http code=%d" , code ), e )
97- cm .err = nil
98- if cm .projectConfig == nil {
99- cm .err = e
100- }
103+ cm .configLock .Lock ()
104+ closeMutex (e )
101105 return
102106 }
103107 }
104108
105109 projectConfig , err := datafileprojectconfig .NewDatafileProjectConfig (datafile )
106110
107111 cm .configLock .Lock ()
108- closeMutex := func () {
109- cm .err = nil
110- if cm .projectConfig == nil {
111- cm .err = err
112- }
113- cm .configLock .Unlock ()
114- }
112+
115113 if err != nil {
116114 cmLogger .Error ("failed to create project config" , err )
117- closeMutex ()
115+ closeMutex (err )
118116 return
119117 }
120118
@@ -124,12 +122,12 @@ func (cm *PollingProjectConfigManager) SyncConfig(datafile []byte) {
124122 }
125123 if projectConfig .GetRevision () == previousRevision {
126124 cmLogger .Debug (fmt .Sprintf ("No datafile updates. Current revision number: %s" , cm .projectConfig .GetRevision ()))
127- closeMutex ()
125+ closeMutex (nil )
128126 return
129127 }
130128 cmLogger .Debug (fmt .Sprintf ("New datafile set with revision: %s. Old revision: %s" , projectConfig .GetRevision (), previousRevision ))
131129 cm .projectConfig = projectConfig
132- closeMutex ()
130+ closeMutex (nil )
133131
134132 if cm .notificationCenter != nil {
135133 projectConfigUpdateNotification := notification.ProjectConfigUpdateNotification {
@@ -182,7 +180,10 @@ func NewPollingProjectConfigManager(sdkKey string, pollingMangerOptions ...Optio
182180func (cm * PollingProjectConfigManager ) GetConfig () (pkg.ProjectConfig , error ) {
183181 cm .configLock .RLock ()
184182 defer cm .configLock .RUnlock ()
185- return cm .projectConfig , cm .err
183+ if cm .projectConfig == nil {
184+ return cm .projectConfig , cm .err
185+ }
186+ return cm .projectConfig , nil
186187}
187188
188189// OnProjectConfigUpdate registers a handler for ProjectConfigUpdate notifications
0 commit comments