Samarium150 / mirai-console-drift-bottle

mirai-console的漂流瓶插件
GNU Affero General Public License v3.0
32 stars 6 forks source link

使用mirai-console自带的`YamlKt`在数据量过大时会导致可能的反序列化错误 #22

Closed LaoLittle closed 2 years ago

LaoLittle commented 2 years ago

这应该是yamlkt的一个bug,不过我觉得尽可能更改其他存储方式更好,比如Json

LaoLittle commented 2 years ago
2022-06-28 14:50:27 E/Drift Bottle: net.mamoe.yamlkt.YamlDecodingException: Top-level decoder: deserializing nested class for 'contents' in 'Sea'
...eID=\\\"35\\\" templateID=\\\"1\
                                  ^ at line 123263, column 420

net.mamoe.yamlkt.YamlDecodingException: Top-level decoder: deserializing nested class for 'contents' in 'Sea'
...eID=\\\"35\\\" templateID=\\\"1\
                                  ^ at line 123263, column 420

        at net.mamoe.yamlkt.internal.YamlUtils__ContextualExceptionKt.contextualDecodingException(ContextualException.kt:154)
        at net.mamoe.yamlkt.internal.YamlUtils.contextualDecodingException(Unknown Source)
        at net.mamoe.yamlkt.internal.YamlDecoder$AbstractDecoder.decodeSerializableElement(YamlDecoder.kt:181)
        at kotlinx.serialization.encoding.CompositeDecoder$DefaultImpls.decodeSerializableElement$default(Decoding.kt:535)
        at net.mamoe.mirai.console.internal.data.PluginDataImpl$updaterSerializer$1.deserialize(PluginDataImpl.kt:85)
        at net.mamoe.mirai.console.internal.data.PluginDataImpl$updaterSerializer$1.deserialize(PluginDataImpl.kt:47)
        at net.mamoe.yamlkt.Yaml.decodeFromString(Yaml.kt:162)
        at net.mamoe.mirai.console.internal.data.MultiFilePluginDataStorageImpl.load(MultiFilePluginDataStorageImpl.kt:40)
        at net.mamoe.mirai.console.plugin.jvm.AbstractJvmPlugin.reloadPluginData(AbstractJvmPlugin.kt:50)
        at mirai-console-drift-bottle-1.9.0.mirai.jar//io.github.samarium150.mirai.plugin.driftbottle.MiraiConsoleDriftBottle.init(MiraiConsoleDriftBottle.kt:59)
        at mirai-console-drift-bottle-1.9.0.mirai.jar//io.github.samarium150.mirai.plugin.driftbottle.MiraiConsoleDriftBottle.onEnable(MiraiConsoleDriftBottle.kt:72)
        at net.mamoe.mirai.console.internal.plugin.JvmPluginInternal.internalOnEnable$mirai_console(JvmPluginInternal.kt:119)
        at net.mamoe.mirai.console.internal.plugin.BuiltInJvmPluginLoaderImpl.enable(BuiltInJvmPluginLoaderImpl.kt:262)
        at net.mamoe.mirai.console.internal.plugin.BuiltInJvmPluginLoaderImpl.enable(BuiltInJvmPluginLoaderImpl.kt:34)
        at net.mamoe.mirai.console.plugin.jvm.JvmPluginLoader$BuiltIn.enable(JvmPluginLoader.kt)
        at net.mamoe.mirai.console.plugin.jvm.JvmPluginLoader$BuiltIn.enable(JvmPluginLoader.kt:50)
        at net.mamoe.mirai.console.plugin.PluginManager.enablePlugin(PluginManager.kt:173)
        at net.mamoe.mirai.console.internal.plugin.PluginManagerImpl.enableAllLoadedPlugins$mirai_console(PluginManagerImpl.kt:183)
        at net.mamoe.mirai.console.internal.MiraiConsoleImplementationBridge.doStart$mirai_console(MiraiConsoleImplementationBridge.kt:231)
        at net.mamoe.mirai.console.MiraiConsoleImplementation$Companion.start(MiraiConsoleImplementation.kt:444)
        at net.mamoe.mirai.console.terminal.MiraiConsoleTerminalLoader.startAsDaemon(MiraiConsoleTerminalLoader.kt:159)
        at net.mamoe.mirai.console.terminal.MiraiConsoleTerminalLoader.startAsDaemon$default(MiraiConsoleTerminalLoader.kt:158)
        at net.mamoe.mirai.console.terminal.MiraiConsoleTerminalLoader.main(MiraiConsoleTerminalLoader.kt:46)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.base/java.lang.reflect.Method.invoke(Method.java:568)
        at org.itxtech.mcl.Utility.bootJars(Utility.java:89)
        at org.itxtech.mcl.Utility.bootJars(Utility.java:79)
        at org.itxtech.mcl.Utility.bootMirai(Utility.java:101)
        at org.itxtech.mcl.module.builtin.Boot.boot(Boot.java:109)
        at org.itxtech.mcl.module.ModuleManager.phaseBoot(ModuleManager.java:148)
        at org.itxtech.mcl.Loader.lambda$start$4(Loader.java:189)
        at org.itxtech.mcl.Loader.tryCatching(Loader.java:146)
        at org.itxtech.mcl.Loader.start(Loader.java:189)
        at org.itxtech.mcl.Loader.main(Loader.java:79)
Caused by: net.mamoe.yamlkt.YamlDecodingException: Top-level decoder: deserializing nested class for '12328' in 'kotlin.collections.ArrayList'
...eID=\\\"35\\\" templateID=\\\"1\
                                  ^ at line 123263, column 420

        at net.mamoe.yamlkt.internal.YamlUtils__ContextualExceptionKt.contextualDecodingException(ContextualException.kt:154)
        at net.mamoe.yamlkt.internal.YamlUtils.contextualDecodingException(Unknown Source)
        at net.mamoe.yamlkt.internal.YamlDecoder$AbstractDecoder.decodeSerializableElement(YamlDecoder.kt:181)
        at kotlinx.serialization.encoding.CompositeDecoder$DefaultImpls.decodeSerializableElement$default(Decoding.kt:535)
        at kotlinx.serialization.internal.ListLikeSerializer.readElement(CollectionSerializers.kt:80)
        at kotlinx.serialization.internal.AbstractCollectionSerializer.readElement$default(CollectionSerializers.kt:51)
        at kotlinx.serialization.internal.AbstractCollectionSerializer.merge(CollectionSerializers.kt:36)
        at kotlinx.serialization.internal.AbstractCollectionSerializer.deserialize(CollectionSerializers.kt:43)
        at net.mamoe.mirai.console.data.SerializableValue$Companion$serializableValueWith$$inlined$map$1.deserialize(serializerHelper.kt:170)
        at net.mamoe.yamlkt.internal.YamlDecoder$AbstractDecoder.decodeSerializableElement(YamlDecoder.kt:179)
        ... 33 more
Caused by: net.mamoe.yamlkt.YamlDecodingException: Top-level decoder: deserializing nested class for 'content' in 'io.github.samarium150.mirai.plugin.driftbottle.data.Item'
...eID=\\\"35\\\" templateID=\\\"1\
                                  ^ at line 123263, column 420

        at net.mamoe.yamlkt.internal.YamlUtils__ContextualExceptionKt.contextualDecodingException(ContextualException.kt:154)
        at net.mamoe.yamlkt.internal.YamlUtils.contextualDecodingException(Unknown Source)
        at net.mamoe.yamlkt.internal.YamlDecoder$AbstractDecoder.decodeNullableSerializableElement(YamlDecoder.kt:170)
        at mirai-console-drift-bottle-1.9.0.mirai.jar//io.github.samarium150.mirai.plugin.driftbottle.data.Item$$serializer.deserialize(Item.kt:31)
        at mirai-console-drift-bottle-1.9.0.mirai.jar//io.github.samarium150.mirai.plugin.driftbottle.data.Item$$serializer.deserialize(Item.kt:31)
        at net.mamoe.yamlkt.internal.YamlDecoder$AbstractDecoder.decodeSerializableElement(YamlDecoder.kt:179)
        ... 40 more
Caused by: net.mamoe.yamlkt.YamlDecodingException: Unexpected EOF
...eID=\\\"35\\\" templateID=\\\"1\
                                  ^ at line 123263, column 420

        at net.mamoe.yamlkt.internal.YamlUtils__ContextualExceptionKt.contextualDecodingException(ContextualException.kt:154)
        at net.mamoe.yamlkt.internal.YamlUtils.contextualDecodingException(Unknown Source)
        at net.mamoe.yamlkt.internal.YamlUtils__ContextualExceptionKt.contextualDecodingException$default(ContextualException.kt:128)
        at net.mamoe.yamlkt.internal.YamlUtils.contextualDecodingException$default(Unknown Source)
        at net.mamoe.yamlkt.internal.YamlUtils__EscapeKt.readDoubleQuotedString(Escape.kt:545)
        at net.mamoe.yamlkt.internal.YamlUtils.readDoubleQuotedString(Unknown Source)
        at net.mamoe.yamlkt.internal.TokenStream.prepareStringAndNextToken(TokenStream.kt:304)
        at net.mamoe.yamlkt.internal.TokenStream.nextToken(TokenStream.kt:282)
        at net.mamoe.yamlkt.internal.YamlDecoder$AbstractDecoder.nextToken(YamlDecoder.kt:98)
        at net.mamoe.yamlkt.internal.YamlDecoder$BlockClassDecoder.decodeNotNullMark(YamlDecoder.kt:245)
        at net.mamoe.yamlkt.internal.YamlDecoder$AbstractDecoder.decodeNullableSerializableElement(YamlDecoder.kt:164)
        ... 43 more
cssxsh commented 2 years ago

复现用的数据呢

LaoLittle commented 2 years ago

复现用的数据呢

没啦