|
18 | 18 | */ |
19 | 19 |
|
20 | 20 | /* |
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. |
22 | 22 | */ |
23 | 23 | package org.opengrok.web.servlet; |
24 | 24 |
|
|
27 | 27 | import jakarta.servlet.http.HttpServletRequest; |
28 | 28 | import jakarta.servlet.http.HttpServletResponse; |
29 | 29 | import org.opengrok.indexer.Metrics; |
| 30 | +import org.opengrok.indexer.logger.LoggerFactory; |
30 | 31 |
|
31 | 32 | import java.io.IOException; |
32 | 33 | import java.io.PrintWriter; |
| 34 | +import java.io.Serial; |
| 35 | +import java.util.logging.Logger; |
| 36 | +import java.util.logging.Level; |
33 | 37 |
|
34 | 38 | @WebServlet("/metrics/prometheus") |
35 | 39 | public class MetricsServlet extends HttpServlet { |
36 | 40 |
|
| 41 | + @Serial |
37 | 42 | private static final long serialVersionUID = 0L; |
38 | 43 |
|
| 44 | + private static final Logger logger = LoggerFactory.getLogger(MetricsServlet.class); |
| 45 | + |
39 | 46 | @Override |
40 | | - protected void doGet(final HttpServletRequest req, final HttpServletResponse resp) throws IOException { |
| 47 | + protected void doGet(final HttpServletRequest req, final HttpServletResponse resp) { |
41 | 48 | try (PrintWriter pw = resp.getWriter()) { |
42 | 49 | 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 | + } |
43 | 57 | } |
44 | 58 | } |
45 | 59 | } |
0 commit comments