accumulo-notifications mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Josh Elser (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (ACCUMULO-4341) ServiceLoader deadlock with classes loaded from HDFS
Date Mon, 13 Jun 2016 17:16:21 GMT

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

Josh Elser commented on ACCUMULO-4341:
--------------------------------------

bq. I didn't realize it until now, but I am loading jars out of HDFS with 1.7.0 with the ServiceLoader.
In this case, where it is working, I am only using putting my application jars into HDFS and
setting the context name on tables. Pushing the accumulo jars into HDFS likely the case where
it will not work.

Ok, that's a reasonable workaround (easily doc'ed anyways). Will defer to Christopher about
fixing the ServiceLoader stuff.

> ServiceLoader deadlock with classes loaded from HDFS
> ----------------------------------------------------
>
>                 Key: ACCUMULO-4341
>                 URL: https://issues.apache.org/jira/browse/ACCUMULO-4341
>             Project: Accumulo
>          Issue Type: Bug
>          Components: client
>    Affects Versions: 1.8.0
>            Reporter: Dave Marion
>             Fix For: 1.7.2, 1.8.0
>
>
> With Accumulo set up to use general.vfs.classpaths to load classes from HDFS, running
`accumulo help` will hang. 
> A jstack of the process shows the IPC Client thread at:
> {noformat}
>    java.lang.Thread.State: BLOCKED (on object monitor)
> 	at java.lang.Class.forName0(Native Method)
> 	at java.lang.Class.forName(Class.java:348)
> 	at org.apache.hadoop.conf.Configuration.getClassByNameOrNull(Configuration.java:2051)
> 	at org.apache.hadoop.util.ReflectionUtils.setJobConf(ReflectionUtils.java:91)
> 	at org.apache.hadoop.util.ReflectionUtils.setConf(ReflectionUtils.java:75)
> 	at org.apache.hadoop.util.ReflectionUtils.newInstance(ReflectionUtils.java:133)
> 	at org.apache.hadoop.ipc.Client$Connection.receiveRpcResponse(Client.java:1086)
> 	at org.apache.hadoop.ipc.Client$Connection.run(Client.java:966)
> {noformat}
> and the main thread at:
> {noformat}
>    java.lang.Thread.State: WAITING (on object monitor)
> 	at java.lang.Object.wait(Native Method)
> 	at java.lang.Object.wait(Object.java:502)
> 	at org.apache.hadoop.ipc.Client.call(Client.java:1454)
> 	- locked <0x00000000f09a2898> (a org.apache.hadoop.ipc.Client$Call)
> 	at org.apache.hadoop.ipc.Client.call(Client.java:1399)
> 	at org.apache.hadoop.ipc.ProtobufRpcEngine$Invoker.invoke(ProtobufRpcEngine.java:232)
> 	at com.sun.proxy.$Proxy9.getFileInfo(Unknown Source)
> 	at org.apache.hadoop.hdfs.protocolPB.ClientNamenodeProtocolTranslatorPB.getFileInfo(ClientNamenodeProtocolTranslatorPB.java:752)
> 	at sun.reflect.GeneratedMethodAccessor2.invoke(Unknown Source)
> 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> 	at java.lang.reflect.Method.invoke(Method.java:497)
> 	at org.apache.hadoop.io.retry.RetryInvocationHandler.invokeMethod(RetryInvocationHandler.java:187)
> 	at org.apache.hadoop.io.retry.RetryInvocationHandler.invoke(RetryInvocationHandler.java:102)
> 	at com.sun.proxy.$Proxy10.getFileInfo(Unknown Source)
> 	at org.apache.hadoop.hdfs.DFSClient.getFileInfo(DFSClient.java:1982)
> 	at org.apache.hadoop.hdfs.DistributedFileSystem$18.doCall(DistributedFileSystem.java:1128)
> 	at org.apache.hadoop.hdfs.DistributedFileSystem$18.doCall(DistributedFileSystem.java:1124)
> 	at org.apache.hadoop.fs.FileSystemLinkResolver.resolve(FileSystemLinkResolver.java:81)
> 	at org.apache.hadoop.hdfs.DistributedFileSystem.getFileStatus(DistributedFileSystem.java:1124)
> 	at org.apache.commons.vfs2.provider.hdfs.HdfsFileObject.doAttach(HdfsFileObject.java:85)
> 	at org.apache.commons.vfs2.provider.AbstractFileObject.attach(AbstractFileObject.java:173)
> 	- locked <0x00000000f57fd008> (a org.apache.commons.vfs2.provider.hdfs.HdfsFileSystem)
> 	at org.apache.commons.vfs2.provider.AbstractFileObject.getContent(AbstractFileObject.java:1236)
> 	- locked <0x00000000f57fd008> (a org.apache.commons.vfs2.provider.hdfs.HdfsFileSystem)
> 	at org.apache.commons.vfs2.impl.VFSClassLoader.getPermissions(VFSClassLoader.java:300)
> 	at java.security.SecureClassLoader.getProtectionDomain(SecureClassLoader.java:206)
> 	- locked <0x00000000f5ad9138> (a java.util.HashMap)
> 	at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
> 	at org.apache.commons.vfs2.impl.VFSClassLoader.defineClass(VFSClassLoader.java:226)
> 	at org.apache.commons.vfs2.impl.VFSClassLoader.findClass(VFSClassLoader.java:180)
> 	at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
> 	- locked <0x00000000f5af3b88> (a org.apache.commons.vfs2.impl.VFSClassLoader)
> 	at java.lang.ClassLoader.loadClass(ClassLoader.java:411)
> 	- locked <0x00000000f6f5c2f8> (a org.apache.commons.vfs2.impl.VFSClassLoader)
> 	at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
> 	at java.lang.Class.forName0(Native Method)
> 	at java.lang.Class.forName(Class.java:348)
> 	at java.util.ServiceLoader$LazyIterator.nextService(ServiceLoader.java:370)
> 	at java.util.ServiceLoader$LazyIterator.next(ServiceLoader.java:404)
> 	at java.util.ServiceLoader$1.next(ServiceLoader.java:480)
> 	at org.apache.accumulo.start.Main.checkDuplicates(Main.java:196)
> 	at org.apache.accumulo.start.Main.getExecutables(Main.java:188)
> 	at org.apache.accumulo.start.Main.main(Main.java:52)
> {noformat}



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

Mime
View raw message