Skip to content

Commit 1ef5e0b

Browse files
authored
Fix shutdown with jmx javaagent enabled (#899)
* Fix shutdown with jmx javaagent enabled * Skip CATALINA_OPTS for Bitbucket * Fix unit tests --------- Co-authored-by: Yevhen Ivantsov <yivantsov@atlassian.com>
1 parent 139b31f commit 1ef5e0b

File tree

15 files changed

+57
-25
lines changed

15 files changed

+57
-25
lines changed

src/main/charts/bamboo/templates/config-jvm.yaml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,5 @@ data:
1313
{{- if or .Values.bamboo.additionalCertificates.secretName .Values.bamboo.additionalCertificates.secretList }}
1414
-Djavax.net.ssl.trustStore=/var/ssl/cacerts
1515
{{- end }}
16-
{{ include "common.jmx.javaagent" . | indent 4 | trim }}
1716
max_heap: {{ .Values.bamboo.resources.jvm.maxHeap }}
1817
min_heap: {{ .Values.bamboo.resources.jvm.minHeap }}

src/main/charts/bamboo/templates/statefulset.yaml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -202,6 +202,10 @@ spec:
202202
{{ end }}
203203
- name: ATL_BAMBOO_ENABLE_UNATTENDED_SETUP
204204
value: {{ .Values.bamboo.unattendedSetup | quote }}
205+
{{- if .Values.monitoring.exposeJmxMetrics }}
206+
- name: CATALINA_OPTS
207+
value: {{ include "common.jmx.javaagent" . | replace "\n" "" | quote }}
208+
{{- end }}
205209
{{- include "bamboo.additionalEnvironmentVariables" . | nindent 12 }}
206210
ports:
207211
- name: http

src/main/charts/confluence/templates/config-jvm.yaml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@ data:
2222
{{- if or .Values.confluence.additionalCertificates.secretName .Values.confluence.additionalCertificates.secretList }}
2323
-Djavax.net.ssl.trustStore=/var/ssl/cacerts
2424
{{- end }}
25-
{{- include "common.jmx.javaagent" . | indent 4 -}}
2625
{{- include "confluence.sysprop.s3Config" . | indent 4 }}
2726
{{- if .Values.opensearch.enabled }}
2827
-Dsearch.platform=opensearch

src/main/charts/confluence/templates/statefulset.yaml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -263,6 +263,10 @@ spec:
263263
configMapKeyRef:
264264
key: reserved_code_cache
265265
name: {{ include "common.names.fullname" . }}-jvm-config
266+
{{- if .Values.monitoring.exposeJmxMetrics }}
267+
- name: CATALINA_OPTS
268+
value: {{ include "common.jmx.javaagent" . | replace "\n" "" | quote }}
269+
{{- end }}
266270
{{- include "confluence.additionalEnvironmentVariables" . | nindent 12 }}
267271
lifecycle:
268272
{{- if .Values.confluence.postStart.command }}

src/main/charts/crowd/templates/config-jvm.yaml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,5 @@ data:
1515
{{- if or .Values.crowd.additionalCertificates.secretName .Values.crowd.additionalCertificates.secretList }}
1616
-Djavax.net.ssl.trustStore=/var/ssl/cacerts
1717
{{- end }}
18-
{{ include "common.jmx.javaagent" . | indent 4 | trim }}
1918
max_heap: {{ .Values.crowd.resources.jvm.maxHeap }}
2019
min_heap: {{ .Values.crowd.resources.jvm.minHeap }}

src/main/charts/crowd/templates/statefulset.yaml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -231,6 +231,10 @@ spec:
231231
configMapKeyRef:
232232
key: max_heap
233233
name: {{ include "common.names.fullname" . }}-jvm-config
234+
{{- if .Values.monitoring.exposeJmxMetrics }}
235+
- name: CATALINA_OPTS
236+
value: {{ include "common.jmx.javaagent" . | replace "\n" "" | quote }}
237+
{{- end }}
234238
{{- include "crowd.additionalEnvironmentVariables" . | nindent 12 }}
235239
lifecycle:
236240
{{- if .Values.crowd.postStart.command }}

src/main/charts/jira/templates/config-jvm.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ data:
1717
{{- if or .Values.jira.additionalCertificates.secretName .Values.jira.additionalCertificates.secretList }}
1818
-Djavax.net.ssl.trustStore=/var/ssl/cacerts
1919
{{- end }}
20-
{{ include "common.jmx.javaagent" . | indent 4 | trim }}
20+
2121
max_heap: {{ .Values.jira.resources.jvm.maxHeap }}
2222
min_heap: {{ .Values.jira.resources.jvm.minHeap }}
2323
reserved_code_cache: {{ .Values.jira.resources.jvm.reservedCodeCache }}

src/main/charts/jira/templates/statefulset.yaml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -160,6 +160,10 @@ spec:
160160
configMapKeyRef:
161161
key: reserved_code_cache
162162
name: {{ include "common.names.fullname" . }}-jvm-config
163+
{{- if .Values.monitoring.exposeJmxMetrics }}
164+
- name: CATALINA_OPTS
165+
value: {{ include "common.jmx.javaagent" . | replace "\n" "" | quote }}
166+
{{- end }}
163167
{{- include "jira.additionalEnvironmentVariables" . | nindent 12 }}
164168
ports:
165169
- name: http

src/test/java/test/JmxMetricsTest.java

Lines changed: 25 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -55,9 +55,13 @@ void expose_jmx_metrics_enabled_init_container(Product product) throws Exception
5555
// assert no resources are set
5656
assertThat(statefulSet.getInitContainer("fetch-jmx-exporter").get().path("resources")).isEmpty();
5757

58-
// assert jvm configmap has javaagent
59-
final var jmvConfigMap = resources.getConfigMap(product.getHelmReleaseName() + "-jvm-config").getDataByKey("additional_jvm_args");
60-
assertThat(jmvConfigMap).hasTextContaining("-javaagent:"+sharedHomePath+"/jmx_prometheus_javaagent.jar=9999:/opt/atlassian/jmx/jmx-config.yaml");
58+
if (product.name().equals("bitbucket")) {
59+
final var jmvConfigMap = resources.getConfigMap(product.getHelmReleaseName() + "-jvm-config").getDataByKey("additional_jvm_args");
60+
assertThat(jmvConfigMap).hasTextContaining("-javaagent:"+sharedHomePath+"/jmx_prometheus_javaagent.jar=9999:/opt/atlassian/jmx/jmx-config.yaml");
61+
} else {
62+
// assert CATALINA_OPTS env var has javaagent
63+
statefulSet.getContainer().getEnv().assertHasValue("CATALINA_OPTS", "-javaagent:"+sharedHomePath+"/jmx_prometheus_javaagent.jar=9999:/opt/atlassian/jmx/jmx-config.yaml");
64+
}
6165

6266
// assert jmx configmap created and has expected config
6367
final var jmxConfigMap = resources.getConfigMap(product.getHelmReleaseName() + "-jmx-config").getDataByKey("jmx-config.yaml");
@@ -144,9 +148,15 @@ void expose_jmx_metrics_enabled_custom_vol_paths(Product product) throws Excepti
144148
assertThat(statefulSet.getInitContainer("fetch-jmx-exporter").get().path("args").get(1)).hasTextEqualTo(sharedHomePath);
145149
assertThat(statefulSet.getInitContainer("fetch-jmx-exporter").get().path("volumeMounts").get(0).path("mountPath")).hasTextEqualTo(sharedHomePath);
146150
assertThat(statefulSet.getInitContainer("fetch-jmx-exporter").get().path("volumeMounts").get(0).path("subPath")).hasTextEqualTo(product.name());
147-
// assert jvm configmap has javaagent
148-
final var jmvConfigMap = resources.getConfigMap(product.getHelmReleaseName() + "-jvm-config").getDataByKey("additional_jvm_args");
149-
assertThat(jmvConfigMap).hasTextContaining("-javaagent:"+ sharedHomePath + "/jmx_prometheus_javaagent.jar=9999:/opt/atlassian/jmx/jmx-config.yaml");
151+
152+
if (product.name().equals("bitbucket")) {
153+
// assert jvm configmap has javaagent
154+
final var jmvConfigMap = resources.getConfigMap(product.getHelmReleaseName() + "-jvm-config").getDataByKey("additional_jvm_args");
155+
assertThat(jmvConfigMap).hasTextContaining("-javaagent:"+ sharedHomePath + "/jmx_prometheus_javaagent.jar=9999:/opt/atlassian/jmx/jmx-config.yaml");
156+
} else {
157+
// assert CATALINA_OPTS env var has javaagent
158+
statefulSet.getContainer().getEnv().assertHasValue("CATALINA_OPTS", "-javaagent:"+ sharedHomePath + "/jmx_prometheus_javaagent.jar=9999:/opt/atlassian/jmx/jmx-config.yaml");
159+
}
150160
}
151161

152162
@ParameterizedTest
@@ -181,9 +191,14 @@ void expose_jmx_metrics_enabled_custom_jar(Product product) throws Exception {
181191
// assert jmx_exporter init container does not exist
182192
assertThat(statefulSet.getInitContainers().path(0).path("name")).hasTextNotContaining("fetch-jmx-exporter");
183193

184-
// assert jvm configmap has custom javaagent path and port
185-
final var jmvConfigMap = resources.getConfigMap(product.getHelmReleaseName() + "-jvm-config").getDataByKey("additional_jvm_args");
186-
assertThat(jmvConfigMap).hasTextContaining("-javaagent:/tmp/custom.jar=9000:/opt/atlassian/jmx/jmx-config.yaml");
194+
if (product.name().equals("bitbucket")) {
195+
// assert jvm configmap has custom javaagent path and port
196+
final var jmvConfigMap = resources.getConfigMap(product.getHelmReleaseName() + "-jvm-config").getDataByKey("additional_jvm_args");
197+
assertThat(jmvConfigMap).hasTextContaining("-javaagent:/tmp/custom.jar=9000:/opt/atlassian/jmx/jmx-config.yaml");
198+
} else {
199+
// assert CATALINA_OPTS has custom javaagent path and port
200+
statefulSet.getContainer().getEnv().assertHasValue("CATALINA_OPTS", "-javaagent:/tmp/custom.jar=9000:/opt/atlassian/jmx/jmx-config.yaml");
201+
}
187202
}
188203

189204
@ParameterizedTest
@@ -246,7 +261,7 @@ void expose_jmx_metrics_bitbucket_mesh(Product product) throws Exception {
246261
assertThat(statefulSet.getContainer(product.name()+"-mesh").getPort("jmx").path("containerPort")).hasValueEqualTo(9999);
247262
assertThat(statefulSet.getContainer(product.name()+"-mesh").getPort("jmx").path("protocol")).hasTextEqualTo("TCP");
248263

249-
// assert jmx env var
264+
// assert jmx env vars
250265
statefulSet.getContainer().getEnv().assertHasValue("JMX_ENABLED", "true");
251266

252267
// assert jvm configmap has javaagent

src/test/resources/expected_helm_output/bamboo-agent/output.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ spec:
4646
template:
4747
metadata:
4848
annotations:
49-
checksum/config-jvm: 5557e5a72e1652ec4f239a78f58a41dc269636b3b030ab797258dc4892c653ae
49+
checksum/config-jvm: d3c6ac2201e94d43ef644ef4d23a9c50f266a07765a8eb61068df067aa032a3d
5050
labels:
5151
app.kubernetes.io/name: bamboo-agent
5252
app.kubernetes.io/instance: unittest-bamboo-agent

0 commit comments

Comments
 (0)