EngineHub / EngineHub/CommandHelper

Possible EOFException in SerializedPersistence during recompile

未关闭
#1,341 2 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看
bug
主要语言
Java
星标
128
派生
70
PR 合并指标
30 天内没有已合并 PR

描述

I have a custom /warp command that reads the "warps file" (yaml). I've used it for literally years (2015ish) and today it randomly threw an EOFException when trying to read the file, but the file is intact.

Could not reproduce, subsequent commands, even identical, worked fine. My guess is a race condition that's going to be nigh impossible to solve. Maybe I shouldn't even bother reporting if it's not reproducible?

```
[16:37:01 INFO]: Supermalon issued server command: /warp skycade
[16:37:02 WARN]: java.io.EOFException
[16:37:02 WARN]: at java.base/java.io.ObjectInputStream$PeekInputStream.readFully(ObjectInputStream.java:2926)
[16:37:02 WARN]: at java.base/java.io.ObjectInputStream$BlockDataInputStream.readUnsignedShort(ObjectInputStream.java:3433)
[16:37:02 WARN]: at java.base/java.io.ObjectInputStream$BlockDataInputStream.readUTF(ObjectInputStream.java:3491)
[16:37:02 WARN]: at java.base/java.io.ObjectInputStream.readString(ObjectInputStream.java:2104)
[16:37:02 WARN]: at java.base/java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1726)
[16:37:02 WARN]: at java.base/java.io.ObjectInputStream.readObject(ObjectInputStream.java:514)
[16:37:02 WARN]: at java.base/java.io.ObjectInputStream.readObject(ObjectInputStream.java:472)
[16:37:02 WARN]: at java.base/java.util.HashMap.readObject(HashMap.java:1550)
[16:37:02 WARN]: at java.base/jdk.internal.reflect.GeneratedMethodAccessor9.invoke(Unknown Source)
[16:37:02 WARN]: at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[16:37:02 WARN]: at java.base/java.lang.reflect.Method.invoke(Method.java:568)
[16:37:02 WARN]: at java.base/java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:1231)
[16:37:02 WARN]: at java.base/java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:2434)
[16:37:02 WARN]: at java.base/java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2268)
[16:37:02 WARN]: at java.base/java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1744)
[16:37:02 WARN]: at java.base/java.io.ObjectInputStream.readObject(ObjectInputStream.java:514)
[16:37:02 WARN]: at java.base/java.io.ObjectInputStream.readObject(ObjectInputStream.java:472)
[16:37:02 WARN]: at commandhelper-3.3.5-SNAPSHOT-full-build-293.jar//com.laytonsmith.persistence.SerializedPersistence$1.call(SerializedPersistence.java:10
6)
[16:37:02 WARN]: at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
[16:37:02 WARN]: at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
[16:37:02 WARN]: at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
[16:37:02 WARN]: at java.base/java.lang.Thread.run(Thread.java:833) ```

贡献指南

打开贡献指南

调研方向

从堆栈跟踪中显示的入口点 SerializedPersistence.java:106 开始,检查 /warp 命令在重新编译期间如何读取 warps 文件。调查并发访问是否会产生所报告的 EOFException;当原因被复现或排除,并且由此产生的行为得到验证时,该 issue 即完成。

由索引模型根据 Issue 内容生成。

评估

技术栈
java
领域
backend, database
Issue 类型
缺陷
难度
5/5
预计耗时
一周以上
活跃度
停滞
描述清晰度
需要澄清
新手友好度
25/100

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。