66
77import grpc
88from google .protobuf .json_format import MessageToDict
9+ from grpc import StatusCode
910
1011from openfeature .evaluation_context import EvaluationContext
1112from openfeature .event import ProviderEventDetails
@@ -209,20 +210,22 @@ def _create_request_args(self) -> dict:
209210
210211 return request_args
211212
212- def _fetch_metadata (self ) -> typing . Optional [ sync_pb2 . GetMetadataResponse ] :
213+ def _fetch_metadata (self ) -> dict :
213214 if self .config .sync_metadata_disabled :
214- return None
215+ return {}
215216
216217 context_values_request = sync_pb2 .GetMetadataRequest ()
217- context_values_response : sync_pb2 .GetMetadataResponse
218218 try :
219219 context_values_response = self .stub .GetMetadata (
220220 context_values_request , wait_for_ready = True
221221 )
222- return context_values_response
222+ return MessageToDict ( context_values_response )[ "metadata" ]
223223 except grpc .RpcError as e :
224- logger .debug (f"Error getting sync metadata: { e } " )
225- return None
224+ if e .code () == StatusCode .UNIMPLEMENTED :
225+ logger .debug ("Metadata endpoint disabled" )
226+ return {}
227+ else :
228+ raise e
226229
227230 def listen (self ) -> None :
228231 call_args = (
@@ -234,7 +237,7 @@ def listen(self) -> None:
234237
235238 while self .active :
236239 try :
237- context_values_response = self ._fetch_metadata ()
240+ context_values = self ._fetch_metadata ()
238241
239242 request = sync_pb2 .SyncFlagsRequest (** request_args )
240243
@@ -248,13 +251,8 @@ def listen(self) -> None:
248251 )
249252 self .flag_store .update (json .loads (flag_str ))
250253
251- context_values = {}
252254 if flag_rsp .sync_context :
253255 context_values = MessageToDict (flag_rsp .sync_context )
254- elif context_values_response :
255- context_values = MessageToDict (context_values_response )[
256- "metadata"
257- ]
258256
259257 if not self .connected :
260258 self .emit_provider_ready (
0 commit comments