Navigation Menu

Skip to content

Commit

Permalink
fix: do not keep references to invalidated clients (#1093)
Browse files Browse the repository at this point in the history
SpannerImpl would keep a reference to all database clients that had been
created and then invalidated because the database was deleted or did not
exists in the first place. If the getDatabaseClient(String) method would
be called multiple times for the same invalid database, the memory usage
of the application would continue to increase.

Fixes #1089
  • Loading branch information
olavloite committed Apr 25, 2021
1 parent 7792c90 commit b4595a6
Showing 1 changed file with 3 additions and 8 deletions.
Expand Up @@ -92,9 +92,6 @@ private static String nextDatabaseClientId(DatabaseId databaseId) {

private final CloseableExecutorProvider asyncExecutorProvider;

@GuardedBy("this")
private final List<DatabaseClientImpl> invalidatedDbClients = new ArrayList<>();

@GuardedBy("this")
private final Map<DatabaseId, SessionClient> sessionClients = new HashMap<>();

Expand Down Expand Up @@ -204,9 +201,8 @@ public DatabaseClient getDatabaseClient(DatabaseId db) {
checkClosed();
String clientId = null;
if (dbClients.containsKey(db) && !dbClients.get(db).pool.isValid()) {
// Move the invalidated client to a separate list, so we can close it together with the
// other database clients when the Spanner instance is closed.
invalidatedDbClients.add(dbClients.get(db));
// Close the invalidated client and remove it.
dbClients.get(db).closeAsync(new ClosedException());
clientId = dbClients.get(db).clientId;
dbClients.remove(db);
}
Expand Down Expand Up @@ -253,8 +249,7 @@ void close(long timeout, TimeUnit unit) {
checkClosed();
closedException = new ClosedException();
closureFutures = new ArrayList<>();
invalidatedDbClients.addAll(dbClients.values());
for (DatabaseClientImpl dbClient : invalidatedDbClients) {
for (DatabaseClientImpl dbClient : dbClients.values()) {
closureFutures.add(dbClient.closeAsync(closedException));
}
dbClients.clear();
Expand Down

0 comments on commit b4595a6

Please sign in to comment.