[
https://issues.apache.org/jira/browse/LENS-1199?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Raju Bairishetti updated LENS-1199:
-----------------------------------
Attachment: LENS-1199.patch
Seems this is happening because of multiple closeSession calls to a single
session. With [LENS-904|https://issues.apache.org/jira/browse/LENS-904]
changes, session is not getting closed immediately if active queries are
present.
Earlier to LENS-904, opened session count was decremented only once even if
user invokes multiple times close on the same session(i.e. multiple
closeSession() invocations throws an exception saying Session does not exist).
Right now, we are decrementing the opened session count every closeSession
invocation.
Able to reproduce NPE through with the added test code.
Patch: It checks whether session count needs to be decremented or not based on
the markedForClose flag.
> NPE while closing session
> -------------------------
>
> Key: LENS-1199
> URL: https://issues.apache.org/jira/browse/LENS-1199
> Project: Apache Lens
> Issue Type: Bug
> Components: server
> Affects Versions: 2.6
> Reporter: Amareshwari Sriramadasu
> Assignee: Raju Bairishetti
> Fix For: 2.6
>
> Attachments: LENS-1199.patch
>
>
> Close session fails with 500.
> Seeing the following in server logs :
> {noformat}
> 23 Jun 2016 05:55:01 [9217270f-8cf1-43dd-add4-64d604bebb65]
> [e319efea-fd05-401a-91c9-c94ee8409dcf grizzly-http-server-1] INFO
> org.apache.lens.server.BaseLensService - Closed session <?xml version="1.0"
> encoding="UTF-8"
> standalone="yes"?><lensSessionHandle><publicId>e319efea-fd05-401a-91c9-c94ee8409dcf</publicId><secretId>76942b08-b549-430f-834b-ae39514c6a91</secretId></lensSessionHandle>
> for anonymous user
> 23 Jun 2016 05:55:01 [9217270f-8cf1-43dd-add4-64d604bebb65]
> [e319efea-fd05-401a-91c9-c94ee8409dcf grizzly-http-server-1] ERROR
> org.apache.lens.server.LensRequestListener - Encountered HTTP exception
> org.glassfish.jersey.server.internal.process.MappableException:
> java.lang.NullPointerException
> at
> org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.mapTargetToRuntimeEx(AbstractJavaResourceMethodDispatcher.java:179)
> ~[jersey-server-2.22.1.jar:na]
> at
> org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.access$200(AbstractJavaResourceMethodDispatcher.java:72)
> ~[jersey-server-2.22.1.jar:na]
> at
> org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher$1.run(AbstractJavaResourceMethodDispatcher.java:149)
> ~[jersey-server-2.22.1.jar:na]
> at
> org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.invoke(AbstractJavaResourceMethodDispatcher.java:161)
> ~[jersey-server-2.22.1.jar:na]
> at
> org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider$TypeOutInvoker.doDispatch(JavaResourceMethodDispatcherProvider.java:205)
> ~[jersey-server-2.22.1.jar:na]
> at
> org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.dispatch(AbstractJavaResourceMethodDispatcher.java:99)
> ~[jersey-server-2.22.1.jar:na]
> at
> org.glassfish.jersey.server.model.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:389)
> ~[jersey-server-2.22.1.jar:na]
> at
> org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:347)
> ~[jersey-server-2.22.1.jar:na]
> at
> org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:102)
> ~[jersey-server-2.22.1.jar:na]
> at
> org.glassfish.jersey.server.ServerRuntime$2.run(ServerRuntime.java:326)
> ~[jersey-server-2.22.1.jar:na]
> at org.glassfish.jersey.internal.Errors$1.call(Errors.java:271)
> [jersey-common-2.22.1.jar:na]
> at org.glassfish.jersey.internal.Errors$1.call(Errors.java:267)
> [jersey-common-2.22.1.jar:na]
> at org.glassfish.jersey.internal.Errors.process(Errors.java:315)
> [jersey-common-2.22.1.jar:na]
> at org.glassfish.jersey.internal.Errors.process(Errors.java:297)
> [jersey-common-2.22.1.jar:na]
> at org.glassfish.jersey.internal.Errors.process(Errors.java:267)
> [jersey-common-2.22.1.jar:na]
> at
> org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:317)
> [jersey-common-2.22.1.jar:na]
> at
> org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:305)
> [jersey-server-2.22.1.jar:na]
> at
> org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:1154)
> [jersey-server-2.22.1.jar:na]
> at
> org.glassfish.jersey.grizzly2.httpserver.GrizzlyHttpContainer.service(GrizzlyHttpContainer.java:384)
> [jersey-container-grizzly2-http-2.22.1.jar:na]
> at
> org.glassfish.grizzly.http.server.HttpHandler$1.run(HttpHandler.java:224)
> [grizzly-http-server-2.3.23.jar:2.3.23]
> at
> org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:591)
> [grizzly-framework-2.3.23.jar:2.3.23]
> at
> org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.run(AbstractThreadPool.java:571)
> [grizzly-framework-2.3.23.jar:2.3.23]
> at java.lang.Thread.run(Thread.java:745) [na:1.8.0_66]
> Caused by: java.lang.NullPointerException: null
> at
> org.apache.lens.server.BaseLensService.decrementSessionCountForUser(BaseLensService.java:329)
> ~[classes/:na]
> at
> org.apache.lens.server.BaseLensService.closeSession(BaseLensService.java:307)
> ~[classes/:na]
> at
> org.apache.lens.server.session.HiveSessionService.closeInternal(HiveSessionService.java:481)
> ~[classes/:na]
> at
> org.apache.lens.server.session.HiveSessionService.closeSession(HiveSessionService.java:471)
> ~[classes/:na]
> at
> org.apache.lens.server.session.SessionResource.closeSession(SessionResource.java:109)
> ~[classes/:na]
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> ~[na:1.8.0_66]
> at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
> ~[na:1.8.0_66]
> at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> ~[na:1.8.0_66]
> at java.lang.reflect.Method.invoke(Method.java:497) ~[na:1.8.0_66]
> at
> org.glassfish.jersey.server.model.internal.ResourceMethodInvocationHandlerFactory$1.invoke(ResourceMethodInvocationHandlerFactory.java:81)
> ~[jersey-server-2.22.1.jar:na]
> at
> org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher$1.run(AbstractJavaResourceMethodDispatcher.java:144)
> ~[jersey-server-2.22.1.jar:na]
> ... 20 common frames omitted
> {noformat}
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)