88import dev .openfeature .contrib .providers .flagd .resolver .process .model .ParsingResult ;
99import dev .openfeature .contrib .providers .flagd .resolver .process .storage .connector .QueuePayload ;
1010import dev .openfeature .contrib .providers .flagd .resolver .process .storage .connector .QueueSource ;
11+ import dev .openfeature .sdk .ImmutableContext ;
1112import dev .openfeature .sdk .ImmutableStructure ;
1213import dev .openfeature .sdk .Structure ;
1314import edu .umd .cs .findbugs .annotations .SuppressFBWarnings ;
@@ -114,7 +115,7 @@ private void streamerListener(final QueueSource connector) throws InterruptedExc
114115 Map <String , FeatureFlag > flagMap = parsingResult .getFlags ();
115116 Map <String , Object > flagSetMetadataMap = parsingResult .getFlagSetMetadata ();
116117
117- Structure metadata = parseSyncContextOrMetadata (payload .getSyncContext ());
118+ Structure syncContext = parseSyncContext (payload .getSyncContext ());
118119 writeLock .lock ();
119120 try {
120121 changedFlagsKeys = getChangedFlagsKeys (flagMap );
@@ -126,7 +127,7 @@ private void streamerListener(final QueueSource connector) throws InterruptedExc
126127 writeLock .unlock ();
127128 }
128129 if (!stateBlockingQueue .offer (
129- new StorageStateChange (StorageState .OK , changedFlagsKeys , metadata ))) {
130+ new StorageStateChange (StorageState .OK , changedFlagsKeys , syncContext ))) {
130131 log .warn ("Failed to convey OK status, queue is full" );
131132 }
132133 } catch (Throwable e ) {
@@ -150,11 +151,13 @@ private void streamerListener(final QueueSource connector) throws InterruptedExc
150151 log .info ("Shutting down store stream listener" );
151152 }
152153
153- private Structure parseSyncContextOrMetadata (Struct syncContext ) {
154- try {
155- return convertProtobufMapToStructure (syncContext .getFieldsMap ());
156- } catch (Exception exception ) {
157- log .error ("Failed to parse metadataResponse, provider metadata may not be up-to-date" );
154+ private Structure parseSyncContext (Struct syncContext ) {
155+ if (syncContext != null ) {
156+ try {
157+ return convertProtobufMapToStructure (syncContext .getFieldsMap ());
158+ } catch (Exception exception ) {
159+ log .error ("Failed to parse metadataResponse, provider metadata may not be up-to-date" );
160+ }
158161 }
159162 return new ImmutableStructure ();
160163 }
0 commit comments