From 7ad8d5c324844b8b092f8cee439e7cf83dbbbd5c Mon Sep 17 00:00:00 2001 From: novalisdenahi Date: Mon, 15 Jun 2026 15:16:37 +0200 Subject: [PATCH] Fix default user handling after client closure in ConfigCatClient --- .../java/com/configcat/ConfigCatClient.java | 8 ----- .../com/configcat/ConfigCatClientTest.java | 34 +++++++++++++++++++ 2 files changed, 34 insertions(+), 8 deletions(-) diff --git a/src/main/java/com/configcat/ConfigCatClient.java b/src/main/java/com/configcat/ConfigCatClient.java index 089a273..69d0b12 100644 --- a/src/main/java/com/configcat/ConfigCatClient.java +++ b/src/main/java/com/configcat/ConfigCatClient.java @@ -346,19 +346,11 @@ public CompletableFuture forceRefreshAsync() { @Override public void setDefaultUser(User user) { - if (isClosed()) { - logger.warn(3201, ConfigCatLogMessages.getConfigServiceMethodHasNoEffectDueToClosedClient("setDefaultUser")); - return; - } this.defaultUser = user; } @Override public void clearDefaultUser() { - if (isClosed()) { - logger.warn(3201, ConfigCatLogMessages.getConfigServiceMethodHasNoEffectDueToClosedClient("clearDefaultUser")); - return; - } this.defaultUser = null; } diff --git a/src/test/java/com/configcat/ConfigCatClientTest.java b/src/test/java/com/configcat/ConfigCatClientTest.java index aa8d54d..1b596ce 100644 --- a/src/test/java/com/configcat/ConfigCatClientTest.java +++ b/src/test/java/com/configcat/ConfigCatClientTest.java @@ -1069,5 +1069,39 @@ void fetcherAndMonitorClosedWhenConfigServiceInitFails() throws IOException { ConfigCatClient.closeAll(); } + + @Test + void getValueAfterCloseWithDefaultUserAndClearedUser() throws IOException { + MockWebServer server = new MockWebServer(); + server.start(); + + User user1 = new User.Builder().build("test@test1.com"); + User user2 = new User.Builder().build("test@test2.com"); + + ConfigCatClient cl = ConfigCatClient.get(Helpers.SDK_KEY, options -> { + options.pollingMode(PollingModes.manualPoll()); + options.baseUrl(server.url("/").toString()); + }); + + server.enqueue(new MockResponse().setResponseCode(200).setBody(Helpers.RULES_JSON)); + cl.forceRefresh(); + + cl.setDefaultUser(user1); + + String result = assertDoesNotThrow(() -> cl.getValue(String.class, "key", "fallback")); + assertEquals("fake1", result); + + cl.close(); + + cl.setDefaultUser(user2); + + result = assertDoesNotThrow(() -> cl.getValue(String.class, "key", "fallback")); + assertEquals("fake2", result); + + cl.clearDefaultUser(); + + result = assertDoesNotThrow(() -> cl.getValue(String.class, "key", "fallback")); + assertEquals("def", result); + } } \ No newline at end of file