LaunchDarklyProvider.initialize calls ready_event.wait() with no timeout, so if the data source never reaches VALID or OFF (for example a network hang), set_provider never returns.
The OpenFeature provider spec (OFP) expects a positive configured start wait time to act as an initialization timeout. The Python provider takes only a Config, and start_wait is a constructor argument of LDClient rather than part of Config, so implementing this requires a new provider constructor parameter. That needs a naming decision consistent with the Ruby (wait_for_seconds) and JS (initTimeoutSeconds) providers.
Found during the weekly OpenFeature provider audit.
Written by Devin
LaunchDarklyProvider.initializecallsready_event.wait()with no timeout, so if the data source never reachesVALIDorOFF(for example a network hang),set_providernever returns.The OpenFeature provider spec (OFP) expects a positive configured start wait time to act as an initialization timeout. The Python provider takes only a
Config, andstart_waitis a constructor argument ofLDClientrather than part ofConfig, so implementing this requires a new provider constructor parameter. That needs a naming decision consistent with the Ruby (wait_for_seconds) and JS (initTimeoutSeconds) providers.Found during the weekly OpenFeature provider audit.
Written by Devin