[alibaba/druid]github集成构建的相关缺陷需要修复

2023-12-14 590 views
5
  1. github构建脚本配置Ubuntu版与github测试环境不一致,github的测试环境应该又升级了,导致构建action持续等待;
  2. 主pom默认modules包含jdk8不支持的druid-spring-boot-3-starter,github构建脚本也未区分jdk8和17;
  3. DruidDataSource死循环处理逻辑导致DruidDataSourceTest_maxWait单元测试hang掉;
  4. 代码有多余空行不符合checkstyle要求导致构建失败;
  5. pom缺少junit依赖导致druid-spring-boot-starter单元测试无法执行;
  6. 去除hive-jdbc依赖,无论main还是test测试均没有用到hive-jdbc,jdk9+就没有hive-jdbc依赖的tools.jar了(目前hive只能用在jdk8上)。

回答

4

另外,提两点建议:

  1. 规范一下代码提交范围,属于开发环境IDE专有文件,比如eclipse的.gitignore这样的文件就别提交了。
  2. 统一格式,现在的代码换行既有windows格式的,也有linux风格的,和历史版本比较差异时会提示所有行都发生了变化,不方便维护。还有代码里夹杂tab字符的,多数java开源软件的checkstyle都不允许出现tab,通常都要求开发环境自动替换成4位空格。建议借鉴一下dubbo社区的实践,先checkstyle规范代码提交格式,等时机成熟了,再用spotless-maven-plugin插件对全部代码重新做一遍规范格式化,代码提交格式不符合要求时拒绝合并。
1

还有一个感觉奇怪的问题,单元测试都跑不过的代码,为什么要合并到master

2

查了一下hive的代码org.apache.hadoop.hive.ql.session#SessionState ,最新代码依然只能用在jdk8环境,jdk9+以上的环境都用不了,因为下面这行设置parentLoader的代码在jdk9+版本上都会抛ClassCastException。

    protected ClassLoader parentLoader;
    ... ...
    parentLoader = SessionState.class.getClassLoader();

因此,只能在jdk8下支持hive。

0

代码格式通过mvn validate来校验检查。 一次不要提交太多代码,分批等我核实一个合并之后,再提交另外一个。 我先修复一下单测卡死的问题

4

这个修复并没有解决活跃连接超过max时再获取连接cpu占满100%的问题,不能直接continue还要加wait降低cpu占用率,有了wait还需要重新计算超时,综合看这么折腾,不如直接回退3月前那个commit。

2

借楼插一句,看 pom 文件现在最低要求是 jdk8 吧,代码里还有很多老旧 jdk 语法写的代码,也可以优化一波到 jdk8 的语法。

7

等验证确认功能稳定了来优化一些陈旧的写法