|
33 | 33 | import java.util.concurrent.ConcurrentMap;
|
34 | 34 | import java.util.concurrent.ExecutorService;
|
35 | 35 | import java.util.concurrent.LinkedBlockingQueue;
|
36 |
| -import java.util.concurrent.RejectedExecutionException; |
| 36 | +import java.util.concurrent.RejectedExecutionHandler; |
37 | 37 | import java.util.concurrent.ThreadFactory;
|
38 | 38 | import java.util.concurrent.ThreadPoolExecutor;
|
39 | 39 | import java.util.concurrent.TimeUnit;
|
@@ -677,7 +677,7 @@ private Optional<ExecutorService> createExecutor() {
|
677 | 677 | numWorkerThreads,
|
678 | 678 | 0L,
|
679 | 679 | TimeUnit.MILLISECONDS,
|
680 |
| - queue, new PrometheusWorkerThreadFactory()); |
| 680 | + queue, new PrometheusWorkerThreadFactory(), new PrometheusRejectedExecutionHandler()); |
681 | 681 | LOG.info("Executor service was created with numWorkerThreads {} and maxQueueSize {}",
|
682 | 682 | numWorkerThreads,
|
683 | 683 | maxQueueSize);
|
@@ -714,14 +714,21 @@ public Thread newThread(final Runnable runnable) {
|
714 | 714 | }
|
715 | 715 | }
|
716 | 716 |
|
| 717 | + private static class PrometheusRejectedExecutionHandler implements RejectedExecutionHandler { |
| 718 | + private static boolean maxQueueSizeExceeded = false; |
| 719 | + |
| 720 | + @Override |
| 721 | + public void rejectedExecution(final Runnable r, final ThreadPoolExecutor e) { |
| 722 | + if (!maxQueueSizeExceeded) { |
| 723 | + maxQueueSizeExceeded = true; |
| 724 | + LOG.warn("Prometheus metrics queue size exceeded the max"); |
| 725 | + } |
| 726 | + } |
| 727 | + } |
| 728 | + |
717 | 729 | private void reportMetrics(final Runnable task) {
|
718 | 730 | if (executorOptional.isPresent()) {
|
719 |
| - try { |
720 |
| - executorOptional.get().submit(task); |
721 |
| - } catch (final RejectedExecutionException e) { |
722 |
| - rateLogger.rateLimitLog("Prometheus metrics reporting task queue size exceeded the max", |
723 |
| - String.valueOf(maxQueueSize)); |
724 |
| - } |
| 731 | + executorOptional.get().submit(task); |
725 | 732 | } else {
|
726 | 733 | task.run();
|
727 | 734 | }
|
|
0 commit comments