[ https://issues.apache.org/jira/browse/HIVE-4574?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13660856#comment-13660856 ]
Thejas M Nair commented on HIVE-4574: ------------------------------------- The stack trace of threads in hiveserver2 when it gets into this state looks like this - {code} - java.util.WeakHashMap.get(java.lang.Object) @bci=72, line=470 (Compiled frame; information may be imprecise) - com.sun.beans.WeakCache.get(java.lang.Object) @bci=5, line=55 (Interpreted frame) - com.sun.beans.finder.MethodFinder.findMethod(java.lang.Class, java.lang.String, java.lang.Class[]) @bci=33, line=68 (Interpreted frame) - java.beans.Statement.getMethod(java.lang.Class, java.lang.String, java.lang.Class[]) @bci=3, line=357 (Interpreted frame) - java.beans.Statement.invokeInternal() @bci=419, line=287 (Interpreted frame) - java.beans.Statement.access$000(java.beans.Statement) @bci=1, line=58 (Interpreted frame) - java.beans.Statement$2.run() @bci=4, line=185 (Interpreted frame) - java.security.AccessController.doPrivileged(java.security.PrivilegedExceptionAction, java.security.AccessControlContext) @bci=0 (Interpreted frame) - java.beans.Statement.invoke() @bci=34, line=182 (Compiled frame) - java.beans.Expression.getValue() @bci=12, line=153 (Compiled frame) - java.beans.DefaultPersistenceDelegate.doProperty(java.lang.Class, java.beans.PropertyDescriptor, java.lang.Object, java.lang.Object, java.beans.Encoder) @bci=63, line=192 (Interpreted frame) - java.beans.DefaultPersistenceDelegate.initBean(java.lang.Class, java.lang.Object, java.lang.Object, java.beans.Encoder) @bci=254, line=253 (Interpreted frame) - java.beans.DefaultPersistenceDelegate.initialize(java.lang.Class, java.lang.Object, java.lang.Object, java.beans.Encoder) @bci=23, line=400 (Interpreted frame) - java.beans.PersistenceDelegate.writeObject(java.lang.Object, java.beans.Encoder) @bci=42, line=118 (Interpreted frame) - java.beans.Encoder.writeObject(java.lang.Object) @bci=26, line=74 (Interpreted frame) - java.beans.XMLEncoder.writeObject(java.lang.Object) @bci=9, line=327 (Interpreted frame) - java.beans.Encoder.writeExpression(java.beans.Expression) @bci=36, line=330 (Interpreted frame) - java.beans.XMLEncoder.writeExpression(java.beans.Expression) @bci=46, line=454 (Interpreted frame) - java.beans.PersistenceDelegate.writeObject(java.lang.Object, java.beans.Encoder) @bci=28, line=115 (Interpreted frame) - java.beans.Encoder.writeObject(java.lang.Object) @bci=26, line=74 (Interpreted frame) - java.beans.XMLEncoder.writeObject(java.lang.Object) @bci=9, line=327 (Interpreted frame) - java.beans.Encoder.writeExpression(java.beans.Expression) @bci=36, line=330 (Interpreted frame) - java.beans.XMLEncoder.writeExpression(java.beans.Expression) @bci=46, line=454 (Interpreted frame) - java.beans.DefaultPersistenceDelegate.doProperty(java.lang.Class, java.beans.PropertyDescriptor, java.lang.Object, java.lang.Object, java.beans.Encoder) @bci=79, line=194 (Interpreted frame) - java.beans.DefaultPersistenceDelegate.initBean(java.lang.Class, java.lang.Object, java.lang.Object, java.beans.Encoder) @bci=254, line=253 (Interpreted frame) - java.beans.DefaultPersistenceDelegate.initialize(java.lang.Class, java.lang.Object, java.lang.Object, java.beans.Encoder) @bci=23, line=400 (Interpreted frame) - java.beans.PersistenceDelegate.writeObject(java.lang.Object, java.beans.Encoder) @bci=42, line=118 (Interpreted frame) - java.beans.Encoder.writeObject(java.lang.Object) @bci=26, line=74 (Interpreted frame) - java.beans.XMLEncoder.writeObject(java.lang.Object) @bci=9, line=327 (Interpreted frame) .... (many more java.beans* calls in stack) .... - java.beans.XMLEncoder.writeObject(java.lang.Object) @bci=9, line=327 (Interpreted frame) - java.beans.Encoder.writeObject1(java.lang.Object) @bci=12, line=258 (Interpreted frame) - java.beans.Encoder.cloneStatement(java.beans.Statement) @bci=46, line=271 (Interpreted frame) - java.beans.Encoder.writeStatement(java.beans.Statement) @bci=2, line=301 (Interpreted frame) - java.beans.XMLEncoder.writeStatement(java.beans.Statement) @bci=12, line=400 (Interpreted frame) - java.beans.XMLEncoder.writeObject(java.lang.Object) @bci=34, line=330 (Interpreted frame) - org.apache.hadoop.hive.ql.exec.Utilities.serializeMapRedWork(org.apache.hadoop.hive.ql.plan.MapredWork, java.io.OutputStream) @bci=41, line=549 (Interpreted frame) - org.apache.hadoop.hive.ql.exec.Utilities.setMapRedWork(org.apache.hadoop.conf.Configuration, org.apache.hadoop.hive.ql.plan.MapredWork, java.lang.String) @bci=53, line=396 (Interpreted frame) - org.apache.hadoop.hive.ql.exec.ExecDriver.execute(org.apache.hadoop.hive.ql.DriverContext) @bci=1273, line=410 (Interpreted frame) {code} > XMLEncoder thread safety issues in openjdk7 causes HiveServer2 to be stuck > -------------------------------------------------------------------------- > > Key: HIVE-4574 > URL: https://issues.apache.org/jira/browse/HIVE-4574 > Project: Hive > Issue Type: Bug > Components: HiveServer2 > Affects Versions: 0.11.0 > Reporter: Thejas M Nair > Assignee: Thejas M Nair > > In open jdk7, XMLEncoder.writeObject call leads to calls to > java.beans.MethodFinder.findMethod(). MethodFinder class not thread safe > because it uses a static WeakHashMap that would get used from multiple > threads. See - > http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/7-b147/com/sun/beans/finder/MethodFinder.java#46 > Concurrent access to HashMap implementation that are not thread safe can > sometimes result in infinite-loops and other problems. If jdk7 is in use, it > makes sense to synchronize calls to XMLEncoder.writeObject . -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira