Skip to content

Commit e62b334

Browse files
authored
Fix byPath promotion gauges (#1225)
1 parent 46e3a4e commit e62b334

3 files changed

Lines changed: 29 additions & 17 deletions

File tree

addons/promote/common/src/main/java/org/commonjava/indy/promote/data/PromotionManager.java

Lines changed: 22 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
*/
1616
package org.commonjava.indy.promote.data;
1717

18+
import com.codahale.metrics.Gauge;
1819
import org.apache.commons.lang.StringUtils;
1920
import org.commonjava.cdi.util.weft.DrainingExecutorCompletionService;
2021
import org.commonjava.cdi.util.weft.ExecutorConfig;
@@ -59,6 +60,7 @@
5960
import org.slf4j.LoggerFactory;
6061
import org.slf4j.MDC;
6162

63+
import javax.annotation.PostConstruct;
6264
import javax.enterprise.context.ApplicationScoped;
6365
import javax.enterprise.event.Event;
6466
import javax.inject.Inject;
@@ -75,6 +77,7 @@
7577
import java.util.concurrent.ConcurrentHashMap;
7678
import java.util.concurrent.ExecutionException;
7779
import java.util.concurrent.Future;
80+
import java.util.concurrent.atomic.AtomicInteger;
7881
import java.util.concurrent.atomic.AtomicReference;
7982
import java.util.stream.Collectors;
8083

@@ -157,10 +160,26 @@ public class PromotionManager
157160
@Inject
158161
private NotFoundCache nfc;
159162

163+
private final AtomicInteger pathPromotionTotal = new AtomicInteger();
164+
165+
private final AtomicInteger pathPromotionCompleted = new AtomicInteger();
166+
167+
private final AtomicInteger pathPromotionSkipped = new AtomicInteger();
168+
160169
protected PromotionManager()
161170
{
162171
}
163172

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+
164183
public PromotionManager( PromotionValidator validator, final ContentManager contentManager,
165184
final DownloadManager downloadManager, final StoreDataManager storeManager,
166185
Locker<StoreKey> byPathTargetLocks, Locker<StoreKey> byGroupTargetLocks,
@@ -594,18 +613,9 @@ else if ( e instanceof IndyWorkflowException )
594613

595614
private void doPathPromoteMetrics( int total, PathsPromoteResult result )
596615
{
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() );
609619
}
610620

611621
private Future<PathsPromoteResult> submitPathsPromoteRequest( PathsPromoteRequest request, final String baseUrl )

addons/promote/model-java/src/main/java/org/commonjava/indy/promote/model/PathsPromoteResult.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,7 @@ public void setCompletedPaths( final Set<String> completedPaths )
101101

102102
public Set<String> getSkippedPaths()
103103
{
104-
return skippedPaths;
104+
return skippedPaths == null ? Collections.<String> emptySet() : skippedPaths;
105105
}
106106

107107
public void setSkippedPaths( Set<String> skippedPaths )

subsys/metrics/reporter/src/main/java/org/commonjava/indy/metrics/IndyMetricsManager.java

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
*/
1616
package org.commonjava.indy.metrics;
1717

18+
import com.codahale.metrics.Gauge;
1819
import com.codahale.metrics.Meter;
1920
import com.codahale.metrics.MetricRegistry;
2021
import com.codahale.metrics.Timer;
@@ -46,6 +47,7 @@
4647
import static org.commonjava.indy.metrics.IndyMetricsConstants.METER;
4748
import static org.commonjava.indy.metrics.IndyMetricsConstants.SKIP_METRIC;
4849
import static org.commonjava.indy.metrics.IndyMetricsConstants.TIMER;
50+
import static org.commonjava.indy.metrics.IndyMetricsConstants.getDefaultName;
4951
import static org.commonjava.indy.metrics.jvm.IndyJVMInstrumentation.registerJvmMetric;
5052
import static org.commonjava.indy.model.core.StoreType.remote;
5153
import static org.commonjava.indy.pkg.maven.model.MavenPackageTypeDescriptor.MAVEN_PKG_KEY;
@@ -251,12 +253,12 @@ public <T> T wrapWithStandardMetrics( final Supplier<T> method, final Supplier<S
251253
}
252254
}
253255

254-
public <T> void addGauges( Class<?> className, String method, Map<String, T> gauges )
256+
public void addGauges( Class<?> className, String method, Map<String, Gauge<Integer>> gauges )
255257
{
256-
String defaultName = IndyMetricsConstants.getDefaultName( className, method );
257-
gauges.forEach( ( k, t ) -> {
258+
String defaultName = getDefaultName( className, method );
259+
gauges.forEach( ( k, v ) -> {
258260
String name = IndyMetricsConstants.getName( config.getNodePrefix(), DEFAULT, defaultName, k );
259-
metricRegistry.gauge( name, () -> () -> t );
261+
metricRegistry.gauge( name, () -> v );
260262
} );
261263
}
262264

0 commit comments

Comments
 (0)