Skip to content

Spanner, LeakedSessionException is being created in every query in com.google.cloud:spring-cloud-gcp-starter-data-spanner:6.25.5 version #2266

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

Closed
sravan-00 opened this issue Feb 7, 2023 · 0 comments · Fixed by #2350
Assignees
Labels
api: spanner Issues related to the googleapis/java-spanner API.

Comments

@sravan-00
Copy link

sravan-00 commented Feb 7, 2023

Environment details

  1. API: Spanner
  2. OS type and version:
  3. Java version: 11
  4. version(s): com.google.cloud:spring-cloud-gcp-starter-data-spanner:6.25.5

Steps to reproduce

  1. Create an Spring boot application that read from spanner to Database with the dependencies in the example Repo
  2. Application created to reproduce LeakedSessionException https://github.com/sravan-00/LeakedSessionException

Code example

https://github.com/sravan-00/LeakedSessionException

Stack trace

result = {StackTraceElement[91]@12497} 
 0 = {StackTraceElement@12520} "com.google.cloud.spanner.SessionPool$PooledSessionFuture.markCheckedOut(SessionPool.java:1104)"
 1 = {StackTraceElement@12521} "com.google.cloud.spanner.SessionPool$PooledSessionFuture.access$4800(SessionPool.java:1085)"
 2 = {StackTraceElement@12522} "com.google.cloud.spanner.SessionPool.checkoutSession(SessionPool.java:2135)"
 3 = {StackTraceElement@12523} "com.google.cloud.spanner.SessionPool.getSession(SessionPool.java:2116)"
 4 = {StackTraceElement@12524} "com.google.cloud.spanner.DatabaseClientImpl.getSession(DatabaseClientImpl.java:53)"
 5 = {StackTraceElement@12525} "com.google.cloud.spanner.DatabaseClientImpl.singleUse(DatabaseClientImpl.java:106)"
 6 = {StackTraceElement@12526} "com.google.cloud.spring.data.spanner.core.SpannerTemplate.doWithOrWithoutTransactionContext(SpannerTemplate.java:724)"
 7 = {StackTraceElement@12527} "com.google.cloud.spring.data.spanner.core.SpannerTemplate.getReadContext(SpannerTemplate.java:115)"
 8 = {StackTraceElement@12528} "com.google.cloud.spring.data.spanner.core.SpannerTemplate.executeRead(SpannerTemplate.java:568)"
 9 = {StackTraceElement@12529} "com.google.cloud.spring.data.spanner.core.SpannerTemplate.read(SpannerTemplate.java:213)"
 10 = {StackTraceElement@12530} "com.google.cloud.spring.data.spanner.core.SpannerTemplate.read(SpannerTemplate.java:188)"
 11 = {StackTraceElement@12531} "com.google.cloud.spring.data.spanner.core.SpannerTemplate.read(SpannerTemplate.java:163)"
 12 = {StackTraceElement@12532} "com.google.cloud.spring.data.spanner.repository.support.SimpleSpannerRepository.findById(SimpleSpannerRepository.java:95)"
 13 = {StackTraceElement@12533} "java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)"
 14 = {StackTraceElement@12534} "java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)"
 15 = {StackTraceElement@12535} "java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)"
 16 = {StackTraceElement@12536} "java.base/java.lang.reflect.Method.invoke(Method.java:566)"
 17 = {StackTraceElement@12537} "org.springframework.data.repository.core.support.RepositoryMethodInvoker$RepositoryFragmentMethodInvoker.lambda$new$0(RepositoryMethodInvoker.java:289)"
 18 = {StackTraceElement@12538} "org.springframework.data.repository.core.support.RepositoryMethodInvoker.doInvoke(RepositoryMethodInvoker.java:137)"
 19 = {StackTraceElement@12539} "org.springframework.data.repository.core.support.RepositoryMethodInvoker.invoke(RepositoryMethodInvoker.java:121)"
 20 = {StackTraceElement@12540} "org.springframework.data.repository.core.support.RepositoryComposition$RepositoryFragments.invoke(RepositoryComposition.java:529)"
 21 = {StackTraceElement@12541} "org.springframework.data.repository.core.support.RepositoryComposition.invoke(RepositoryComposition.java:285)"
 22 = {StackTraceElement@12542} "org.springframework.data.repository.core.support.RepositoryFactorySupport$ImplementationMethodExecutionInterceptor.invoke(RepositoryFactorySupport.java:639)"
 23 = {StackTraceElement@12543} "org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)"
 24 = {StackTraceElement@12544} "org.springframework.data.repository.core.support.QueryExecutorMethodInterceptor.doInvoke(QueryExecutorMethodInterceptor.java:163)"
 25 = {StackTraceElement@12545} "org.springframework.data.repository.core.support.QueryExecutorMethodInterceptor.invoke(QueryExecutorMethodInterceptor.java:138)"
 26 = {StackTraceElement@12546} "org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)"
 27 = {StackTraceElement@12547} "org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:97)"
 28 = {StackTraceElement@12548} "org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)"
 29 = {StackTraceElement@12549} "org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:215)"
 30 = {StackTraceElement@12550} "com.sun.proxy.$Proxy126.findById(Unknown Source)"
 31 = {StackTraceElement@12551} "com.example.demo.controller.DemoController.getSingerName(DemoController.java:21)"
 32 = {StackTraceElement@12552} "java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)"
 33 = {StackTraceElement@12553} "java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)"
 34 = {StackTraceElement@12554} "java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)"
 35 = {StackTraceElement@12555} "java.base/java.lang.reflect.Method.invoke(Method.java:566)"
 36 = {StackTraceElement@12556} "org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)"
 37 = {StackTraceElement@12557} "org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:150)"
 38 = {StackTraceElement@12558} "org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:117)"
 39 = {StackTraceElement@12559} "org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:895)"
 40 = {StackTraceElement@12560} "org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:808)"
 41 = {StackTraceElement@12561} "org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)"
 42 = {StackTraceElement@12562} "org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1067)"
 43 = {StackTraceElement@12563} "org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:963)"
 44 = {StackTraceElement@12564} "org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)"
 45 = {StackTraceElement@12565} "org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:898)"
 46 = {StackTraceElement@12566} "javax.servlet.http.HttpServlet.service(HttpServlet.java:655)"
 47 = {StackTraceElement@12567} "org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)"
 48 = {StackTraceElement@12568} "javax.servlet.http.HttpServlet.service(HttpServlet.java:764)"
 49 = {StackTraceElement@12569} "org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:227)"
 50 = {StackTraceElement@12570} "org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)"
 51 = {StackTraceElement@12571} "org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)"
 52 = {StackTraceElement@12572} "org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)"
 53 = {StackTraceElement@12573} "org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)"
 54 = {StackTraceElement@12574} "org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100)"
 55 = {StackTraceElement@12575} "org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)"
 56 = {StackTraceElement@12576} "org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)"
 57 = {StackTraceElement@12577} "org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)"
 58 = {StackTraceElement@12578} "org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93)"
 59 = {StackTraceElement@12579} "org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)"
 60 = {StackTraceElement@12580} "org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)"
 61 = {StackTraceElement@12581} "org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)"
 62 = {StackTraceElement@12582} "org.springframework.cloud.sleuth.instrument.web.servlet.TracingFilter.doFilter(TracingFilter.java:68)"
 63 = {StackTraceElement@12583} "org.springframework.cloud.sleuth.autoconfig.instrument.web.TraceWebServletConfiguration$LazyTracingFilter.doFilter(TraceWebServletConfiguration.java:129)"
 64 = {StackTraceElement@12584} "org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)"
 65 = {StackTraceElement@12585} "org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)"
 66 = {StackTraceElement@12586} "org.springframework.boot.actuate.metrics.web.servlet.WebMvcMetricsFilter.doFilterInternal(WebMvcMetricsFilter.java:96)"
 67 = {StackTraceElement@12587} "org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)"
 68 = {StackTraceElement@12588} "org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)"
 69 = {StackTraceElement@12589} "org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)"
 70 = {StackTraceElement@12590} "org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)"
 71 = {StackTraceElement@12591} "org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)"
 72 = {StackTraceElement@12592} "org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)"
 73 = {StackTraceElement@12593} "org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)"
 74 = {StackTraceElement@12594} "org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:197)"
 75 = {StackTraceElement@12595} "org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97)"
 76 = {StackTraceElement@12596} "org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:540)"
 77 = {StackTraceElement@12597} "org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:135)"
 78 = {StackTraceElement@12598} "org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)"
 79 = {StackTraceElement@12599} "org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78)"
 80 = {StackTraceElement@12600} "org.springframework.cloud.sleuth.instrument.web.tomcat.TraceValve.invoke(TraceValve.java:74)"
 81 = {StackTraceElement@12601} "org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:357)"
 82 = {StackTraceElement@12602} "org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:382)"
 83 = {StackTraceElement@12603} "org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)"
 84 = {StackTraceElement@12604} "org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:895)"
 85 = {StackTraceElement@12605} "org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1722)"
 86 = {StackTraceElement@12606} "org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)"
 87 = {StackTraceElement@12607} "org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191)"
 88 = {StackTraceElement@12608} "org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659)"
 89 = {StackTraceElement@12609} "org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)"
 90 = {StackTraceElement@12610} "java.base/java.lang.Thread.run(Thread.java:829)"

External references such as API reference guides

NA

Any additional information below

Even though LeakedSessionExceptionis not being thrown in execution of code but We are obsering the performance issues on queries.

Following these steps guarantees the quickest resolution possible.

Thanks!

@product-auto-label product-auto-label bot added the api: spanner Issues related to the googleapis/java-spanner API. label Feb 7, 2023
@ansh0l ansh0l removed their assignment Mar 27, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
api: spanner Issues related to the googleapis/java-spanner API.
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants