Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

arthas 4.0 版本的 脚本命令讨论,是用旧的 as.sh/arthas-boot.jar ,还是用 as4.sh/arthas-boot4.jar #2616

Open
hengyunabc opened this issue Aug 14, 2023 · 6 comments
Labels
Milestone

Comments

@hengyunabc
Copy link
Collaborator

4.0 主要是升级到 jdk8,不再支持 jdk 6/7 。 参考: #2530

  • 沿用原来的名称的好处,自然是少了很多工作量,用户习惯不变。

考虑用 as4.sh 新名字的原因

  • 如果直接用原来的 as.sh/arthas-boot.jar ,有小部分用户可能会遇到不兼容问题。 并且原来的脚本可能会拉到 4.0 版本的 arthas。导致原来能用的机器,突然不能用了。会有一定答疑的成本

  • 如果使用 as4.sh/arthas-boot4.jar 的命名,可以保持完全兼容(maven坐标需要更新)。 但需要用户自己切换。

  • 使用 as4.sh/arthas-boot4.jar 的命名可以让用户明确知道使用的是新版本。

  • 目前 arthas 4 版本和 arthas 3.x 版本匹别不大。但后续会有比较大的变化,如果完全切割之后,兼容性的考虑可以少很多

  • 单独 as4.sh/arthas-boot4.jar 的命名,可以让用户在新版本上多测试一段时间

@hengyunabc hengyunabc added this to the 4.0.0 milestone Aug 14, 2023
@LittePrince
Copy link

那就两个都出呗

@WangJi92
Copy link
Contributor

最好还是保持as.sh & arthas-boot.jar
1、上下游很多内部工具、三方插件默认走 https://arthas.aliyun.com/as.sh or boot.jar 默认更新流程,切换为新版本很多用户无法体验到最新的功能的升级。
2、目前版本的兼容性主要集中在java8以下版本,判断兼容性的代码 集中在 as.sh & boot.jar 启动入口 ,可以将脚本中的兼容性集中处理到 boot.jar
目前代码中维护者一个 最新版本 https://arthas.aliyun.com/api/latest_version ,如果增加一个目前支持Java8以下版本的变量,判断当前环境自动增加参数,走java8以下版本的逻辑。
这里有两个问题

  • 直接下载最新zip包,在当前目录启动,这里要增加一个当前环境和当前目录下的版本是否合格,java6环境,是否是使用java6的包。
  • 历史存量用户兼容性问题,使用最低配版本boot.jar or as.sh java6 环境下使用,自动升级会失败,这种场景只能增加友善提示。
    主要问题还是 java6用户基数有多大,自动升级失败答疑如何解决,是否可以将兼容性冗余在arthas-boot 这个启动类中,启动类对于java版本无感。

增加 --use-3.x 类似这种参数

@hengyunabc
Copy link
Collaborator Author

是否可以考虑做一个反向的工具。

  • 明确 as3.sh/ arthas-boot3.jar 是 arthas 3版本的。如果用户需要使用,则下载使用。
  • as.sh/arthas-boot.jar 默认使用最新的

@aqqwiyth
Copy link

现在我厂就存在一些"上古"项目. 一台机上 jdk678跑的jvm应有尽有都有
如果在attach前判断目标进程 低于jdk6/7 则用3.0的 新老项目无感知

@hengyunabc
Copy link
Collaborator Author

考虑一种兼容性比较好的方案。 arthas-boot 打包为 target jdk6 ,或者是 main 函数是 jdk6 版本的字节码,这样子即使应用使用 jdk 6/7 启动时可以打印出提示。

避免出现用户使用 jdk 6/7 启动 jdk8 jar时出错,又没有提示。

@axyzxyz
Copy link

axyzxyz commented Dec 8, 2023

使用一样的名字, 但是程序里带上版本号,历史的或者没有版本号的就拉老版本的依赖,新的拉对应版本的依赖。拉下来后文件名字什么都一样的

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

5 participants