mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-03-22 15:19:59 +07:00
[ide driver] Using lazy tracer initialization for JMX Invoker since too early init led to NoopOpenTelemetryManager init
GitOrigin-RevId: c0bbe665073a7345050d33ae16fb378993ff93d4
This commit is contained in:
committed by
intellij-monorepo-bot
parent
261706a7e6
commit
d4b3af45dd
@@ -84,7 +84,7 @@ class TelemetryManagerImpl(app: Application) : TelemetryManager {
|
||||
}
|
||||
|
||||
override fun forceFlushMetrics() {
|
||||
logger<TelemetryManagerImpl>().info("Forcing metrics flushing ...")
|
||||
logger<TelemetryManagerImpl>().info("Forcing flushing OpenTelemetry metrics ...")
|
||||
|
||||
listOf(
|
||||
sdk.sdkMeterProvider.forceFlush(),
|
||||
@@ -93,7 +93,7 @@ class TelemetryManagerImpl(app: Application) : TelemetryManager {
|
||||
|
||||
aggregatedMetricExporter.flush().join(10, TimeUnit.SECONDS)
|
||||
|
||||
logger<TelemetryManagerImpl>().info("Metrics are flushed")
|
||||
logger<TelemetryManagerImpl>().info("OpenTelemetry metrics were flushed")
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -15,8 +15,10 @@ import com.intellij.openapi.diagnostic.Logger;
|
||||
import com.intellij.openapi.extensions.PluginId;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.util.BuildNumber;
|
||||
import com.intellij.openapi.util.ClearableLazyValue;
|
||||
import com.intellij.platform.diagnostic.telemetry.IJTracer;
|
||||
import com.intellij.util.ExceptionUtil;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
import io.opentelemetry.api.trace.Span;
|
||||
import io.opentelemetry.api.trace.SpanBuilder;
|
||||
import io.opentelemetry.context.Context;
|
||||
@@ -47,12 +49,17 @@ public class Invoker implements InvokerMBean {
|
||||
|
||||
private final Map<Integer, WeakReference<Object>> adhocReferenceMap = new ConcurrentHashMap<>();
|
||||
|
||||
private final IJTracer tracer;
|
||||
private final ClearableLazyValue<IJTracer> tracer;
|
||||
private final Supplier<? extends Context> timedContextSupplier;
|
||||
|
||||
public Invoker(@NotNull IJTracer tracer, @NotNull Supplier<? extends Context> timedContextSupplier) {
|
||||
public Invoker(@NotNull Supplier<? extends IJTracer> tracerSupplier, @NotNull Supplier<? extends Context> timedContextSupplier) {
|
||||
this.timedContextSupplier = timedContextSupplier;
|
||||
this.tracer = tracer;
|
||||
this.tracer = new ClearableLazyValue<>() {
|
||||
@Override
|
||||
protected @NotNull IJTracer compute() {
|
||||
return tracerSupplier.get();
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -269,7 +276,7 @@ public class Invoker implements InvokerMBean {
|
||||
}
|
||||
}
|
||||
else {
|
||||
SpanBuilder spanBuilder = tracer.spanBuilder(call.getTimedSpan())
|
||||
SpanBuilder spanBuilder = tracer.getValue().spanBuilder(call.getTimedSpan())
|
||||
.setParent(timedContextSupplier.get());
|
||||
|
||||
Span span = spanBuilder.startSpan();
|
||||
|
||||
@@ -22,9 +22,9 @@ public interface InvokerMBean {
|
||||
|
||||
void cleanup(int sessionId);
|
||||
|
||||
static void register(IJTracer tracer, Supplier<? extends Context> timedContextSupplier) throws JMException {
|
||||
static void register(Supplier<? extends IJTracer> tracerSupplier, Supplier<? extends Context> timedContextSupplier) throws JMException {
|
||||
ObjectName objectName = new ObjectName("com.intellij.driver:type=Invoker");
|
||||
MBeanServer server = ManagementFactory.getPlatformMBeanServer();
|
||||
server.registerMBean(new Invoker(tracer, timedContextSupplier), objectName);
|
||||
server.registerMBean(new Invoker(tracerSupplier, timedContextSupplier), objectName);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -125,7 +125,7 @@ class ProjectLoaded : InitProjectActivityJavaShim(), ApplicationInitializedListe
|
||||
|
||||
override suspend fun execute(asyncScope: CoroutineScope) {
|
||||
if (System.getProperty("com.sun.management.jmxremote") == "true") {
|
||||
InvokerMBean.register(PerformanceTestSpan.TRACER) { PerformanceTestSpan.getContext() }
|
||||
InvokerMBean.register({ PerformanceTestSpan.TRACER }, { PerformanceTestSpan.getContext() })
|
||||
}
|
||||
|
||||
if (ApplicationManagerEx.getApplicationEx().isLightEditMode) {
|
||||
|
||||
Reference in New Issue
Block a user