You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@zeppelin.apache.org by "KylinJN (Jira)" <ji...@apache.org> on 2019/12/17 06:27:00 UTC

[jira] [Created] (ZEPPELIN-4491) Deadlock happens in Zeppelin when deleting multiple paragraphs synchronously via RestAPI

KylinJN created ZEPPELIN-4491:
---------------------------------

             Summary: Deadlock happens in Zeppelin when deleting multiple paragraphs synchronously via RestAPI
                 Key: ZEPPELIN-4491
                 URL: https://issues.apache.org/jira/browse/ZEPPELIN-4491
             Project: Zeppelin
          Issue Type: Bug
          Components: Core
    Affects Versions: 0.8.0
            Reporter: KylinJN
             Fix For: 0.8.0


 

The zeppelin server is consistently getting deadlocked when delete multiple paragraphs which belong to different notes synchronously

The RestApi called is below:

|

// zeppelin-server\src\main\java\org\apache\zeppelin\rest\NotebookRestApi.java

/**
 * Delete paragraph REST API
 *
 * @param noteId ID of Note
 * @return JSON with status.OK
 * @throws IOException
 */
@DELETE
@Path("\{noteId}/paragraph/\{paragraphId}")
@ZeppelinApi
public Response deleteParagraph(@PathParam("noteId") String noteId,
 @PathParam("paragraphId") String paragraphId) throws IOException {
 LOG.info("delete paragraph {} {}", noteId, paragraphId);

 Note note = notebook.getNote(noteId);
 checkIfNoteIsNotNull(note);
 checkIfUserCanRead(noteId,
 "Insufficient privileges you cannot remove paragraph from this note");

 Paragraph p = note.getParagraph(paragraphId);
 checkIfParagraphIsNotNull(p);

 AuthenticationInfo subject = new AuthenticationInfo(SecurityUtils.getPrincipal());
 note.removeParagraph(SecurityUtils.getPrincipal(), paragraphId);
 note.persist(subject);
 notebookServer.broadcastNote(note);

 return new JsonResponse(Status.OK, "").build();
}

|

The relevant thread dump is below:

|

Server compiler detected.
JVM version is 25.212-b10
Deadlock Detection:

Found one Java-level deadlock:
=============================

"qtp1188392295-14051":
 waiting to lock Monitor@0x00007f3dc800a108 (Object@0x00000000c7706788, a java/util/LinkedList),
 which is held by "qtp1188392295-14087"
"qtp1188392295-14087":
 waiting to lock Monitor@0x00007f3d10009278 (Object@0x00000000c78d3e78, a java/util/LinkedList),
 which is held by "qtp1188392295-14051"

Found a total of 1 deadlock.

|

The stacktrace information is below:

|

“qtp1188392295-14087”:
 [1] org.apache.zeppelin.notebook.Note.getParagraphs (Note.java:750)
 [2] org.apache.zeppelin.notebook.Notebook.getJobListByUnixTime (Notebook.java:871)
 [3] org.apache.zeppelin.socket.NotebookServer.broadcastUpdateNoteJobInfo (NotebookServer.java:554)
 [4] org.apache.zeppelin.socket.NotebookServer$NotebookInformationListener.onParagraphRemove (NotebookServer.java:2,180)
 [5] org.apache.zeppelin.notebook.Notebook.onParagraphRemove (Notebook.java:1,083)
 [6] org.apache.zeppelin.notebook.Note.removeParagraph (Note.java:446)
 [7] org.apache.zeppelin.rest.NotebookRestApi.deleteParagraph (NotebookRestApi.java:615)
 [8] sun.reflect.GeneratedMethodAccessor27.invoke (null)
 [9] sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
 [10] java.lang.reflect.Method.invoke (Method.java:498)
 [11] org.glassfish.jersey.server.model.internal.ResourceMethodInvocationHandlerFactory.lambda$static$0 (ResourceMethodInvocationHandlerFactory.java:76)
 [12] org.glassfish.jersey.server.model.internal.ResourceMethodInvocationHandlerFactory$$Lambda$159.invoke (null)
 [13] org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher$1.run (AbstractJavaResourceMethodDispatcher.java:148)
 [14] org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.invoke (AbstractJavaResourceMethodDispatcher.java:191)
 [15] org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider$ResponseOutInvoker.doDispatch (JavaResourceMethodDispatcherProvider.java:200)
 [16] org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.dispatch (AbstractJavaResourceMethodDispatcher.java:103)
 [17] org.glassfish.jersey.server.model.ResourceMethodInvoker.invoke (ResourceMethodInvoker.java:493)
 [18] org.glassfish.jersey.server.model.ResourceMethodInvoker.apply (ResourceMethodInvoker.java:415)
 [19] org.glassfish.jersey.server.model.ResourceMethodInvoker.apply (ResourceMethodInvoker.java:104)
 [20] org.glassfish.jersey.server.ServerRuntime$1.run (ServerRuntime.java:277)
 [21] org.glassfish.jersey.internal.Errors$1.call (Errors.java:272)
 [22] org.glassfish.jersey.internal.Errors$1.call (Errors.java:268)
 [23] org.glassfish.jersey.internal.Errors.process (Errors.java:316)
 [24] org.glassfish.jersey.internal.Errors.process (Errors.java:298)
 [25] org.glassfish.jersey.internal.Errors.process (Errors.java:268)
 [26] org.glassfish.jersey.process.internal.RequestScope.runInScope (RequestScope.java:289)
 [27] org.glassfish.jersey.server.ServerRuntime.process (ServerRuntime.java:256)
 [28] org.glassfish.jersey.server.ApplicationHandler.handle (ApplicationHandler.java:703)
 [29] org.glassfish.jersey.servlet.WebComponent.serviceImpl (WebComponent.java:416)
 [30] org.glassfish.jersey.servlet.WebComponent.service (WebComponent.java:370)
 [31] org.glassfish.jersey.servlet.ServletContainer.service (ServletContainer.java:389)
 [32] org.glassfish.jersey.servlet.ServletContainer.service (ServletContainer.java:342)
 [33] org.glassfish.jersey.servlet.ServletContainer.service (ServletContainer.java:229)
 [34] org.eclipse.jetty.servlet.ServletHolder.handle (ServletHolder.java:865)
 [35] org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter (ServletHandler.java:1,655)
 [36] org.apache.shiro.web.servlet.ProxiedFilterChain.doFilter (ProxiedFilterChain.java:61)
 [37] org.apache.shiro.web.servlet.AdviceFilter.executeChain (AdviceFilter.java:108)
 [38] org.apache.shiro.web.servlet.AdviceFilter.doFilterInternal (AdviceFilter.java:137)
 [39] org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter (OncePerRequestFilter.java:125)
 [40] org.apache.shiro.web.servlet.ProxiedFilterChain.doFilter (ProxiedFilterChain.java:66)
 [41] org.apache.shiro.web.servlet.AbstractShiroFilter.executeChain (AbstractShiroFilter.java:449)
 [42] org.apache.shiro.web.servlet.AbstractShiroFilter$1.call (AbstractShiroFilter.java:365)
 [43] org.apache.shiro.subject.support.SubjectCallable.doCall (SubjectCallable.java:90)
 [44] org.apache.shiro.subject.support.SubjectCallable.call (SubjectCallable.java:83)
 [45] org.apache.shiro.subject.support.DelegatingSubject.execute (DelegatingSubject.java:383)
 [46] org.apache.shiro.web.servlet.AbstractShiroFilter.doFilterInternal (AbstractShiroFilter.java:362)
 [47] org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter (OncePerRequestFilter.java:125)
 [48] org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter (ServletHandler.java:1,642)
 [49] org.apache.zeppelin.server.CorsFilter.doFilter (CorsFilter.java:72)
 [50] org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter (ServletHandler.java:1,642)
 [51] org.eclipse.jetty.servlet.ServletHandler.doHandle (ServletHandler.java:533)
 [52] org.eclipse.jetty.server.handler.ScopedHandler.handle (ScopedHandler.java:146)
 [53] org.eclipse.jetty.security.SecurityHandler.handle (SecurityHandler.java:548)
 [54] org.eclipse.jetty.server.handler.HandlerWrapper.handle (HandlerWrapper.java:132)
 [55] org.eclipse.jetty.server.handler.ScopedHandler.nextHandle (ScopedHandler.java:257)
 [56] org.eclipse.jetty.server.session.SessionHandler.doHandle (SessionHandler.java:1,595)
 [57] org.eclipse.jetty.server.handler.ScopedHandler.nextHandle (ScopedHandler.java:255)
 [58] org.eclipse.jetty.server.handler.ContextHandler.doHandle (ContextHandler.java:1,317)
 [59] org.eclipse.jetty.server.handler.ScopedHandler.nextScope (ScopedHandler.java:203)
 [60] org.eclipse.jetty.servlet.ServletHandler.doScope (ServletHandler.java:473)
 [61] org.eclipse.jetty.server.session.SessionHandler.doScope (SessionHandler.java:1,564)
 [62] org.eclipse.jetty.server.handler.ScopedHandler.nextScope (ScopedHandler.java:201)
 [63] org.eclipse.jetty.server.handler.ContextHandler.doScope (ContextHandler.java:1,219)
 [64] org.eclipse.jetty.server.handler.ScopedHandler.handle (ScopedHandler.java:144)
 [65] org.eclipse.jetty.server.handler.ContextHandlerCollection.handle (ContextHandlerCollection.java:219)
 [66] org.eclipse.jetty.server.handler.HandlerWrapper.handle (HandlerWrapper.java:132)
 [67] org.eclipse.jetty.server.Server.handle (Server.java:531)
 [68] org.eclipse.jetty.server.HttpChannel.handle (HttpChannel.java:352)
 [69] org.eclipse.jetty.server.HttpConnection.onFillable (HttpConnection.java:260)
 [70] org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded (AbstractConnection.java:281)
 [71] org.eclipse.jetty.io.FillInterest.fillable (FillInterest.java:102)
 [72] org.eclipse.jetty.io.ChannelEndPoint$2.run (ChannelEndPoint.java:118)
 [73] org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask (EatWhatYouKill.java:333)
 [74] org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce (EatWhatYouKill.java:310)
 [75] org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce (EatWhatYouKill.java:168)
 [76] org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run (EatWhatYouKill.java:126)
 [77] org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run (ReservedThreadExecutor.java:366)
 [78] org.eclipse.jetty.util.thread.QueuedThreadPool.runJob (QueuedThreadPool.java:762)
 [79] org.eclipse.jetty.util.thread.QueuedThreadPool$2.run (QueuedThreadPool.java:680)
 [80] java.lang.Thread.run (Thread.java:748)

------------------------------------------------------------------------------------------------

"qtp1188392295-14051":
 [1] org.apache.zeppelin.notebook.Note.getParagraphs (Note.java:750)
 [2] org.apache.zeppelin.notebook.Notebook.getJobListByUnixTime (Notebook.java:871)
 [3] org.apache.zeppelin.socket.NotebookServer.broadcastUpdateNoteJobInfo (NotebookServer.java:554)
 [4] org.apache.zeppelin.socket.NotebookServer$NotebookInformationListener.onParagraphRemove (NotebookServer.java:2,180)
 [5] org.apache.zeppelin.notebook.Notebook.onParagraphRemove (Notebook.java:1,083)
 [6] org.apache.zeppelin.notebook.Note.removeParagraph (Note.java:446)
 [7] org.apache.zeppelin.rest.NotebookRestApi.deleteParagraph (NotebookRestApi.java:615)
 [8] sun.reflect.GeneratedMethodAccessor27.invoke (null)
 [9] sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
 [10] java.lang.reflect.Method.invoke (Method.java:498)
 [11] org.glassfish.jersey.server.model.internal.ResourceMethodInvocationHandlerFactory.lambda$static$0 (ResourceMethodInvocationHandlerFactory.java:76)
 [12] org.glassfish.jersey.server.model.internal.ResourceMethodInvocationHandlerFactory$$Lambda$159.invoke (null)
 [13] org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher$1.run (AbstractJavaResourceMethodDispatcher.java:148)
 [14] org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.invoke (AbstractJavaResourceMethodDispatcher.java:191)
 [15] org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider$ResponseOutInvoker.doDispatch (JavaResourceMethodDispatcherProvider.java:200)
 [16] org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.dispatch (AbstractJavaResourceMethodDispatcher.java:103)
 [17] org.glassfish.jersey.server.model.ResourceMethodInvoker.invoke (ResourceMethodInvoker.java:493)
 [18] org.glassfish.jersey.server.model.ResourceMethodInvoker.apply (ResourceMethodInvoker.java:415)
 [19] org.glassfish.jersey.server.model.ResourceMethodInvoker.apply (ResourceMethodInvoker.java:104)
 [20] org.glassfish.jersey.server.ServerRuntime$1.run (ServerRuntime.java:277)
 [21] org.glassfish.jersey.internal.Errors$1.call (Errors.java:272)
 [22] org.glassfish.jersey.internal.Errors$1.call (Errors.java:268)
 [23] org.glassfish.jersey.internal.Errors.process (Errors.java:316)
 [24] org.glassfish.jersey.internal.Errors.process (Errors.java:298)
 [25] org.glassfish.jersey.internal.Errors.process (Errors.java:268)
 [26] org.glassfish.jersey.process.internal.RequestScope.runInScope (RequestScope.java:289)
 [27] org.glassfish.jersey.server.ServerRuntime.process (ServerRuntime.java:256)
 [28] org.glassfish.jersey.server.ApplicationHandler.handle (ApplicationHandler.java:703)
 [29] org.glassfish.jersey.servlet.WebComponent.serviceImpl (WebComponent.java:416)
 [30] org.glassfish.jersey.servlet.WebComponent.service (WebComponent.java:370)
 [31] org.glassfish.jersey.servlet.ServletContainer.service (ServletContainer.java:389)
 [32] org.glassfish.jersey.servlet.ServletContainer.service (ServletContainer.java:342)
 [33] org.glassfish.jersey.servlet.ServletContainer.service (ServletContainer.java:229)
 [34] org.eclipse.jetty.servlet.ServletHolder.handle (ServletHolder.java:865)
 [35] org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter (ServletHandler.java:1,655)
 [36] org.apache.shiro.web.servlet.ProxiedFilterChain.doFilter (ProxiedFilterChain.java:61)
 [37] org.apache.shiro.web.servlet.AdviceFilter.executeChain (AdviceFilter.java:108)
 [38] org.apache.shiro.web.servlet.AdviceFilter.doFilterInternal (AdviceFilter.java:137)
 [39] org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter (OncePerRequestFilter.java:125)
 [40] org.apache.shiro.web.servlet.ProxiedFilterChain.doFilter (ProxiedFilterChain.java:66)
 [41] org.apache.shiro.web.servlet.AbstractShiroFilter.executeChain (AbstractShiroFilter.java:449)
 [42] org.apache.shiro.web.servlet.AbstractShiroFilter$1.call (AbstractShiroFilter.java:365)
 [43] org.apache.shiro.subject.support.SubjectCallable.doCall (SubjectCallable.java:90)
 [44] org.apache.shiro.subject.support.SubjectCallable.call (SubjectCallable.java:83)
 [45] org.apache.shiro.subject.support.DelegatingSubject.execute (DelegatingSubject.java:383)
 [46] org.apache.shiro.web.servlet.AbstractShiroFilter.doFilterInternal (AbstractShiroFilter.java:362)
 [47] org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter (OncePerRequestFilter.java:125)
 [48] org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter (ServletHandler.java:1,642)
 [49] org.apache.zeppelin.server.CorsFilter.doFilter (CorsFilter.java:72)
 [50] org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter (ServletHandler.java:1,642)
 [51] org.eclipse.jetty.servlet.ServletHandler.doHandle (ServletHandler.java:533)
 [52] org.eclipse.jetty.server.handler.ScopedHandler.handle (ScopedHandler.java:146)
 [53] org.eclipse.jetty.security.SecurityHandler.handle (SecurityHandler.java:548)
 [54] org.eclipse.jetty.server.handler.HandlerWrapper.handle (HandlerWrapper.java:132)
 [55] org.eclipse.jetty.server.handler.ScopedHandler.nextHandle (ScopedHandler.java:257)
 [56] org.eclipse.jetty.server.session.SessionHandler.doHandle (SessionHandler.java:1,595)
 [57] org.eclipse.jetty.server.handler.ScopedHandler.nextHandle (ScopedHandler.java:255)
 [58] org.eclipse.jetty.server.handler.ContextHandler.doHandle (ContextHandler.java:1,317)
 [59] org.eclipse.jetty.server.handler.ScopedHandler.nextScope (ScopedHandler.java:203)
 [60] org.eclipse.jetty.servlet.ServletHandler.doScope (ServletHandler.java:473)
 [61] org.eclipse.jetty.server.session.SessionHandler.doScope (SessionHandler.java:1,564)
 [62] org.eclipse.jetty.server.handler.ScopedHandler.nextScope (ScopedHandler.java:201)
 [63] org.eclipse.jetty.server.handler.ContextHandler.doScope (ContextHandler.java:1,219)
 [64] org.eclipse.jetty.server.handler.ScopedHandler.handle (ScopedHandler.java:144)
 [65] org.eclipse.jetty.server.handler.ContextHandlerCollection.handle (ContextHandlerCollection.java:219)
 [66] org.eclipse.jetty.server.handler.HandlerWrapper.handle (HandlerWrapper.java:132)
 [67] org.eclipse.jetty.server.Server.handle (Server.java:531)
 [68] org.eclipse.jetty.server.HttpChannel.handle (HttpChannel.java:352)
 [69] org.eclipse.jetty.server.HttpConnection.onFillable (HttpConnection.java:260)
 [70] org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded (AbstractConnection.java:281)
 [71] org.eclipse.jetty.io.FillInterest.fillable (FillInterest.java:102)
 [72] org.eclipse.jetty.io.ChannelEndPoint$2.run (ChannelEndPoint.java:118)
 [73] org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask (EatWhatYouKill.java:333)
 [74] org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce (EatWhatYouKill.java:310)
 [75] org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce (EatWhatYouKill.java:168)
 [76] org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run (EatWhatYouKill.java:126)
 [77] org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run (ReservedThreadExecutor.java:366)
 [78] org.eclipse.jetty.util.thread.QueuedThreadPool.runJob (QueuedThreadPool.java:762)
 [79] org.eclipse.jetty.util.thread.QueuedThreadPool$2.run (QueuedThreadPool.java:680)
 [80] java.lang.Thread.run (Thread.java:748)

|

 

 

 

 



--
This message was sent by Atlassian Jira
(v8.3.4#803005)