EngineHub / EngineHub/CommandHelper
Possible EOFException in SerializedPersistence during recompile
- 主要语言
- 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