Jaeger активный диапазон становится нулевым - PullRequest
0 голосов
/ 17 июня 2019

Я создаю приложение JavaFX и пробую Jaeger. По какой-то причине мой «основной» диапазон становится нулевым, поэтому все мои подспаны переходят в jaeger как span без корня. Вот мой основной класс

class TradingPlatform extends Application {

    static val log = LogManager.getLogger()
    @Accessors static val tracer = SpanUtil.getYobiTracer("trading-platform")
    @Accessors static var Span span

    override start(Stage primaryStage) throws Exception {
        Thread.sleep(1000)
        span = tracer.buildSpan('''«System.getProperty("user.name")»@«getPCName()»''').start()
        try (val scope = tracer.activateSpan(span)) {
            log.info("Starting "+Thread.currentThread().hashCode())
            val resolution = getResolution()
            val scene = new Scene(new Workbench(), resolution.get(0), resolution.get(1))
            primaryStage.setScene(scene)
            primaryStage.setOnCloseRequest[
                span.finish()
                tracer.close()
                Thread.sleep(1000)
                System.exit(0)
            ]
            Runtime.getRuntime().addShutdownHook(new Thread [
                span.finish()
                tracer.close()
                Thread.sleep(1000)
            ])
            primaryStage.show()
        } catch (Exception e) {
            span.setTag("error", "true");
            span.log(ExceptionUtils.getStackTrace(e))
        }
    }

    def static void main(String[] args) {
        launch(args)
    }

}

Вот некоторые фрагменты из моего класса Workbench

class Workbench extends StackPane {

    new() {
        componentsMap = new HashMap()
        println("Constructor1 "+Thread.currentThread().getName()+" "+TradingPlatform.getTracer().activeSpan())
        span(TradingPlatform.getTracer(), "parseGroovyComponents") [
            val components = groovyComponents.collect(Collectors.toList())
            components.toObservable().subscribeOn(Schedulers.io()).map [ path |
                val supplier = [
                    new GroovyNode(root.relativize(path).toString().replace(".groovy", ""), Files.readAllLines(path).join("\n"))
                ] as Supplier<DockNode>
                root.relativize(path).toString() -> supplier
            ].toMap([getKey()], [getValue()]).subscribe [
                componentsMap.putAll(it)
            ]
        ]
        println("Constructor2 "+Thread.currentThread().getName()+" "+TradingPlatform.getTracer().activeSpan())
    }

Эта часть в порядке и входит в Jaeger без проблем. Но тогда у меня есть этот метод, который вызывается, когда пользователь ищет что-то

    def openSearchedItem() {
        println("openSearchedItem "+Thread.currentThread().getName()+" "+TradingPlatform.getTracer().activeSpan())
        span(TradingPlatform.getTracer(), "openSearchedItem") [
            try {
                val text = search.getText()
                setTag("component", text)
                search.setText("")
                getChildren().remove(searchContainer)
                val name = text + ".groovy"
                val component = componentsMap.get(name)
                Objects.requireNonNull(component, '''You tried to open a component that doesn't exist: «name». These exist: «componentsMap.keySet()»''')
                recentSearches.addSearch(text)
                component.get().dock(dockPane, DockPos.LEFT)
            } catch(Exception e) {
                log(ExceptionUtils.getStackTrace(e))
                throw e
            }
        ]
    }

Вот мои логи

2019-06-17 09:50:16 INFO  Configuration:248 - Initialized tracer=JaegerTracer(version=Java-0.35.4, serviceName=trading-platform, reporter=CompositeReporter(reporters=[RemoteReporter(sender=UdpSender(), closeEnqueueTimeout=1000), LoggingReporter(logger=org.slf4j.impl.Log4jLoggerAdapter(io.jaegertracing.internal.reporters.LoggingReporter))]), sampler=ConstSampler(decision=true, tags={sampler.type=const, sampler.param=true}), tags={hostname=northpool2, jaeger.version=Java-0.35.4, ip=127.0.1.1}, zipkinSharedRpcSpan=false, expandExceptionLogs=false, useTraceId128Bit=false)
2019-06-17 09:50:17,742 [INFO  ] TradingPlatform 54 │ Starting 1663469709
Constructor1 JavaFX Application Thread 7e9a31b36e7592ce:7e9a31b36e7592ce:0:1 - floris@northpool2
2019-06-17 09:50:18 INFO  LoggingReporter:43 - Span reported: 7e9a31b36e7592ce:eb8b1d493abe96ff:7e9a31b36e7592ce:1 - parseGroovyComponents
Constructor2 JavaFX Application Thread 7e9a31b36e7592ce:7e9a31b36e7592ce:0:1 - floris@northpool2

Тогда, когда я что-то ищу

openSearchedItem JavaFX Application Thread null
2019-06-17 09:50:28 INFO  LoggingReporter:43 - Span reported: f7bc7b08ac7363c0:f7bc7b08ac7363c0:0:1 - openSearchedItem

А потом, когда я закрываю приложение

2019-06-17 09:50:32 INFO  LoggingReporter:43 - Span reported: 7e9a31b36e7592ce:7e9a31b36e7592ce:0:1 - floris@northpool2

Это то, что появляется в егере enter image description here Как я могу включить мои parseGroovyComponents в мой floris @ northpool2 span?

...