diff --git a/examples/pom.xml b/examples/pom.xml
index bd073003772..46861a0a0a1 100644
--- a/examples/pom.xml
+++ b/examples/pom.xml
@@ -5,7 +5,7 @@
com.google.genai.examples
google-genai-examples
- 1.42.0-SNAPSHOT
+ 1.41.0
google-genai-examples
@@ -13,7 +13,7 @@
1.8
1.8
- 1.42.0-SNAPSHOT
+ 1.41.0
diff --git a/pom.xml b/pom.xml
index dc255c8ed7f..67d1776e3c5 100644
--- a/pom.xml
+++ b/pom.xml
@@ -6,7 +6,7 @@
com.google.genai
google-genai
google-genai
- 1.42.0-SNAPSHOT
+ 1.41.0-SNAPSHOT
jar
Java idiomatic SDK for the Gemini Developer APIs and Vertex AI APIs.
@@ -158,6 +158,7 @@
jspecify
1.0.0
+
org.jetbrains.kotlin
kotlin-stdlib-jdk8
diff --git a/src/main/java/com/google/genai/ApiClient.java b/src/main/java/com/google/genai/ApiClient.java
index 3e2b11fc0e7..888180b70fa 100644
--- a/src/main/java/com/google/genai/ApiClient.java
+++ b/src/main/java/com/google/genai/ApiClient.java
@@ -52,7 +52,7 @@
/** Interface for an API client which issues HTTP requests to the GenAI APIs. */
@InternalApi
-public abstract class ApiClient implements AutoCloseable {
+public abstract class ApiClient {
// {x-version-update-start:google-genai:released}
private static final String SDK_VERSION = "1.40.0";
@@ -726,17 +726,4 @@ public static void setDefaultBaseUrls(
ApiClient.geminiBaseUrl = geminiBaseUrl;
ApiClient.vertexBaseUrl = vertexBaseUrl;
}
-
- @Override
- public void close() {
- try {
- httpClient().dispatcher().executorService().shutdown();
- httpClient().connectionPool().evictAll();
- if (httpClient().cache() != null) {
- httpClient().cache().close();
- }
- } catch (IOException e) {
- throw new GenAiIOException("Failed to close the client.", e);
- }
- }
}
diff --git a/src/main/java/com/google/genai/Client.java b/src/main/java/com/google/genai/Client.java
index 99e5f67d606..0bc250b550b 100644
--- a/src/main/java/com/google/genai/Client.java
+++ b/src/main/java/com/google/genai/Client.java
@@ -20,8 +20,10 @@
import com.google.auth.oauth2.GoogleCredentials;
import com.google.errorprone.annotations.CanIgnoreReturnValue;
+import com.google.genai.errors.GenAiIOException;
import com.google.genai.types.ClientOptions;
import com.google.genai.types.HttpOptions;
+import java.io.IOException;
import java.util.Optional;
/** Client class for GenAI. This class is thread-safe. */
@@ -328,7 +330,15 @@ Optional baseUrl() {
/** Closes the Client instance together with its instantiated http client. */
@Override
public void close() {
- apiClient.close();
+ try {
+ apiClient.httpClient().dispatcher().executorService().shutdown();
+ apiClient.httpClient().connectionPool().evictAll();
+ if (apiClient.httpClient().cache() != null) {
+ apiClient.httpClient().cache().close();
+ }
+ } catch (IOException e) {
+ throw new GenAiIOException("Failed to close the client.", e);
+ }
}
/**
diff --git a/src/test/java/com/google/genai/ClientTest.java b/src/test/java/com/google/genai/ClientTest.java
index b84e8026314..ee48cb33793 100644
--- a/src/test/java/com/google/genai/ClientTest.java
+++ b/src/test/java/com/google/genai/ClientTest.java
@@ -188,4 +188,24 @@ public void testSetDefaultBaseUrls() {
// Reset the base URLs after the test.
Client.setDefaultBaseUrls(Optional.empty(), Optional.empty());
}
+
+ @Test
+ public void testCloseClient() throws Exception {
+ // Arrange
+ ApiClient apiClient = mock(ApiClient.class);
+ OkHttpClient httpClient = new OkHttpClient();
+ when(apiClient.httpClient()).thenReturn(httpClient);
+
+ Client client = Client.builder().apiKey(API_KEY).vertexAI(false).build();
+ Field apiClientField = Client.class.getDeclaredField("apiClient");
+ apiClientField.setAccessible(true);
+ apiClientField.set(client, apiClient);
+
+ // Act
+ client.close();
+
+ // Assert
+ assertTrue(httpClient.dispatcher().executorService().isShutdown());
+ assertEquals(0, httpClient.connectionPool().connectionCount());
+ }
}
diff --git a/src/test/java/com/google/genai/HttpApiClientTest.java b/src/test/java/com/google/genai/HttpApiClientTest.java
index 63616accb9a..68a7020e00f 100644
--- a/src/test/java/com/google/genai/HttpApiClientTest.java
+++ b/src/test/java/com/google/genai/HttpApiClientTest.java
@@ -23,7 +23,9 @@
import static org.junit.jupiter.api.Assertions.assertThrows;
import static org.junit.jupiter.api.Assertions.assertTrue;
import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.Mockito.*;
+import static org.mockito.Mockito.doNothing;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
@@ -44,7 +46,6 @@
import java.util.Optional;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutionException;
-
import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.Dispatcher;
@@ -1482,21 +1483,4 @@ public void testNoDefaultLocationWhenUsingApiKeyOnlyMode(
assertNull(client.location());
assertTrue(client.vertexAI());
}
-
- @Test
- public void testCloseClient() {
- HttpApiClient client =
- new HttpApiClient(
- Optional.empty(),
- Optional.of(PROJECT),
- Optional.of(LOCATION),
- Optional.of(CREDENTIALS),
- Optional.empty(),
- Optional.empty());
-
- client.close();
-
- assertTrue(client.httpClient().dispatcher().executorService().isShutdown());
- assertEquals(0, client.httpClient().connectionPool().connectionCount());
- }
}
diff --git a/versions.txt b/versions.txt
index fa2120c49f6..060b16024f6 100644
--- a/versions.txt
+++ b/versions.txt
@@ -1,4 +1,4 @@
# Format:
# module:released-version:current-version
-google-genai:1.41.0:1.42.0-SNAPSHOT
+google-genai:1.41.0:1.41.0