Giter Club home page Giter Club logo

nepxion / discoveryagent Goto Github PK

View Code? Open in Web Editor NEW
53.0 5.0 29.0 114 KB

☀️ Nepxion Discovery Agent is a java agent to resolve loss of ThreadLocal in cross-thread scenario, such as Spring Async、Hystrix Thread、Runnable、Callable、Single Thread、Thread Pool、MDC 异步跨线程Agent

Home Page: http://www.nepxion.com

License: Apache License 2.0

Java 98.85% Batchfile 1.15%
java-agent async cross-thread thread-pool spring-async hystrix single-thread

discoveryagent's People

Contributors

haojunren avatar zifeihan avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

discoveryagent's Issues

ThreadLocalHook注册bug

ThreadPlugin中调用了所有ThreadLocalHook接口(需注册)中的create、before等方法, ThreadLocalHook的注册是在插件(比如DiscoveryServicePlugin)匹配到并执行对应的TransformCallback的doInTransform方法.
当项目启动时发起的第一个灰度请求是异步时

image

image
此时Task构造器先被增强,然而因为Task构造时RestStrategyContext尚未加载, 所以DiscoveryServicePlugin对应的ThreadLocalHook还未注册,Object[] objects = ThreadLocalCopier.create(), 此行代码objects结果为空, 灰度结果会异常.
然后随着灰度代码的执行, 会加载到RestStrategyContext, 然后会执行DiscoveryServicePlugin的TransformCallback的doInTransform方法, 对应的ThreadLocalHook将被注册.
下次异步调用时灰度结果正常.

Collections.emptyList()使用不当问题

代码地址:com/nepxion/discovery/agent/plugin/thread/ThreadPlugin.java:55 会出现问题
image

List<String> basePackages = StringUtil.tokenizeToStringList(baseThreadScanPackages, ThreadConstant.THREAD_SCAN_PACKAGES_DELIMITERS); List<String> customPackages = StringUtil.tokenizeToStringList(threadScanPackages, ThreadConstant.THREAD_SCAN_PACKAGES_DELIMITERS); basePackages.addAll(customPackages);
若是basePackages为emptyList,则后面的不能再用emptyList添加东西了 basePackages.addAll(customPackages);
image
这行可能是一个失误吧,建议删除这行代码。

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.