我试图正确地跟踪一个火花-科特林服务器中的事务使用新的遗迹。这个特定的服务器有密集的协同使用,因为它向其他服务器发出了很多请求。
Newrelic有自定义的工具,允许从事务起源的线程跟踪正在执行的其他线程中的工作。这方面的主要工具是:
因此,要在另一个线程上跟踪工作,我们必须:
我们还知道,一个协同线可以跨多个线程执行,因此要正确跟踪在一个协同线中完成的工作,我们必须将每个线程链接起来。为此,我认为可以像在这个问题中解释的那样使用延续拦截器。当我们想要过期的时候,问题就出现了。假设我们在调用coroutine构建器之前发出一个令牌,并将其设置在coroutine上下文中。然后,我们可以将令牌链接到继续拦截器中,但是我如何知道协同线何时结束才能终止令牌呢?我试过使用"ContinuationInterceptor::releaseInterceptedContinuation()“,但事实证明,它可能在单个协同线中被多次调用,因为它是在每个连续被重新调用之后调用的。
发布于 2020-06-23 22:36:57
我发现Job有一个"invokeOnCompletion“方法,这个方法在协同线完成后由框架调用。我把代币过期了!
https://stackoverflow.com/questions/62521548
复制相似问题