Skip to content

Commit 3127b8e

Browse files
Wrap document store calls under try-with-resources block (#246)
1 parent 72c7fd1 commit 3127b8e

File tree

4 files changed

+42
-66
lines changed

4 files changed

+42
-66
lines changed

attribute-service-impl/src/main/java/org/hypertrace/core/attribute/service/AttributeServiceImpl.java

Lines changed: 28 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@
4848
import org.hypertrace.core.attribute.service.v1.UpdateMetadataRequest;
4949
import org.hypertrace.core.attribute.service.v1.UpdateMetadataResponse;
5050
import org.hypertrace.core.attribute.service.validator.AttributeMetadataValidator;
51+
import org.hypertrace.core.documentstore.CloseableIterator;
5152
import org.hypertrace.core.documentstore.Collection;
5253
import org.hypertrace.core.documentstore.Datastore;
5354
import org.hypertrace.core.documentstore.DatastoreProvider;
@@ -106,22 +107,8 @@ public AttributeServiceImpl(Config config, PlatformServiceLifecycle platformServ
106107
private Datastore initDataStore(
107108
Config config, PlatformServiceLifecycle platformServiceLifecycle) {
108109
final Config docStoreConfig = config.getConfig(DOC_STORE_CONFIG_KEY);
109-
final String dataStoreType = docStoreConfig.getString(DATA_STORE_TYPE);
110110
final DatastoreConfig datastoreConfig =
111-
TypesafeConfigDatastoreConfigExtractor.from(docStoreConfig, DATA_STORE_TYPE)
112-
.hostKey(dataStoreType + ".host")
113-
.portKey(dataStoreType + ".port")
114-
.keysForEndpoints(dataStoreType + ".endpoints", "host", "port")
115-
.authDatabaseKey(dataStoreType + ".authDb")
116-
.replicaSetKey(dataStoreType + ".replicaSet")
117-
.databaseKey(dataStoreType + ".database")
118-
.usernameKey(dataStoreType + ".user")
119-
.passwordKey(dataStoreType + ".password")
120-
.applicationNameKey("appName")
121-
.poolMaxConnectionsKey("maxPoolSize")
122-
.poolConnectionAccessTimeoutKey("connectionAccessTimeout")
123-
.poolConnectionSurrenderTimeoutKey("connectionIdleTime")
124-
.extract();
111+
TypesafeConfigDatastoreConfigExtractor.from(docStoreConfig, DATA_STORE_TYPE).extract();
125112

126113
final Datastore datastore = DatastoreProvider.getDatastore(datastoreConfig);
127114
new DocStoreMetricsRegistry(datastore)
@@ -185,10 +172,8 @@ public void updateSourceMetadata(
185172
return;
186173
}
187174

188-
try {
189-
// Fetch attributes by FQN
190-
Iterator<Document> documents =
191-
collection.search(getQueryByTenantIdAndFQN(tenantId.get(), request.getFqn()));
175+
try (final CloseableIterator<Document> documents =
176+
collection.search(getQueryByTenantIdAndFQN(tenantId.get(), request.getFqn()))) {
192177
// For each attribute matching the FQN update the source metadata
193178
boolean status =
194179
StreamSupport.stream(Spliterators.spliteratorUnknownSize(documents, 0), false)
@@ -243,9 +228,8 @@ public void delete(
243228
return;
244229
}
245230

246-
try {
247-
Iterator<Document> documents =
248-
collection.search(getQueryForFilter(tenantId.get(), modifiedRequest));
231+
try (final CloseableIterator<Document> documents =
232+
collection.search(getQueryForFilter(tenantId.get(), modifiedRequest))) {
249233
boolean status =
250234
StreamSupport.stream(Spliterators.spliteratorUnknownSize(documents, 0), false)
251235
.map(Document::toJson)
@@ -299,10 +283,8 @@ public void deleteSourceMetadata(
299283
return;
300284
}
301285

302-
try {
303-
// Fetch attributes by FQN
304-
Iterator<Document> documents =
305-
collection.search(getQueryByTenantIdAndFQN(tenantId.get(), request.getFqn()));
286+
try (final CloseableIterator<Document> documents =
287+
collection.search(getQueryByTenantIdAndFQN(tenantId.get(), request.getFqn()))) {
306288
// For each attribute matching the FQN update the source metadata
307289
boolean status =
308290
StreamSupport.stream(Spliterators.spliteratorUnknownSize(documents, 0), false)
@@ -354,8 +336,8 @@ public void findAttributes(
354336
return;
355337
}
356338

357-
try {
358-
Iterator<Document> documents = collection.search(getQueryForFilter(tenantId.get(), request));
339+
try (final CloseableIterator<Document> documents =
340+
collection.search(getQueryForFilter(tenantId.get(), request))) {
359341
sendResult(documents, responseObserver);
360342
} catch (Exception e) {
361343
LOGGER.error("Error finding attributes with filter:" + request, e);
@@ -371,12 +353,11 @@ public void findAll(Empty request, StreamObserver<AttributeMetadata> responseObs
371353
return;
372354
}
373355

374-
try {
375-
// query with filter on Tenant id
376-
Query query = new Query();
377-
query.setFilter(getTenantIdInFilter(TenantUtils.getTenantHierarchy(tenantId.get())));
356+
// query with filter on Tenant id
357+
Query query = new Query();
358+
query.setFilter(getTenantIdInFilter(TenantUtils.getTenantHierarchy(tenantId.get())));
378359

379-
Iterator<Document> documents = collection.search(query);
360+
try (final CloseableIterator<Document> documents = collection.search(query)) {
380361
sendResult(documents, responseObserver);
381362
} catch (Exception e) {
382363
LOGGER.error("Error finding all attributes", e);
@@ -393,15 +374,21 @@ public void getAttributes(
393374
return;
394375
}
395376

396-
List<AttributeMetadata> attributes =
397-
Streams.stream(collection.search(this.getQueryForFilter(tenantId, request.getFilter())))
398-
.map(converter::convert)
399-
.flatMap(Optional::stream)
400-
.collect(Collectors.toUnmodifiableList());
377+
try (final CloseableIterator<Document> iterator =
378+
collection.search(this.getQueryForFilter(tenantId, request.getFilter()))) {
379+
List<AttributeMetadata> attributes =
380+
Streams.stream(iterator)
381+
.map(converter::convert)
382+
.flatMap(Optional::stream)
383+
.collect(Collectors.toUnmodifiableList());
401384

402-
responseObserver.onNext(
403-
GetAttributesResponse.newBuilder().addAllAttributes(attributes).build());
404-
responseObserver.onCompleted();
385+
responseObserver.onNext(
386+
GetAttributesResponse.newBuilder().addAllAttributes(attributes).build());
387+
responseObserver.onCompleted();
388+
} catch (Exception e) {
389+
LOGGER.error("Error getting attributes", e);
390+
responseObserver.onError(e);
391+
}
405392
}
406393

407394
@Override

helm/templates/configmap.yaml

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7,24 +7,29 @@ metadata:
77
data:
88
application.conf: |-
99
document.store {
10-
{{- $dst := .Values.configMap.dataStoreType }}
10+
{{- if .Values.database }}
11+
{{- $dst := .Values.database.type }}
1112
dataStoreType = {{ $dst }}
1213
appName = {{ .Values.service.name }}
14+
15+
{{- range $key, $value := (index .Values "database") }}
16+
{{- if ne $key $dst }}
17+
{{ $key }} = {{- toJson $value }}
18+
{{- end }}
19+
{{- end }}
20+
1321
{{ $dst }} {
14-
{{- range $key, $value := (index .Values "configMap" (printf "%s" $dst)) }}
22+
{{- range $key, $value := (index .Values "database" (printf "%s" $dst)) }}
1523
{{- if $value }}
1624
{{- if hasPrefix "${?" (printf "%s" $value) }}
1725
{{ $key }} = {{ $value }}
1826
{{- else }}
19-
{{- if eq $key "endpoints" }}
20-
endpoints = {{- toJson $value }}
21-
{{- else }}
22-
{{ $key }} = {{ $value | quote }}
23-
{{- end }}
27+
{{ $key }} = {{- toJson $value }}
2428
{{- end }}
2529
{{- end }}
2630
{{- end }}
2731
}
32+
{{- end }}
2833
}
2934
3035
max.custom.attributes.per.tenant: {{ .Values.configMap.maxCustomAttributesPerTenant }}

helm/templates/deployment.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -79,8 +79,8 @@ spec:
7979
value: "/var/{{ .Chart.Name }}/log/log4j2.properties"
8080
- name: JAVA_OPTS
8181
value: {{ .Values.javaOpts | quote }}
82-
{{- if .Values.database.mongoAuthEnabled }}
83-
{{- with .Values.configMap.mongo.credentials }}
82+
{{- if and .Values.database .Values.database.mongo.authEnabled }}
83+
{{- with .Values.database.mongo.credentials }}
8484
- name: MONGO_SERVICE_USERNAME
8585
valueFrom:
8686
secretKeyRef:

helm/values.yaml

Lines changed: 0 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -72,19 +72,6 @@ serviceSelectorLabels:
7272

7373
configMap:
7474
name: attribute-service-config
75-
dataStoreType: "mongo"
76-
mongo:
77-
endpoints:
78-
- host: mongo
79-
port: 27017
80-
# credentials:
81-
# secretName: <k8s secret name>
82-
# secretUsernameKey: <secret key for username>
83-
# secretPasswordKey: <secret key for password>
84-
postgres:
85-
host: postgres
86-
port: 5432
87-
url: ""
8875
maxCustomAttributesPerTenant: 5
8976

9077
logConfig:
@@ -106,6 +93,3 @@ hpa:
10693
minReplicas: 1
10794
maxReplicas: 5
10895
targetCPUUtilizationPercentage: 80
109-
110-
database:
111-
mongoAuthEnabled: true

0 commit comments

Comments
 (0)