|
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