Skip to content

Comments

fix: Stop FeatureStoreClientWrapper poller on close#397

Merged
jsonbailey merged 10 commits intomainfrom
jb/close-polling-connection-on-close
Jan 7, 2026
Merged

fix: Stop FeatureStoreClientWrapper poller on close#397
jsonbailey merged 10 commits intomainfrom
jb/close-polling-connection-on-close

Conversation

@jsonbailey
Copy link
Contributor

@jsonbailey jsonbailey commented Jan 6, 2026

Note

Prevents background availability polling after shutdown and clarifies store shutdown expectations.

  • Add __closed state to FeatureStoreClientWrapper, guard __update_availability when closed
  • Implement close() to stop any active RepeatingTask poller and forward close() to the underlying FeatureStore if present
  • Update interfaces.py with documentation/comments for optional FeatureStore.close() hook for resource cleanup

Written by Cursor Bugbot for commit e876d4b. This will update automatically on new commits. Configure here.

@jsonbailey jsonbailey marked this pull request as ready for review January 6, 2026 19:14
@jsonbailey jsonbailey requested a review from a team as a code owner January 6, 2026 19:14
Base automatically changed from jb/sdk-1710/lock-context-manager to main January 6, 2026 21:36
@jsonbailey jsonbailey merged commit 468afdf into main Jan 7, 2026
15 checks passed
@jsonbailey jsonbailey deleted the jb/close-polling-connection-on-close branch January 7, 2026 17:07
jsonbailey added a commit that referenced this pull request Feb 10, 2026
🤖 I have created a release *beep* *boop*
---


##
[9.15.0](9.14.1...9.15.0)
(2026-02-10)


### Features

* Drop support for python 3.9
([#393](#393))
([5b761bd](5b761bd))
* Update ChangeSet to always require a Selector
([#405](#405))
([5dc4f81](5dc4f81))


### Bug Fixes

* Add context manager for clearer, safer locks
([#396](#396))
([beca0fa](beca0fa))
* Address potential race condition in FeatureStore update_availability
([#391](#391))
([31cf487](31cf487))
* Allow modifying fdv2 data source options independent of main config
([#403](#403))
([d78079e](d78079e))
* Mark copy_with_new_sdk_key method as deprecated
([#353](#353))
([e471ccc](e471ccc))
* Prevent immediate polling on recoverable error
([#399](#399))
([da565a2](da565a2))
* Redis store is considered initialized when `$inited` key is written
([e99a27d](e99a27d))
* Stop FeatureStoreClientWrapper poller on close
([#397](#397))
([468afdf](468afdf))
* Update DataSystemConfig to accept list of synchronizers
([#404](#404))
([c73ad14](c73ad14))
* Update reason documentation with inExperiment value
([#401](#401))
([cbfc3dd](cbfc3dd))
* Update Redis to write missing `$inited` key
([e99a27d](e99a27d))

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).

<!-- CURSOR_SUMMARY -->
---

> [!NOTE]
> **Low Risk**
> Release-only changes (version strings and documentation) with no
functional code modifications in this diff.
> 
> **Overview**
> Bumps the SDK release from `9.14.1` to `9.15.0` across version sources
(`pyproject.toml`, `ldclient/version.py`, release-please manifest) and
updates `PROVENANCE.md` to reference the new version.
> 
> Updates `CHANGELOG.md` with the `9.15.0` release notes, including FDv2
EAP breaking API adjustments (e.g., `ChangeSetBuilder.finish()` now
requires a `Selector`, and `DataSystemConfig.synchronizers` supports
multiple synchronizers), Python 3.9 support drop, and a set of bug-fix
entries.
> 
> <sup>Written by [Cursor
Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
71a9224. This will update automatically
on new commits. Configure
[here](https://cursor.com/dashboard?tab=bugbot).</sup>
<!-- /CURSOR_SUMMARY -->

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: jsonbailey <jbailey@launchdarkly.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants