Skip to content

Commit f7e2e5f

Browse files
committed
Add path promotion files count metrics
1 parent b5319c1 commit f7e2e5f

3 files changed

Lines changed: 39 additions & 2 deletions

File tree

addons/promote/common/pom.xml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,10 @@
6161
<groupId>org.commonjava.atlas</groupId>
6262
<artifactId>atlas-identities</artifactId>
6363
</dependency>
64+
<dependency>
65+
<groupId>org.commonjava.indy</groupId>
66+
<artifactId>indy-subsys-metrics-reporter</artifactId>
67+
</dependency>
6468
</dependencies>
6569

6670
<build>

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

Lines changed: 25 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
import org.commonjava.indy.data.IndyDataException;
3131
import org.commonjava.indy.data.StoreDataManager;
3232
import org.commonjava.indy.measure.annotation.Measure;
33+
import org.commonjava.indy.metrics.IndyMetricsManager;
3334
import org.commonjava.indy.model.core.ArtifactStore;
3435
import org.commonjava.indy.model.core.Group;
3536
import org.commonjava.indy.model.core.HostedRepository;
@@ -64,6 +65,7 @@
6465
import java.io.InputStream;
6566
import java.util.ArrayList;
6667
import java.util.Collections;
68+
import java.util.HashMap;
6769
import java.util.HashSet;
6870
import java.util.List;
6971
import java.util.Map;
@@ -93,6 +95,9 @@ public class PromotionManager
9395

9496
private final Logger logger = LoggerFactory.getLogger( getClass() );
9597

98+
@Inject
99+
private IndyMetricsManager metricsManager;
100+
96101
@Inject
97102
private PromoteConfig config;
98103

@@ -511,8 +516,10 @@ private PathsPromoteResult doPathsPromotion( PathsPromoteRequest request, String
511516
}
512517
else if ( validation.isValid() )
513518
{
514-
return runPathPromotions( request, pending, Collections.emptySet(), Collections.emptySet(), contents,
515-
validation, validationRequest );
519+
PathsPromoteResult result = runPathPromotions( request, pending, Collections.emptySet(), Collections.emptySet(), contents,
520+
validation, validationRequest );
521+
doPathPromoteMetrics( contents.size(), result );
522+
return result;
516523
}
517524
else
518525
{
@@ -521,6 +528,22 @@ else if ( validation.isValid() )
521528
}
522529
}
523530

531+
private void doPathPromoteMetrics( int total, PathsPromoteResult result )
532+
{
533+
try
534+
{
535+
Map<String, Integer> pathPromoteMetrics = new HashMap<>();
536+
pathPromoteMetrics.put( "total", total );
537+
pathPromoteMetrics.put( "complete", result.getCompletedPaths().size() );
538+
pathPromoteMetrics.put( "skipped", result.getSkippedPaths().size() );
539+
metricsManager.addGauges( this.getClass(), "path.promote", pathPromoteMetrics );
540+
}
541+
catch ( Throwable e )
542+
{
543+
logger.warn( "Failed to get path promote files metrics. Reason: {} ", e.getMessage() );
544+
}
545+
}
546+
524547
private Future<PathsPromoteResult> submitPathsPromoteRequest( PathsPromoteRequest request, final String baseUrl )
525548
throws IndyWorkflowException
526549
{

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

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@
4141

4242
import static com.codahale.metrics.MetricRegistry.name;
4343
import static org.apache.commons.lang.StringUtils.isNotBlank;
44+
import static org.commonjava.indy.metrics.IndyMetricsConstants.DEFAULT;
4445
import static org.commonjava.indy.metrics.IndyMetricsConstants.EXCEPTION;
4546
import static org.commonjava.indy.metrics.IndyMetricsConstants.METER;
4647
import static org.commonjava.indy.metrics.IndyMetricsConstants.SKIP_METRIC;
@@ -252,4 +253,13 @@ public <T> T wrapWithStandardMetrics( final Supplier<T> method, final Supplier<S
252253
}
253254
}
254255

256+
public <T> void addGauges( Class<?> className, String method, Map<String, T> gauges )
257+
{
258+
String defaultName = IndyMetricsConstants.getDefaultName( className, method );
259+
gauges.forEach( ( k, t ) -> {
260+
String name = IndyMetricsConstants.getName( config.getNodePrefix(), DEFAULT, defaultName, k );
261+
metricRegistry.gauge( name, () -> () -> t );
262+
} );
263+
}
264+
255265
}

0 commit comments

Comments
 (0)