sermant-io / sermant Goto Github PK
View Code? Open in Web Editor NEWA Cloud-Native Proxyless Service Mesh based on Java Bytecode Enhancement Technology
Home Page: https://sermant.io/
License: Apache License 2.0
A Cloud-Native Proxyless Service Mesh based on Java Bytecode Enhancement Technology
Home Page: https://sermant.io/
License: Apache License 2.0
服务监控和JVM监控特性开发
全链路压测代码新增
【需求描述】更新修改netty客户端发送消息方式
【需求描述】 示例工程需要补充开发插件时常见的开发方式和常用功能
【解决方案】 重构示例工程,补充开发插件时常见的开发方式和常用功能
【其他信息】 不涉及
【bug描述】 统一配置中,使用同一个键解释其值时发生死循环
【复现步骤】 在配置文件中添加形如 config.key=prefix.${config.key}.suffix 的配置,且需要读取时发生
【期望结果】 如果用户使用同一个键解释其值,应当抛出异常中断程序
【环境信息】 HuaweiJDK1.8
【其他信息】 此种配置方式正常来说都是不允许发生的,应当抛出异常警告用户,而不是等到栈溢出
核心服务加载、初始化、关闭相关特性开发
【bug描述】 启动类增强模板类的主要流程无法执行
【复现步骤】 尝试增强启动类的静态或示例方法
【期望结果】 能正常增强启动类的静态或示例方法
【环境信息】 HuaweiJDK1.8
【其他信息】 对Advice.OnDefaultValue的注释理解错误导致
应急演练功能合入
【bug描述】 启动类加载器加载的类无法被增强
【复现步骤】 尝试增强启动类加载器加载的类
【期望结果】 启动类加载器加载的类可以被增强
【环境信息】 HuaweiJDK1.8
【其他信息】 无
【需求描述】 应用调用支持灰度调用,可根据用户配置的标签规则进行请求路由
【其他】目前合入包含路由Server功能与dubbo框架,不包含Spring
【需求描述】开发快速部署shell脚本
【需求描述】 项目结构演进,core、ext和boostrap模块整合
【解决方案】 将core、ext和boostrap模块整合为core,将core和premain的代码进行整理
【其他信息】 无
【需求描述】 samples模块需要补充readme文件,以规范后续开发者的开发工作
【解决方案】 补充readme文件
【其他信息】 不涉及
支持各种中间件SDK压测标记识别和传递
【需求描述】 类隔离机制调整
【解决方案】 使插件和服务分离,服务使用自定义类加载器加载,实现插件功能在类加载器级别的隔离
【其他信息】 无
添加流量录制回放组件
【bug描述】 修复插件配置文件不存在时获取到的插件配置对象为空的问题
【复现步骤】不提供插件配置文件,但需要使用插件配置对象的默认属性
【期望结果】 不提供插件配置文件时,可以正常使用插件配置对象的默认属性
【环境信息】 HuaweiJDK 1.8
【其他信息】 无
【bug描述】com.huawei.apm.premain.Transformer#getMethodsToBeEnhanced缺少类型判断
【复现步骤】同一个被增强类中存在构造函数、实例方法和静态方法中任意两种增强点的情况下,如果增强时尝试匹配任意构造函数、任意实例方法或任意静态方法,则出现类型转换错误的问题。
【期望结果】同一个被增强类中存在构造函数、实例方法和静态方法中任意两种增强点的情况下,如果增强时尝试匹配任意构造函数、任意实例方法或任意静态方法,能正常增强
【环境信息】测试环境windows本地测试,jdk版本为HuaweiJDK1.8
【其他信息】bug分析如下:
1. bug出现原因:究其原因,是因为构建builder时,使用增强点的matcher来匹配被增强类的方法,但是没有判断类型,如果存在同名的实例方法和静态方法(namedMatch)或使用任意匹配(any),就会发生错误匹配。
2. bug修复方式:在com.huawei.apm.premain.Transformer#getMethodsToBeEnhanced方法中,增加类型判断
【需求描述】 启动类增强的转换器和模板类的调用逻辑需要整理
【解决方案】 整理启动类增强的转换器和模板类
【其他信息】 无
【bug描述】 1.readme文件中超链接失效;2.主要打包流程中不涉及清理和打产品包;3.打包过程中工程的上级目录会出现错误的文件
【复现步骤】 1.点击readme文件超链接;2.3.不特定设置profile的情况下执行打包命令
【期望结果】 1.超链接生效;2.默认情况下执行清理和打产品包;3.打包过程中不产生多余文件
【环境信息】 huawei jdk1.8
【其他信息】 不涉及
【需求描述】针对需要抛出异常至业务层的场景,提供业务异常入口
【其他】针对拦截器的execBefore方法增加业务异常处理
【bug描述】 工程结构改变后,后端模块和流控部分的包名和模块名没有调整,流控后端的输出没有定制化调整,后端模块使用shade插件打包而不是spring打包插件打包
【复现步骤】 执行后端的打包(-Pbackend)
【期望结果】 后端模块和流控部分包名和模块名与整体项目保持一致,流控后端定制化输出到backends目录,javamesh后端使用spring插件打包
【环境信息】 HuaweiJDK1.8
【其他信息】 不涉及
【bug描述】 com.huawei.apm.premain.Transformer#enhanceConstructor中Builder的匹配错误
【复现步骤】 apm(非luban)的方式尝试增强构造函数,结果无法增强
【期望结果】 apm(非luban)的方式尝试增强构造函数,可正常增强
【环境信息】 本地windows测试,JDK版本为HuaweiJDK1.8
【其他信息】 bug分析如下:
1. bug出现原因:com.huawei.apm.premain.Transformer#enhanceConstructor方法中错误地调用net.bytebuddy.dynamic.DynamicType.Builder#method,而不是net.bytebuddy.dynamic.DynamicType.Builder#constructor
2. bug修复方式:将com.huawei.apm.premain.Transformer#enhanceConstructor方法中对net.bytebuddy.dynamic.DynamicType.Builder#method方法的调用修改为net.bytebuddy.dynamic.DynamicType.Builder#constructor
【bug描述】 多次调用method导致增强覆盖
【复现步骤】 编写一个luban插件和新插件,同时增强同一个方法,新插件的增强会吧luban的增强覆盖
【期望结果】 两种增强可以共存
【环境信息】 HuaweiJDK1.8
【其他信息】 无
【bug描述】 兼容luban插件进行构造函数匹配时,没有进行参数类型校验
【复现步骤】 编写一个luban的插件,对拥有复数个构造函数的类中的一个构造函数进行增强,结果所有构造函数都增强了
【期望结果】 luban插件中,对拥有复数个构造函数的类中的一个构造函数进行增强时,仅相应的构造函数被增强,其他无影响
【环境信息】 HuaweiJDK1.8
【其他信息】 无
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.