前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >记录一次由于Jar包冲突导致的神奇问题

记录一次由于Jar包冲突导致的神奇问题

作者头像
zeekling
发布2023-05-23 14:43:37
5940
发布2023-05-23 14:43:37
举报
文章被收录于专栏:浪浪山下那个村

背景

今天同事找我帮忙看一个Flink的问题,现象是前几天还能提交的客户端,就在今天突然提交不了作业了,报错提示大概如下(公司的东西涉密)

代码语言:javascript
复制
Caused by: org.apache.flink.api.common.InvalidProgramException: The LocalStreamEnvironment cannot be used when submitting a program through a client, or running in a TestEnvironment context.
at org.apache.flink.streaming.api.environment.LocalStreamEnvironment.(LocalStreamEnvironment.java:68)
at org.apache.flink.streaming.api.environment.LocalStreamEnvironment.(LocalStreamEnvironment.java:58)
at org.apache.flink.streaming.api.environment.StreamExecutionEnvironment.createLocalEnvironment(StreamExecutionEnvironment.java:1626)
at org.apache.flink.streaming.api.environment.StreamExecutionEnvironment.createLocalEnvironment(StreamExecutionEnvironment.java:1612)

问题定位思路

由于我个人的Flink源码还不是很熟悉,于是拿到这个报错我的第一反应是不是哪个配置项配置错了,于是就问同事,是不是最近有什么变更,得到的答案是没有。

既然这样只能开始定位了,我想着既然配置错了走了LocalStreamEnvironment这个分支,那这个配置项的值或者value里面一定会存在相关的关键字的。于是,我就在Flink的配置文件 flink-con.yml里面找了一遍,发现没有相关配置,那就说明不是配置项的问题(来来回回检查了好几次)。

找不到和哪个配置项有关,那怎么办呢?

没办法只能对着同事给我的堆栈,和我的Flink源码看一下了,于是就开始了找代码的旅程。在找代码的时候发现堆栈里面的代码行数和我代码里面的不一致。我就像我是不是看错代码分支了。经过的我的层层确认,发现我没意拿错代码,于是我就找了我们maven仓库里面的哪个jar包,反编译看了下,结果代码仓库里面的jar反编译的代码行数和我代码仓里面的能对的上。

定位到这儿,就想着是不是环境上的包会不会有问题呢?于是就去Flink客户端目录的lib下面看了一眼,发现有个 flink-streaming-java的包的版本不是我们部门给出去的版本,我就想到flink一般所有的依赖的class都会在 flink-dist这个胖包里面,会不会和外面这个不是我们部门给出去的包有关系呢?

于是就让同事把这个未知的包移动到其他地方去。重试了一把,作业可以正常提交了。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023.05.22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 背景
  • 问题定位思路
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档