Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

spring-startup-analyzer使用失败 #164

Open
fuzigege opened this issue Jun 3, 2024 · 1 comment
Open

spring-startup-analyzer使用失败 #164

fuzigege opened this issue Jun 3, 2024 · 1 comment
Labels
bug Something isn't working

Comments

@fuzigege
Copy link

fuzigege commented Jun 3, 2024

使用最新的3.1.2版本,按照使用指导配置了spring-startup-analyzer.app.health.check.endpoints,改造了启动脚本,加入了-javaagent:选项。
启动后,报错
Exception in thread "StartupMonitor-Thread" com.alibaba.fastjson.JSONException: toJSONString error
at com.alibaba.fastjson.JSON.toJSONString(JSON.java:1545)
at io.github.linyimin0812.profiler.common.ui.StartupVO.toJSONString(StartupVO.java:55)
at io.github.linyimin0812.profiler.core.container.IocContainer.writeStartupVOToHtml(IocContainer.java:107)
at io.github.linyimin0812.profiler.core.container.IocContainer.stop(IocContainer.java:94)
at io.github.linyimin0812.profiler.core.monitor.StartupMonitor.checkStatus(StartupMonitor.java:44)
at java.lang.Thread.run(Thread.java:750)
Caused by: java.lang.IllegalStateException: InputStream has already been read - do not use InputStreamResource if a stream needs to be read multiple times
at org.springframework.core.io.InputStreamResource.getInputStream(InputStreamResource.java:97)
at com.alibaba.fastjson2.writer.FieldWriterObjectFunc.getFieldValue(FieldWriterObjectFunc.java:36)
at com.alibaba.fastjson2.writer.FieldWriterObject.write(FieldWriterObject.java:222)
at com.alibaba.fastjson2.writer.ObjectWriterAdapter.writeWithFilter(ObjectWriterAdapter.java:475)
at com.alibaba.fastjson2.writer.ObjectWriter8.write(ObjectWriter8.java:73)
at com.alibaba.fastjson2.writer.FieldWriterObject.write(FieldWriterObject.java:354)
at com.alibaba.fastjson2.writer.ObjectWriterAdapter.writeWithFilter(ObjectWriterAdapter.java:475)
at com.alibaba.fastjson2.writer.ObjectWriterAdapter.write(ObjectWriterAdapter.java:295)
at com.alibaba.fastjson2.writer.ObjectWriterArray.write(ObjectWriterArray.java:85)
at com.alibaba.fastjson2.writer.OWG_4_4_MethodInvokeDetail.write(Unknown Source)
at com.alibaba.fastjson2.writer.FieldWriterList.writeList(FieldWriterList.java:253)
at com.alibaba.fastjson2.writer.OWG_3_5_MethodInvokeMetrics.write(Unknown Source)
at com.alibaba.fastjson2.writer.ObjectWriterImplList.write(ObjectWriterImplList.java:371)
at com.alibaba.fastjson.JSON.toJSONString(JSON.java:1537)
... 5 more

可见3.1.2用了fastjson2。
退回去用3.1.1版本,StartupMonitor-Thread线程依然报错:
Exception in thread "StartupMonitor-Thread" java.util.ConcurrentModificationException
at java.util.ArrayList$Itr.checkForComodification(ArrayList.java:911)
at java.util.ArrayList$Itr.next(ArrayList.java:861)
at com.google.gson.internal.bind.CollectionTypeAdapterFactory$Adapter.write(CollectionTypeAdapterFactory.java:96)
at com.google.gson.internal.bind.CollectionTypeAdapterFactory$Adapter.write(CollectionTypeAdapterFactory.java:61)
at com.google.gson.Gson.toJson(Gson.java:842)
at com.google.gson.Gson.toJson(Gson.java:812)
at com.google.gson.Gson.toJson(Gson.java:759)
at com.google.gson.Gson.toJson(Gson.java:736)
at io.github.linyimin0812.profiler.common.ui.StartupVO.toJSONString(StartupVO.java:59)
at io.github.linyimin0812.profiler.core.container.IocContainer.writeStartupVOToHtml(IocContainer.java:107)
at io.github.linyimin0812.profiler.core.container.IocContainer.stop(IocContainer.java:94)
at io.github.linyimin0812.profiler.core.monitor.StartupMonitor.checkStatus(StartupMonitor.java:44)
at java.lang.Thread.run(Thread.java:750)

可见虽然3.1.1版本用的是gson,但是代码存在线程安全性问题,故而ConcurrentModificationException异常。

@fuzigege
Copy link
Author

fuzigege commented Jun 3, 2024

还有:
Exception in thread "StartupMonitor-Thread" java.lang.NullPointerException
at io.github.linyimin0812.profiler.common.ui.StartupVO.lambda$calculateInvokeMetrics$1(StartupVO.java:84)
at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193)
at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1384)
at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:482)
at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:472)
at java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:708)
at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
at java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:566)
at io.github.linyimin0812.profiler.common.ui.StartupVO.calculateInvokeMetrics(StartupVO.java:84)
at io.github.linyimin0812.profiler.common.ui.StartupVO.toJSONString(StartupVO.java:61)
at io.github.linyimin0812.profiler.core.container.IocContainer.writeStartupVOToHtml(IocContainer.java:107)
at io.github.linyimin0812.profiler.core.container.IocContainer.stop(IocContainer.java:94)
at io.github.linyimin0812.profiler.core.monitor.StartupMonitor.checkStatus(StartupMonitor.java:44)
at java.lang.Thread.run(Thread.java:750)

@linyimin0812 linyimin0812 added the bug Something isn't working label Jun 4, 2024
linyimin0812 added a commit that referenced this issue Jun 4, 2024

Verified

This commit was signed with the committer’s verified signature.
stevehipwell Steve Hipwell
…VO_serialization_exception_1

fix: startupVO serialization exception #164 #155
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

2 participants