ngbatis
ngbatis copied to clipboard
有没有碰到过StackOverflowError的问题,数据量很小
#32 有提过 看样子不是偶发的问题,方便提供一下报错日志吗,我看看哪里递归太深了
报错日志可能看不出来
org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is java.lang.StackOverflowError
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1082)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:963)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)
at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:517)
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:584)
at io.undertow.servlet.handlers.ServletHandler.handleRequest(ServletHandler.java:74)
at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:129)
at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)
at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)
at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)
at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)
at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
at org.springframework.boot.actuate.metrics.web.servlet.WebMvcMetricsFilter.doFilterInternal(WebMvcMetricsFilter.java:96)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)
at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)
at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)
at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)
at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
at io.undertow.servlet.handlers.FilterHandler.handleRequest(FilterHandler.java:84)
at io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.java:62)
at io.undertow.servlet.handlers.ServletChain$1.handleRequest(ServletChain.java:68)
at io.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest(ServletDispatchingHandler.java:36)
at io.undertow.servlet.handlers.RedirectDirHandler.handleRequest(RedirectDirHandler.java:68)
at io.undertow.servlet.handlers.security.SSLInformationAssociationHandler.handleRequest(SSLInformationAssociationHandler.java:117)
at io.undertow.servlet.handlers.security.ServletAuthenticationCallHandler.handleRequest(ServletAuthenticationCallHandler.java:57)
at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
at io.undertow.security.handlers.AbstractConfidentialityHandler.handleRequest(AbstractConfidentialityHandler.java:46)
at io.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler.handleRequest(ServletConfidentialityConstraintHandler.java:64)
at io.undertow.security.handlers.AuthenticationMechanismsHandler.handleRequest(AuthenticationMechanismsHandler.java:60)
at io.undertow.servlet.handlers.security.CachedAuthenticatedSessionHandler.handleRequest(CachedAuthenticatedSessionHandler.java:77)
at io.undertow.security.handlers.AbstractSecurityContextAssociationHandler.handleRequest(AbstractSecurityContextAssociationHandler.java:43)
at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
at io.undertow.servlet.handlers.SendErrorPageHandler.handleRequest(SendErrorPageHandler.java:52)
at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
at io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:275)
at io.undertow.servlet.handlers.ServletInitialHandler.access$100(ServletInitialHandler.java:79)
at io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:134)
at io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:131)
at io.undertow.servlet.core.ServletRequestContextThreadSetupAction$1.call(ServletRequestContextThreadSetupAction.java:48)
at io.undertow.servlet.core.ContextClassLoaderSetupAction$1.call(ContextClassLoaderSetupAction.java:43)
at io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:255)
at io.undertow.servlet.handlers.ServletInitialHandler.access$000(ServletInitialHandler.java:79)
at io.undertow.servlet.handlers.ServletInitialHandler$1.handleRequest(ServletInitialHandler.java:100)
at io.undertow.server.Connectors.executeRootHandler(Connectors.java:387)
at io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:852)
at org.jboss.threads.ContextClassLoaderSavingRunnable.run(ContextClassLoaderSavingRunnable.java:35)
at org.jboss.threads.EnhancedQueueExecutor.safeRun(EnhancedQueueExecutor.java:2019)
at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.doRunTask(EnhancedQueueExecutor.java:1558)
at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1423)
at org.xnio.XnioWorker$WorkerThreadFactory$1$1.run(XnioWorker.java:1280)
at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.StackOverflowError: null
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:756)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:468)
at java.net.URLClassLoader.access$100(URLClassLoader.java:74)
at java.net.URLClassLoader$1.run(URLClassLoader.java:369)
at java.net.URLClassLoader$1.run(URLClassLoader.java:363)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:362)
at java.lang.ClassLoader.loadClass(ClassLoader.java:418)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:355)
at java.lang.ClassLoader.loadClass(ClassLoader.java:351)
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:756)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:468)
at java.net.URLClassLoader.access$100(URLClassLoader.java:74)
at java.net.URLClassLoader$1.run(URLClassLoader.java:369)
at java.net.URLClassLoader$1.run(URLClassLoader.java:363)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:362)
at java.lang.ClassLoader.loadClass(ClassLoader.java:418)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:355)
at java.lang.ClassLoader.loadClass(ClassLoader.java:351)
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:756)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:468)
at java.net.URLClassLoader.access$100(URLClassLoader.java:74)
at java.net.URLClassLoader$1.run(URLClassLoader.java:369)
at java.net.URLClassLoader$1.run(URLClassLoader.java:363)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:362)
at java.lang.ClassLoader.loadClass(ClassLoader.java:418)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:355)
at java.lang.ClassLoader.loadClass(ClassLoader.java:351)
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:756)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:468)
at java.net.URLClassLoader.access$100(URLClassLoader.java:74)
at java.net.URLClassLoader$1.run(URLClassLoader.java:369)
at java.net.URLClassLoader$1.run(URLClassLoader.java:363)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:362)
at java.lang.ClassLoader.loadClass(ClassLoader.java:418)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:355)
at java.lang.ClassLoader.loadClass(ClassLoader.java:351)
at org.beetl.core.parser.BeetlParser.prog(BeetlParser.java:153)
at org.beetl.core.engine.DefaultTemplateEngine.createProgram(DefaultTemplateEngine.java:59)
at org.beetl.core.engine.FastRuntimeEngine.createProgram(FastRuntimeEngine.java:32)
at org.beetl.core.GroupTemplate.loadTemplate(GroupTemplate.java:520)
at org.beetl.core.GroupTemplate.lambda$getTemplateByLoader$1(GroupTemplate.java:481)
at java.util.concurrent.ConcurrentHashMap.computeIfAbsent(ConcurrentHashMap.java:1660)
at org.beetl.core.impl.cache.DefaultBeetlCache.get(DefaultBeetlCache.java:61)
at org.beetl.core.GroupTemplate.getTemplateByLoader(GroupTemplate.java:481)
at org.beetl.core.GroupTemplate.getTemplate(GroupTemplate.java:455)
at com.bigitom.common.nebulagraph.binding.BeetlTextRender.resolve(BeetlTextRender.java:35)
at com.bigitom.common.nebulagraph.proxy.MapperProxy.invoke(MapperProxy.java:115)
at com.bigitom.common.nebulagraph.proxy.MapperProxy.invoke(MapperProxy.java:161)
at com.bigitom.common.nebulagraph.proxy.MapperProxy.pageSupport(MapperProxy.java:177)
at com.bigitom.common.nebulagraph.proxy.MapperProxy.invoke(MapperProxy.java:80)
at com.bigitom.powermodel.graph.dao.SubGraphMapper$Proxy.getSubgraphFromMore(Unknown Source)
at com.bigitom.powermodel.service.impl.SubGraphServiceImpl.getSubGraph(SubGraphServiceImpl.java:23)
at com.bigitom.powermodel.service.impl.BitRelationshipRuleServiceImpl.selectTopoRelationship(BitRelationshipRuleServiceImpl.java:315)
at com.bigitom.powermodel.controller.BitRelationshipRuleController.selectTopoRelationship(BitRelationshipRuleController.java:142)
at com.bigitom.powermodel.controller.BitRelationshipRuleController$$FastClassBySpringCGLIB$$b9065a63.invoke(
*** java.lang.instrument ASSERTION FAILED ***: "!errorOutstanding" with message transform method call failed at JPLISAgent.c line: 844
很奇怪的错,发生在执行Dao里自定义方法的时候,springboot的测试用例可以通过,但是打包成服务对外暴露接口后,调接口就不行。报的这个错
你先用 设置 -Xss2m 的方式看看能不能解决
看上去像是 antlr4 在解析 nGQL 的模板语法树上出的问题 自定义的 nGQL 很复杂吗
参数设置成 -Xss108k
问题重现了
估计就是因为测试用例运行的 jvm Xss 的值比服务运行时的 Xss 大
如果是这样的话,为了避免服务运行不可预知的问题,建议把测试时的 jvm 参数也设置一下。
这个问题这边再做一下跟进
fetch prop on res_object @for(p in idList){ @if(pLP.last){ "${p}" @} @else{ "${p}", @} @} yield id(vertex) as id | get subgraph with prop 150 steps from $-.id yield vertices as nodes,edges as relationships | yield reduce(nodelist=list[],x in collect($-.nodes) | nodelist + x) as nodes,reduce(nodelist=list[],x in collect($-.relationships) | nodelist + x) as relationships
是这个for循环的问题吗
看着还好,不复杂,for这个用法我也经常用😂,先提高一下Xss吧,如果能解决问题的话
我在循环边的时候,同时去查找 边的左右节点的时候,会导致内存溢出
我在循环边的时候,同时去查找 边的左右节点的时候,会导致内存溢出
数据量大概在什么量级,最后是修改JVM参数吗
改了Xss的值为2m问题解决了
我也遇到了这个问题,在for循环的时候使用任意一个dao的方法都会报StackOverflowError。但是如果用debug启动,则不会报错。
我用VisualVM分别监控了run和debug启动的线程状态,发现run只比debug多了一个线程:Monitor Ctrl-Break,查了一下发现这个是idea在run模式特有的线程,出现stackoverflow很可能跟它有关。 所以如果是用idea遇到这个问题,可以试下debug启动,我修改Xss后用run启动也没用(也可能是我修改的方式不对?)
我也遇到了这个问题,在for循环的时候使用任意一个dao的方法都会报StackOverflowError。但是如果用debug启动,则不会报错。
我用VisualVM分别监控了run和debug启动的线程状态,发现run只比debug多了一个线程:Monitor Ctrl-Break,查了一下发现这个是idea在run模式特有的线程,出现stackoverflow很可能跟它有关。 所以如果是用idea遇到这个问题,可以试下debug启动,我修改Xss后用run启动也没用(也可能是我修改的方式不对?)
-Xss2m 加在jvm那一栏也还是报错吗
我也遇到了这个问题,在for循环的时候使用任意一个dao的方法都会报StackOverflowError。但是如果用debug启动,则不会报错。 我用VisualVM分别监控了run和debug启动的线程状态,发现run只比debug多了一个线程:Monitor Ctrl-Break,查了一下发现这个是idea在run模式特有的线程,出现stackoverflow很可能跟它有关。 所以如果是用idea遇到这个问题,可以试下debug启动,我修改Xss后用run启动也没用(也可能是我修改的方式不对?)
-Xss2m 加在jvm那一栏也还是报错吗
不报错了,之前看来是没改对地方