diff --git a/eppo_client/__init__.py b/eppo_client/__init__.py index 67196d9..b611593 100644 --- a/eppo_client/__init__.py +++ b/eppo_client/__init__.py @@ -10,7 +10,7 @@ from eppo_client.http_client import HttpClient, SdkParams from eppo_client.read_write_lock import ReadWriteLock -__version__ = "1.3.1" +__version__ = "1.3.2" __client: Optional[EppoClient] = None __lock = ReadWriteLock() diff --git a/eppo_client/configuration_store.py b/eppo_client/configuration_store.py index f9c57f4..3a30e90 100644 --- a/eppo_client/configuration_store.py +++ b/eppo_client/configuration_store.py @@ -23,6 +23,7 @@ def get_configuration(self, key: str) -> Optional[T]: def set_configurations(self, configs: Dict[str, T]): try: self.__lock.acquire_write() + self.__cache.clear() for key, config in configs.items(): self.__cache[key] = config finally: diff --git a/test/configuration_store_test.py b/test/configuration_store_test.py index 40c4beb..433ea89 100644 --- a/test/configuration_store_test.py +++ b/test/configuration_store_test.py @@ -39,3 +39,16 @@ def test_evicts_old_entries_when_max_size_exceeded(): assert ( store.get_configuration("test-entry-{}".format(TEST_MAX_SIZE - 1)) == test_exp ) + + +def test_evicts_old_entries_when_setting_new_flags(): + store: ConfigurationStore[str] = ConfigurationStore(max_size=TEST_MAX_SIZE) + + store.set_configurations({"flag": test_exp, "second_flag": test_exp}) + assert store.get_configuration("flag") == test_exp + assert store.get_configuration("second_flag") == test_exp + + # Updating the flags should evict flags that no longer exist + store.set_configurations({"flag": test_exp}) + assert store.get_configuration("flag") == test_exp + assert store.get_configuration("second_flag") is None