Core metrics (#1586)

Expose metrics for http requests and executor services.
This commit is contained in:
Sebastian Sdorra
2021-03-17 11:09:52 +01:00
committed by GitHub
parent 4dbcc019b7
commit 26b65582ce
25 changed files with 632 additions and 93 deletions

View File

@@ -25,8 +25,10 @@
package sonia.scm.web;
import com.google.common.util.concurrent.ThreadFactoryBuilder;
import io.micrometer.core.instrument.MeterRegistry;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import sonia.scm.metrics.Metrics;
import sonia.scm.repository.RepositoryHookType;
import sonia.scm.repository.spi.GitHookContextProvider;
import sonia.scm.repository.spi.HookEventFacade;
@@ -59,9 +61,9 @@ public class GitHookEventFacade implements Closeable {
private final ExecutorService internalThreadHookHandler;
@Inject
public GitHookEventFacade(HookEventFacade hookEventFacade) {
public GitHookEventFacade(HookEventFacade hookEventFacade, MeterRegistry registry) {
this.hookEventFacade = hookEventFacade;
this.internalThreadHookHandler = createInternalThreadHookHandlerPool();
this.internalThreadHookHandler = createInternalThreadHookHandlerPool(registry);
}
public void fire(RepositoryHookType type, GitHookContextProvider context) {
@@ -122,12 +124,14 @@ public class GitHookEventFacade implements Closeable {
}
@Nonnull
private ExecutorService createInternalThreadHookHandlerPool() {
return Executors.newCachedThreadPool(
private ExecutorService createInternalThreadHookHandlerPool(MeterRegistry registry) {
ExecutorService executorService = Executors.newCachedThreadPool(
new ThreadFactoryBuilder()
.setNameFormat("GitInternalThreadHookHandler-%d")
.build()
);
Metrics.executor(registry, executorService, "GitInternalHookHandler", "cached");
return executorService;
}
@Override

View File

@@ -24,6 +24,7 @@
package sonia.scm.repository.spi;
import io.micrometer.core.instrument.simple.SimpleMeterRegistry;
import org.eclipse.jgit.transport.ScmTransportProtocol;
import org.eclipse.jgit.transport.Transport;
import org.junit.rules.ExternalResource;
@@ -49,7 +50,7 @@ class BindTransportProtocolRule extends ExternalResource {
@Override
protected void before() {
HookContextFactory hookContextFactory = new HookContextFactory(mock(PreProcessorUtil.class));
hookEventFacade = new GitHookEventFacade(new HookEventFacade(of(repositoryManager), hookContextFactory));
hookEventFacade = new GitHookEventFacade(new HookEventFacade(of(repositoryManager), hookContextFactory), new SimpleMeterRegistry());
GitRepositoryHandler gitRepositoryHandler = mock(GitRepositoryHandler.class);
scmTransportProtocol = new ScmTransportProtocol(of(GitTestHelper.createConverterFactory()), of(hookEventFacade), of(gitRepositoryHandler));

View File

@@ -24,6 +24,7 @@
package sonia.scm.repository.spi;
import io.micrometer.core.instrument.simple.SimpleMeterRegistry;
import org.eclipse.jgit.api.Git;
import org.eclipse.jgit.api.Status;
import org.eclipse.jgit.lib.Repository;
@@ -67,7 +68,7 @@ public class SimpleGitWorkingCopyFactoryTest extends AbstractGitCommandTestBase
@Before
public void bindScmProtocol() throws IOException {
HookContextFactory hookContextFactory = new HookContextFactory(mock(PreProcessorUtil.class));
hookEventFacade = new GitHookEventFacade(new HookEventFacade(of(mock(RepositoryManager.class)), hookContextFactory));
hookEventFacade = new GitHookEventFacade(new HookEventFacade(of(mock(RepositoryManager.class)), hookContextFactory), new SimpleMeterRegistry());
GitRepositoryHandler gitRepositoryHandler = mock(GitRepositoryHandler.class);
proto = new ScmTransportProtocol(of(GitTestHelper.createConverterFactory()), of(hookEventFacade), of(gitRepositoryHandler));
Transport.register(proto);