|
15 | 15 | */ |
16 | 16 | package org.commonjava.indy.promote.data; |
17 | 17 |
|
| 18 | +import com.codahale.metrics.Gauge; |
18 | 19 | import org.apache.commons.lang.StringUtils; |
19 | 20 | import org.commonjava.cdi.util.weft.DrainingExecutorCompletionService; |
20 | 21 | import org.commonjava.cdi.util.weft.ExecutorConfig; |
|
59 | 60 | import org.slf4j.LoggerFactory; |
60 | 61 | import org.slf4j.MDC; |
61 | 62 |
|
| 63 | +import javax.annotation.PostConstruct; |
62 | 64 | import javax.enterprise.context.ApplicationScoped; |
63 | 65 | import javax.enterprise.event.Event; |
64 | 66 | import javax.inject.Inject; |
|
75 | 77 | import java.util.concurrent.ConcurrentHashMap; |
76 | 78 | import java.util.concurrent.ExecutionException; |
77 | 79 | import java.util.concurrent.Future; |
| 80 | +import java.util.concurrent.atomic.AtomicInteger; |
78 | 81 | import java.util.concurrent.atomic.AtomicReference; |
79 | 82 | import java.util.stream.Collectors; |
80 | 83 |
|
@@ -157,10 +160,26 @@ public class PromotionManager |
157 | 160 | @Inject |
158 | 161 | private NotFoundCache nfc; |
159 | 162 |
|
| 163 | + private final AtomicInteger pathPromotionTotal = new AtomicInteger(); |
| 164 | + |
| 165 | + private final AtomicInteger pathPromotionCompleted = new AtomicInteger(); |
| 166 | + |
| 167 | + private final AtomicInteger pathPromotionSkipped = new AtomicInteger(); |
| 168 | + |
160 | 169 | protected PromotionManager() |
161 | 170 | { |
162 | 171 | } |
163 | 172 |
|
| 173 | + @PostConstruct |
| 174 | + public void init() |
| 175 | + { |
| 176 | + Map<String, Gauge<Integer>> gauges = new HashMap<>(); |
| 177 | + gauges.put( "total", () -> pathPromotionTotal.get() ); |
| 178 | + gauges.put( "completed", () -> pathPromotionCompleted.get() ); |
| 179 | + gauges.put( "skipped", () -> pathPromotionSkipped.get() ); |
| 180 | + metricsManager.addGauges( this.getClass(), "path.promote.last", gauges ); |
| 181 | + } |
| 182 | + |
164 | 183 | public PromotionManager( PromotionValidator validator, final ContentManager contentManager, |
165 | 184 | final DownloadManager downloadManager, final StoreDataManager storeManager, |
166 | 185 | Locker<StoreKey> byPathTargetLocks, Locker<StoreKey> byGroupTargetLocks, |
@@ -594,18 +613,9 @@ else if ( e instanceof IndyWorkflowException ) |
594 | 613 |
|
595 | 614 | private void doPathPromoteMetrics( int total, PathsPromoteResult result ) |
596 | 615 | { |
597 | | - try |
598 | | - { |
599 | | - Map<String, Integer> pathPromoteMetrics = new HashMap<>(); |
600 | | - pathPromoteMetrics.put( "total", total ); |
601 | | - pathPromoteMetrics.put( "complete", result.getCompletedPaths().size() ); |
602 | | - pathPromoteMetrics.put( "skipped", result.getSkippedPaths().size() ); |
603 | | - metricsManager.addGauges( this.getClass(), "path.promote", pathPromoteMetrics ); |
604 | | - } |
605 | | - catch ( Throwable e ) |
606 | | - { |
607 | | - logger.warn( "Failed to get path promote files metrics. Reason: {} ", e.getMessage() ); |
608 | | - } |
| 616 | + pathPromotionTotal.set( total ); |
| 617 | + pathPromotionCompleted.set( result.getCompletedPaths().size() ); |
| 618 | + pathPromotionSkipped.set( result.getSkippedPaths().size() ); |
609 | 619 | } |
610 | 620 |
|
611 | 621 | private Future<PathsPromoteResult> submitPathsPromoteRequest( PathsPromoteRequest request, final String baseUrl ) |
|
0 commit comments