使用IDEA开发时LoggerServer启动报非法数据包错误,环境及代码一致但同事无此问题求助
刚碰到过一模一样的问题,结合我当时的排查过程,给你几个靠谱的方向:
1. 优先检查端口是否被占用
这个错误的核心是Netty解码器收到了不符合DolphinScheduler协议的数据包,最常见的原因就是LoggerServer监听的端口被其他程序占用,导致启动后收到了其他服务的非法数据包。
- 查看端口占用情况:
- Linux/Mac:执行
lsof -i :<你的LoggerServer端口>(默认端口可查看配置里的remote.port,通常是5678) - Windows:执行
netstat -ano | findstr <你的LoggerServer端口>
- Linux/Mac:执行
- 解决方式:要么杀掉占用端口的进程,要么修改LoggerServer配置文件,换一个未被占用的端口。
2. 核对配置文件的一致性
虽然代码是从Git同步的,但本地配置文件可能被私下修改过:
- 检查
application.properties或dolphinscheduler-remote.properties中是否有自定义的magic配置项 - 对比同事的配置文件,确保
org.apache.dolphinscheduler.remote.utils.RemotingConstant中的MAGIC值一致(DolphinScheduler默认magic值为固定十六进制值,比如0xBF,若你的配置被篡改就会触发校验失败)
3. 排除网络环境干扰
有时候本地防火墙、代理软件或者公司网络设备会篡改/转发错误数据包到监听端口:
- 临时关闭本地防火墙,再启动LoggerServer测试
- 若使用了代理,先关闭代理再尝试启动
- 可以在离线环境下启动,排除外部网络的干扰
4. 确保依赖完全一致
即使JDK和Maven版本接近,也可能存在本地依赖库的细微差异:
- 清空本地Maven仓库的DolphinScheduler相关依赖:删除
~/.m2/repository/org/apache/dolphinscheduler目录 - 重新拉取并构建项目:执行
mvn clean install -U,强制更新所有依赖
附上你提供的错误信息供参考:
org.apache.dolphinscheduler.remote.handler.NettyServerHandler - exceptionCaught : java.lang.IllegalArgumentException: illegal packet [magic]80
io.netty.handler.codec.DecoderException: java.lang.IllegalArgumentException: illegal packet [magic]80
at io.netty.handler.codec.ReplayingDecoder.callDecode(ReplayingDecoder.java:421)
at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:276)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365)
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357)
at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365)
at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919)
at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:166)
at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:714)
at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:650)
at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:576)
at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:493)
at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:989)
at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.IllegalArgumentException: illegal packet [magic]80
at org.apache.dolphinscheduler.remote.codec.NettyDecoder.checkMagic(NettyDecoder.java:125)
at org.apache.dolphinscheduler.remote.codec.NettyDecoder.decode(NettyDecoder.java:57)
at io.netty.handler.codec.ByteToMessageDecoder.decodeRemovalReentryProtection(ByteToMessageDecoder.java:501)
at io.netty.handler.codec.ReplayingDecoder.callDecode(ReplayingDecoder.java:366)
... 16 common frames omitted
内容的提问来源于stack exchange,提问作者MagiskBoy

