@@ -25,7 +25,7 @@ public class GcsPerProjectClientManager implements ClusterStateListener {
2525
2626 private final Settings settings ;
2727 private final BiFunction <GoogleCloudStorageClientSettings , GcsRepositoryStatsCollector , MeteredStorage > clientBuilder ;
28- private final Map <ProjectId , ClientHolder > perProjectClientsCache ;
28+ private final Map <ProjectId , ClientsHolder > perProjectClientsCache ;
2929
3030 public GcsPerProjectClientManager (
3131 Settings settings ,
@@ -40,7 +40,7 @@ public GcsPerProjectClientManager(
4040 public void clusterChanged (ClusterChangedEvent event ) {
4141 final Map <ProjectId , ProjectMetadata > currentProjects = event .state ().metadata ().projects ();
4242
43- final var updatedPerProjectClients = new HashMap <ProjectId , ClientHolder >();
43+ final var updatedPerProjectClients = new HashMap <ProjectId , ClientsHolder >();
4444 for (var project : currentProjects .values ()) {
4545 final ProjectSecrets projectSecrets = project .custom (ProjectSecrets .TYPE );
4646 if (projectSecrets == null ) {
@@ -61,9 +61,10 @@ public void clusterChanged(ClusterChangedEvent event) {
6161 // TODO: Building and comparing the whole GoogleCloudStorageClientSettings may be insufficient, we could just compare the
6262 // relevant secrets
6363 if (newOrUpdated (project .id (), clientSettings )) {
64- updatedPerProjectClients .put (project .id (), new ClientHolder (clientSettings ));
64+ updatedPerProjectClients .put (project .id (), new ClientsHolder (clientSettings ));
6565 }
6666 }
67+
6768 // Updated projects
6869 perProjectClientsCache .putAll (updatedPerProjectClients );
6970
@@ -81,39 +82,39 @@ public MeteredStorage client(
8182 String repositoryName ,
8283 GcsRepositoryStatsCollector statsCollector
8384 ) {
84- final var clientHolder = perProjectClientsCache .get (projectId );
85- if (clientHolder == null ) {
85+ final var clientsHolder = perProjectClientsCache .get (projectId );
86+ if (clientsHolder == null ) {
8687 throw new IllegalArgumentException ("No project found for [" + projectId + "]" );
8788 }
88- return clientHolder .client (clientName , repositoryName , statsCollector );
89+ return clientsHolder .client (clientName , repositoryName , statsCollector );
8990 }
9091
9192 public void closeRepositoryClients (ProjectId projectId , String repositoryName ) {
92- final var clientHolder = perProjectClientsCache .get (projectId );
93- if (clientHolder != null ) {
94- clientHolder .closeRepositoryClients (repositoryName );
93+ final var clientsHolder = perProjectClientsCache .get (projectId );
94+ if (clientsHolder != null ) {
95+ clientsHolder .closeRepositoryClients (repositoryName );
9596 }
9697 }
9798
9899 private boolean newOrUpdated (ProjectId projectId , Map <String , GoogleCloudStorageClientSettings > currentClientSettings ) {
99- if (perProjectClientsCache .containsKey (projectId ) == false ) {
100+ final ClientsHolder old = perProjectClientsCache .get (projectId );
101+ if (old == null ) {
100102 return true ;
101103 }
102- final var previousClientSettings = perProjectClientsCache .get (projectId ).clientSettings ();
103- return currentClientSettings .equals (previousClientSettings ) == false ;
104+ return currentClientSettings .equals (old .clientSettings ()) == false ;
104105 }
105106
106- private final class ClientHolder {
107+ private final class ClientsHolder {
107108 // clientName -> client settings
108109 private final Map <String , GoogleCloudStorageClientSettings > clientSettings ;
109110 // repositoryName -> client
110111 private final Map <String , MeteredStorage > clientCache = new ConcurrentHashMap <>();
111112
112- ClientHolder (Map <String , GoogleCloudStorageClientSettings > clientSettings ) {
113+ ClientsHolder (Map <String , GoogleCloudStorageClientSettings > clientSettings ) {
113114 this .clientSettings = clientSettings ;
114115 }
115116
116- public Map <String , GoogleCloudStorageClientSettings > clientSettings () {
117+ Map <String , GoogleCloudStorageClientSettings > clientSettings () {
117118 return clientSettings ;
118119 }
119120
0 commit comments