spring-startup-analyzer icon indicating copy to clipboard operation
spring-startup-analyzer copied to clipboard

spring-startup-analyzer使用失败

Open fuzigege opened this issue 8 months ago • 1 comments

使用最新的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 avatar Jun 03 '24 03:06 fuzigege