You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@falcon.apache.org by "Sowmya Ramesh (JIRA)" <ji...@apache.org> on 2014/10/15 04:25:34 UTC

[jira] [Commented] (FALCON-482) Concurrent requests made using Proxy Oozie client fail

    [ https://issues.apache.org/jira/browse/FALCON-482?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14171900#comment-14171900 ] 

Sowmya Ramesh commented on FALCON-482:
--------------------------------------

AuthOozieClient is thread safe. Issue is ProxyOozieClient overrides getAuthenticator and returns the cached authenticator. This will create issues if multiple threads access it at the same time.

In AuthOozieClient getAuthenticator creates an new instance. Removing the override should solve this issue. Thanks to [~svenkat] for finding this. Will upload a patch soon!

{noformat}
if (authOption != null) {
            try {
                Class<? extends Authenticator> authClass = getAuthenticators().get(authOption.toUpperCase());
                if (authClass == null) {
                    throw new OozieClientException(OozieClientException.AUTHENTICATION,
                            "Authenticator class not found [" + authClass + "]");
                }
                return authClass.newInstance();
            }
{noformat}

> Concurrent requests made using Proxy Oozie client fail
> ------------------------------------------------------
>
>                 Key: FALCON-482
>                 URL: https://issues.apache.org/jira/browse/FALCON-482
>             Project: Falcon
>          Issue Type: Bug
>    Affects Versions: 0.5, 0.6
>            Reporter: Sowmya Ramesh
>            Assignee: Sowmya Ramesh
>              Labels: Falcon
>             Fix For: 0.6
>
>
> Concurrent requests made using Oozie Client fails e.g.: Concurrently deleting a process fails
> {code}
> 2014-06-16 12:01:19,843 ERROR - [549778293@qtp-102010508-184:hrt_qa:DELETE//entities/delete/process/agregator-coord16-b3b9d56f-68be-403f-8d74-ccd33b8736a0-0bf77c59-0c3f-4f59-8600-59920e5574d5 5b611e6f-4537-4d16-8c1f-4be46e69ca47] ~ Unable to reach workflow engine for deletion or deletion failed (AbstractEntityManager:213)
> org.apache.falcon.FalconException: AUTHENTICATION : java.lang.reflect.UndeclaredThrowableException
> 	at org.apache.falcon.workflow.engine.OozieWorkflowEngine.findBundles(OozieWorkflowEngine.java:206)
> 	at org.apache.falcon.workflow.engine.OozieWorkflowEngine.doBundleAction(OozieWorkflowEngine.java:279)
> 	at org.apache.falcon.workflow.engine.OozieWorkflowEngine.doBundleAction(OozieWorkflowEngine.java:272)
> 	at org.apache.falcon.workflow.engine.OozieWorkflowEngine.delete(OozieWorkflowEngine.java:256)
> 	at org.apache.falcon.resource.AbstractEntityManager.delete(AbstractEntityManager.java:200)
> 	at org.apache.falcon.resource.ConfigSyncService.delete(ConfigSyncService.java:56)
> 	at sun.reflect.GeneratedMethodAccessor46.invoke(Unknown Source)
> 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> 	at java.lang.reflect.Method.invoke(Method.java:606)
> 	at org.apache.falcon.resource.channel.IPCChannel.invoke(IPCChannel.java:48)
> 	at org.apache.falcon.resource.proxy.SchedulableEntityManagerProxy$2.doExecute(SchedulableEntityManagerProxy.java:176)
> 	at org.apache.falcon.resource.proxy.SchedulableEntityManagerProxy$EntityProxy.execute(SchedulableEntityManagerProxy.java:410)
> 	at org.apache.falcon.resource.proxy.SchedulableEntityManagerProxy$2.execute(SchedulableEntityManagerProxy.java:166)
> 	at org.apache.falcon.resource.proxy.SchedulableEntityManagerProxy.delete_aroundBody2(SchedulableEntityManagerProxy.java:178)
> 	at org.apache.falcon.resource.proxy.SchedulableEntityManagerProxy$AjcClosure3.run(SchedulableEntityManagerProxy.java:1)
> 	at org.aspectj.runtime.reflect.JoinPointImpl.proceed(JoinPointImpl.java:149)
> 	at org.apache.falcon.aspect.AbstractFalconAspect.logAround(AbstractFalconAspect.java:50)
> 	at org.apache.falcon.resource.proxy.SchedulableEntityManagerProxy.delete(SchedulableEntityManagerProxy.java:153)
> 	at sun.reflect.GeneratedMethodAccessor28.invoke(Unknown Source)
> 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> 	at java.lang.reflect.Method.invoke(Method.java:606)
> 	at com.sun.jersey.spi.container.JavaMethodInvokerFactory$1.invoke(JavaMethodInvokerFactory.java:60)
> 	at com.sun.jersey.server.impl.model.method.dispatch.AbstractResourceMethodDispatchProvider$TypeOutInvoker._dispatch(AbstractResourceMethodDispatchProvider.java:185)
> 	at com.sun.jersey.server.impl.model.method.dispatch.ResourceJavaMethodDispatcher.dispatch(ResourceJavaMethodDispatcher.java:75)
> 	at com.sun.jersey.server.impl.uri.rules.HttpMethodRule.accept(HttpMethodRule.java:288)
> 	at com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147)
> 	at com.sun.jersey.server.impl.uri.rules.ResourceClassRule.accept(ResourceClassRule.java:108)
> 	at com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147)
> 	at com.sun.jersey.server.impl.uri.rules.RootResourceClassesRule.accept(RootResourceClassesRule.java:84)
> 	at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1469)
> 	at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1400)
> 	at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1349)
> 	at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1339)
> 	at com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:416)
> 	at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:537)
> 	at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:699)
> 	at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
> 	at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:511)
> 	at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1221)
> 	at org.apache.falcon.security.BasicAuthFilter$2.doFilter(BasicAuthFilter.java:183)
> 	at org.apache.hadoop.security.authentication.server.AuthenticationFilter.doFilter(AuthenticationFilter.java:392)
> 	at org.apache.falcon.security.BasicAuthFilter.doFilter(BasicAuthFilter.java:221)
> 	at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1212)
> 	at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:399)
> 	at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
> 	at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182)
> 	at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:766)
> 	at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:450)
> 	at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
> 	at org.mortbay.jetty.Server.handle(Server.java:326)
> 	at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542)
> 	at org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:928)
> 	at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:549)
> 	at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:212)
> 	at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404)
> 	at org.mortbay.jetty.bio.SocketConnector$Connection.run(SocketConnector.java:228)
> 	at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582)
> Caused by: AUTHENTICATION : java.lang.reflect.UndeclaredThrowableException
> 	at org.apache.oozie.client.ProxyOozieClient.getBundleJobsInfo(ProxyOozieClient.java:559)
> 	at org.apache.falcon.workflow.engine.OozieWorkflowEngine.findBundles(OozieWorkflowEngine.java:191)
> 	... 56 more
> Caused by: java.lang.reflect.UndeclaredThrowableException
> 	at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1609)
> 	at org.apache.oozie.client.ProxyOozieClient.createConnection(ProxyOozieClient.java:87)
> 	at org.apache.oozie.client.OozieClient$ClientCallable.call(OozieClient.java:478)
> 	at org.apache.oozie.client.OozieClient.getBundleJobsInfo(OozieClient.java:1518)
> 	at org.apache.oozie.client.ProxyOozieClient.access$2901(ProxyOozieClient.java:48)
> 	at org.apache.oozie.client.ProxyOozieClient$29.call(ProxyOozieClient.java:555)
> 	at org.apache.oozie.client.ProxyOozieClient$29.call(ProxyOozieClient.java:553)
> 	at org.apache.oozie.client.OozieClient.doAs(OozieClient.java:191)
> 	at org.apache.oozie.client.ProxyOozieClient.getBundleJobsInfo(ProxyOozieClient.java:553)
> 	... 57 more
> Caused by: AUTHENTICATION : Could not authenticate, Authentication failed, status: 401, message: Unauthorized
> 	at org.apache.oozie.client.AuthOozieClient.createTokenBasedAuthConnection(AuthOozieClient.java:156)
> 	at org.apache.oozie.client.AuthOozieClient.createConnection(AuthOozieClient.java:209)
> 	at org.apache.oozie.client.ProxyOozieClient.access$001(ProxyOozieClient.java:48)
> 	at org.apache.oozie.client.ProxyOozieClient$1.run(ProxyOozieClient.java:89)
> 	at org.apache.oozie.client.ProxyOozieClient$1.run(ProxyOozieClient.java:87)
> 	at java.security.AccessController.doPrivileged(Native Method)
> 	at javax.security.auth.Subject.doAs(Subject.java:415)
> 	at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1594)
> 	... 65 more
> Caused by: org.apache.hadoop.security.authentication.client.AuthenticationException: Authentication failed, status: 401, message: Unauthorized
> 	at org.apache.hadoop.security.authentication.client.AuthenticatedURL.extractToken(AuthenticatedURL.java:288)
> 	at org.apache.hadoop.security.authentication.client.KerberosAuthenticator.authenticate(KerberosAuthenticator.java:192)
> 	at org.apache.hadoop.security.authentication.client.AuthenticatedURL.openConnection(AuthenticatedURL.java:232)
> 	at org.apache.oozie.client.AuthOozieClient.createTokenBasedAuthConnection(AuthOozieClient.java:148)
> 	... 72 more
> {code}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)