Skip to content

Commit 6ac452e

Browse files
committed
do not propagate IOException from the servlet
1 parent ddecff1 commit 6ac452e

File tree

1 file changed

+16
-2
lines changed

1 file changed

+16
-2
lines changed

opengrok-web/src/main/java/org/opengrok/web/servlet/MetricsServlet.java

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
*/
1919

2020
/*
21-
* Copyright (c) 2020, Oracle and/or its affiliates. All rights reserved.
21+
* Copyright (c) 2020, 2025, Oracle and/or its affiliates. All rights reserved.
2222
*/
2323
package org.opengrok.web.servlet;
2424

@@ -27,19 +27,33 @@
2727
import jakarta.servlet.http.HttpServletRequest;
2828
import jakarta.servlet.http.HttpServletResponse;
2929
import org.opengrok.indexer.Metrics;
30+
import org.opengrok.indexer.logger.LoggerFactory;
3031

3132
import java.io.IOException;
3233
import java.io.PrintWriter;
34+
import java.io.Serial;
35+
import java.util.logging.Logger;
36+
import java.util.logging.Level;
3337

3438
@WebServlet("/metrics/prometheus")
3539
public class MetricsServlet extends HttpServlet {
3640

41+
@Serial
3742
private static final long serialVersionUID = 0L;
3843

44+
private static final Logger logger = LoggerFactory.getLogger(MetricsServlet.class);
45+
3946
@Override
40-
protected void doGet(final HttpServletRequest req, final HttpServletResponse resp) throws IOException {
47+
protected void doGet(final HttpServletRequest req, final HttpServletResponse resp) {
4148
try (PrintWriter pw = resp.getWriter()) {
4249
pw.print(Metrics.getPrometheusRegistry().scrape());
50+
} catch (IOException e) {
51+
try {
52+
resp.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR,
53+
String.format("failed to write the output data: %s", e.getMessage()));
54+
} catch (IOException ex) {
55+
logger.log(Level.WARNING, String.format("failed to send error code: %s", e.getMessage()));
56+
}
4357
}
4458
}
4559
}

0 commit comments

Comments
 (0)