Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
*/
package org.commonjava.indy.promote.data;

import com.codahale.metrics.Gauge;
import org.apache.commons.lang.StringUtils;
import org.commonjava.cdi.util.weft.DrainingExecutorCompletionService;
import org.commonjava.cdi.util.weft.ExecutorConfig;
Expand Down Expand Up @@ -59,6 +60,7 @@
import org.slf4j.LoggerFactory;
import org.slf4j.MDC;

import javax.annotation.PostConstruct;
import javax.enterprise.context.ApplicationScoped;
import javax.enterprise.event.Event;
import javax.inject.Inject;
Expand All @@ -75,6 +77,7 @@
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.Future;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.concurrent.atomic.AtomicReference;
import java.util.stream.Collectors;

Expand Down Expand Up @@ -157,10 +160,26 @@ public class PromotionManager
@Inject
private NotFoundCache nfc;

private final AtomicInteger pathPromotionTotal = new AtomicInteger();

private final AtomicInteger pathPromotionCompleted = new AtomicInteger();

private final AtomicInteger pathPromotionSkipped = new AtomicInteger();

protected PromotionManager()
{
}

@PostConstruct
public void init()
{
Map<String, Gauge<Integer>> gauges = new HashMap<>();
gauges.put( "total", () -> pathPromotionTotal.get() );
gauges.put( "completed", () -> pathPromotionCompleted.get() );
gauges.put( "skipped", () -> pathPromotionSkipped.get() );
metricsManager.addGauges( this.getClass(), "path.promote.last", gauges );
}

public PromotionManager( PromotionValidator validator, final ContentManager contentManager,
final DownloadManager downloadManager, final StoreDataManager storeManager,
Locker<StoreKey> byPathTargetLocks, Locker<StoreKey> byGroupTargetLocks,
Expand Down Expand Up @@ -594,18 +613,9 @@ else if ( e instanceof IndyWorkflowException )

private void doPathPromoteMetrics( int total, PathsPromoteResult result )
{
try
{
Map<String, Integer> pathPromoteMetrics = new HashMap<>();
pathPromoteMetrics.put( "total", total );
pathPromoteMetrics.put( "complete", result.getCompletedPaths().size() );
pathPromoteMetrics.put( "skipped", result.getSkippedPaths().size() );
metricsManager.addGauges( this.getClass(), "path.promote", pathPromoteMetrics );
}
catch ( Throwable e )
{
logger.warn( "Failed to get path promote files metrics. Reason: {} ", e.getMessage() );
}
pathPromotionTotal.set( total );
pathPromotionCompleted.set( result.getCompletedPaths().size() );
pathPromotionSkipped.set( result.getSkippedPaths().size() );
}

private Future<PathsPromoteResult> submitPathsPromoteRequest( PathsPromoteRequest request, final String baseUrl )
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -101,7 +101,7 @@ public void setCompletedPaths( final Set<String> completedPaths )

public Set<String> getSkippedPaths()
{
return skippedPaths;
return skippedPaths == null ? Collections.<String> emptySet() : skippedPaths;
}

public void setSkippedPaths( Set<String> skippedPaths )
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
*/
package org.commonjava.indy.metrics;

import com.codahale.metrics.Gauge;
import com.codahale.metrics.Meter;
import com.codahale.metrics.MetricRegistry;
import com.codahale.metrics.Timer;
Expand Down Expand Up @@ -46,6 +47,7 @@
import static org.commonjava.indy.metrics.IndyMetricsConstants.METER;
import static org.commonjava.indy.metrics.IndyMetricsConstants.SKIP_METRIC;
import static org.commonjava.indy.metrics.IndyMetricsConstants.TIMER;
import static org.commonjava.indy.metrics.IndyMetricsConstants.getDefaultName;
import static org.commonjava.indy.metrics.jvm.IndyJVMInstrumentation.registerJvmMetric;
import static org.commonjava.indy.model.core.StoreType.remote;
import static org.commonjava.indy.pkg.maven.model.MavenPackageTypeDescriptor.MAVEN_PKG_KEY;
Expand Down Expand Up @@ -251,12 +253,12 @@ public <T> T wrapWithStandardMetrics( final Supplier<T> method, final Supplier<S
}
}

public <T> void addGauges( Class<?> className, String method, Map<String, T> gauges )
public void addGauges( Class<?> className, String method, Map<String, Gauge<Integer>> gauges )
{
String defaultName = IndyMetricsConstants.getDefaultName( className, method );
gauges.forEach( ( k, t ) -> {
String defaultName = getDefaultName( className, method );
gauges.forEach( ( k, v ) -> {
String name = IndyMetricsConstants.getName( config.getNodePrefix(), DEFAULT, defaultName, k );
metricRegistry.gauge( name, () -> () -> t );
metricRegistry.gauge( name, () -> v );
} );
}

Expand Down