[
https://issues.apache.org/jira/browse/HIVE-5068?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13738861#comment-13738861
]
Brock Noland commented on HIVE-5068:
------------------------------------
To reproduce, I created this simply program copying ASTNode, ASTNodeOrigin, and
Node into a directory:
{noformat}
[brock@bigboy antlr]$ cat src/Test.java
import java.io.*;
import java.beans.*;
import org.antlr.runtime.CommonToken;
public class Test {
public static void main(String[] args ) throws Exception {
ByteArrayOutputStream out = new ByteArrayOutputStream();
XMLEncoder e = new XMLEncoder(out) {
};
e.setExceptionListener(new ExceptionListener() {
public void exceptionThrown(Exception e) {
if(e instanceof RuntimeException) {
throw (RuntimeException)e;
}
throw new RuntimeException(e);
}
});
CommonToken token = new CommonToken(1);
e.writeObject(new ASTNode(token));
e.close();
System.out.println(out);
}
}
{noformat}
And it works with java6:
{noformat}
[brock@bigboy antlr]$ /usr/java/jdk1.6.0_34/bin/javac -classpath "lib/*" -d
classes/ src/*
[brock@bigboy antlr]$ /usr/java/jdk1.6.0_34/bin/java -classpath
"classes/:lib/*" Test
<?xml version="1.0" encoding="UTF-8"?>
<java version="1.6.0_34" class="java.beans.XMLDecoder">
<object class="ASTNode"/>
</java>
{noformat}
not with 7
{noformat}
[brock@bigboy antlr]$ rm -rf classes/; mkdir classes/
[brock@bigboy antlr]$ /usr/java/jdk1.7.0_25/bin/javac -classpath "lib/*" -d
classes/ src/*
[brock@bigboy antlr]$ /usr/java/jdk1.7.0_25/bin/java -classpath
"classes/:lib/*" Test
Exception in thread "main" java.lang.RuntimeException: java.lang.Exception:
XMLEncoder: discarding statement Test$1.writeObject(ASTNode);
at Test$2.exceptionThrown(Test.java:15)
at java.beans.XMLEncoder.writeStatement(XMLEncoder.java:426)
at java.beans.XMLEncoder.writeObject(XMLEncoder.java:330)
at Test.main(Test.java:19)
Caused by: java.lang.Exception: XMLEncoder: discarding statement
Test$1.writeObject(ASTNode);
... 3 more
Caused by: java.lang.RuntimeException: java.lang.InstantiationException:
org.antlr.runtime.CommonToken
at Test$2.exceptionThrown(Test.java:15)
at java.beans.Encoder.getValue(Encoder.java:108)
at java.beans.Encoder.get(Encoder.java:252)
at
java.beans.PersistenceDelegate.writeObject(PersistenceDelegate.java:112)
at java.beans.Encoder.writeObject(Encoder.java:74)
at java.beans.XMLEncoder.writeObject(XMLEncoder.java:327)
at java.beans.Encoder.writeExpression(Encoder.java:330)
at java.beans.XMLEncoder.writeExpression(XMLEncoder.java:454)
at
java.beans.PersistenceDelegate.writeObject(PersistenceDelegate.java:115)
at java.beans.Encoder.writeObject(Encoder.java:74)
at java.beans.XMLEncoder.writeObject(XMLEncoder.java:327)
at java.beans.Encoder.writeExpression(Encoder.java:330)
at java.beans.XMLEncoder.writeExpression(XMLEncoder.java:454)
at
java.beans.DefaultPersistenceDelegate.initBean(DefaultPersistenceDelegate.java:232)
at
java.beans.DefaultPersistenceDelegate.initialize(DefaultPersistenceDelegate.java:400)
at
java.beans.PersistenceDelegate.writeObject(PersistenceDelegate.java:118)
at java.beans.Encoder.writeObject(Encoder.java:74)
at java.beans.XMLEncoder.writeObject(XMLEncoder.java:327)
at java.beans.Encoder.writeExpression(Encoder.java:330)
at java.beans.XMLEncoder.writeExpression(XMLEncoder.java:454)
at
java.beans.PersistenceDelegate.writeObject(PersistenceDelegate.java:115)
at java.beans.Encoder.writeObject(Encoder.java:74)
at java.beans.XMLEncoder.writeObject(XMLEncoder.java:327)
at java.beans.Encoder.writeObject1(Encoder.java:258)
at java.beans.Encoder.cloneStatement(Encoder.java:271)
at java.beans.Encoder.writeStatement(Encoder.java:301)
at java.beans.XMLEncoder.writeStatement(XMLEncoder.java:400)
... 2 more
Caused by: java.lang.InstantiationException: org.antlr.runtime.CommonToken
at java.lang.Class.newInstance(Class.java:359)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at sun.reflect.misc.Trampoline.invoke(MethodUtil.java:75)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at sun.reflect.misc.MethodUtil.invoke(MethodUtil.java:279)
at java.beans.Statement.invokeInternal(Statement.java:292)
at java.beans.Statement.access$000(Statement.java:58)
at java.beans.Statement$2.run(Statement.java:185)
at java.security.AccessController.doPrivileged(Native Method)
at java.beans.Statement.invoke(Statement.java:182)
at java.beans.Expression.getValue(Expression.java:153)
at java.beans.Encoder.getValue(Encoder.java:105)
... 27 more
{noformat}
> Some queries fail due to XMLEncoder error on JDK7
> -------------------------------------------------
>
> Key: HIVE-5068
> URL: https://issues.apache.org/jira/browse/HIVE-5068
> Project: Hive
> Issue Type: Sub-task
> Reporter: Brock Noland
>
> Looks like something snuck in that breaks the JDK 7 build:
> {noformat}
> Caused by: java.lang.Exception: XMLEncoder: discarding statement
> ArrayList.add(ASTNode);
> ... 106 more
> Caused by: java.lang.RuntimeException: Cannot serialize object
> at
> org.apache.hadoop.hive.ql.exec.Utilities$1.exceptionThrown(Utilities.java:598)
> at
> java.beans.DefaultPersistenceDelegate.initBean(DefaultPersistenceDelegate.java:238)
> at
> java.beans.DefaultPersistenceDelegate.initialize(DefaultPersistenceDelegate.java:400)
> at
> java.beans.PersistenceDelegate.writeObject(PersistenceDelegate.java:118)
> at java.beans.Encoder.writeObject(Encoder.java:74)
> at java.beans.XMLEncoder.writeObject(XMLEncoder.java:327)
> at java.beans.Encoder.writeExpression(Encoder.java:330)
> at java.beans.XMLEncoder.writeExpression(XMLEncoder.java:454)
> at
> java.beans.PersistenceDelegate.writeObject(PersistenceDelegate.java:115)
> at java.beans.Encoder.writeObject(Encoder.java:74)
> at java.beans.XMLEncoder.writeObject(XMLEncoder.java:327)
> at java.beans.Encoder.writeObject1(Encoder.java:258)
> at java.beans.Encoder.cloneStatement(Encoder.java:271)
> at java.beans.Encoder.writeStatement(Encoder.java:301)
> at java.beans.XMLEncoder.writeStatement(XMLEncoder.java:400)
> ... 105 more
> Caused by: java.lang.RuntimeException: Cannot serialize object
> at
> org.apache.hadoop.hive.ql.exec.Utilities$1.exceptionThrown(Utilities.java:598)
> at java.beans.Encoder.getValue(Encoder.java:108)
> at java.beans.Encoder.get(Encoder.java:252)
> at
> java.beans.PersistenceDelegate.writeObject(PersistenceDelegate.java:112)
> at java.beans.Encoder.writeObject(Encoder.java:74)
> at java.beans.XMLEncoder.writeObject(XMLEncoder.java:327)
> at java.beans.Encoder.writeExpression(Encoder.java:330)
> at java.beans.XMLEncoder.writeExpression(XMLEncoder.java:454)
> at
> java.beans.PersistenceDelegate.writeObject(PersistenceDelegate.java:115)
> at java.beans.Encoder.writeObject(Encoder.java:74)
> at java.beans.XMLEncoder.writeObject(XMLEncoder.java:327)
> at java.beans.Encoder.writeExpression(Encoder.java:330)
> at java.beans.XMLEncoder.writeExpression(XMLEncoder.java:454)
> at
> java.beans.DefaultPersistenceDelegate.initBean(DefaultPersistenceDelegate.java:232)
> ... 118 more
> Caused by: java.lang.InstantiationException: org.antlr.runtime.CommonToken
> at java.lang.Class.newInstance(Class.java:359)
> at sun.reflect.GeneratedMethodAccessor32.invoke(Unknown Source)
> at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> at java.lang.reflect.Method.invoke(Method.java:606)
> at sun.reflect.misc.Trampoline.invoke(MethodUtil.java:75)
> at sun.reflect.GeneratedMethodAccessor29.invoke(Unknown Source)
> at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> at java.lang.reflect.Method.invoke(Method.java:606)
> at sun.reflect.misc.MethodUtil.invoke(MethodUtil.java:279)
> at java.beans.Statement.invokeInternal(Statement.java:292)
> at java.beans.Statement.access$000(Statement.java:58)
> at java.beans.Statement$2.run(Statement.java:185)
> at java.security.AccessController.doPrivileged(Native Method)
> at java.beans.Statement.invoke(Statement.java:182)
> at java.beans.Expression.getValue(Expression.java:153)
> at java.beans.Encoder.getValue(Encoder.java:105)
> ... 130 more
> {noformat}
> and
> {noformat}
> java.lang.RuntimeException: Cannot serialize object
> at
> org.apache.hadoop.hive.ql.exec.Utilities$1.exceptionThrown(Utilities.java:598)
> at java.beans.XMLEncoder.writeStatement(XMLEncoder.java:426)
> at java.beans.XMLEncoder.writeObject(XMLEncoder.java:330)
> at
> org.apache.hadoop.hive.ql.exec.Utilities.serializeObject(Utilities.java:611)
> at org.apache.hadoop.hive.ql.plan.MapredWork.toXML(MapredWork.java:88)
> at
> org.apache.hadoop.hive.ql.optimizer.physical.CommonJoinTaskDispatcher.processCurrentTask(CommonJoinTaskDispatcher.java:505)
> at
> org.apache.hadoop.hive.ql.optimizer.physical.AbstractJoinTaskDispatcher.dispatch(AbstractJoinTaskDispatcher.java:182)
> at
> org.apache.hadoop.hive.ql.lib.TaskGraphWalker.dispatch(TaskGraphWalker.java:111)
> at
> org.apache.hadoop.hive.ql.lib.TaskGraphWalker.walk(TaskGraphWalker.java:194)
> at
> org.apache.hadoop.hive.ql.lib.TaskGraphWalker.startWalking(TaskGraphWalker.java:139)
> at
> org.apache.hadoop.hive.ql.optimizer.physical.CommonJoinResolver.resolve(CommonJoinResolver.java:79)
> at
> org.apache.hadoop.hive.ql.optimizer.physical.PhysicalOptimizer.optimize(PhysicalOptimizer.java:90)
> at
> org.apache.hadoop.hive.ql.parse.MapReduceCompiler.compile(MapReduceCompiler.java:292)
> at
> org.apache.hadoop.hive.ql.parse.SemanticAnalyzer.analyzeInternal(SemanticAnalyzer.java:8333)
> at
> org.apache.hadoop.hive.ql.parse.BaseSemanticAnalyzer.analyze(BaseSemanticAnalyzer.java:278)
> at org.apache.hadoop.hive.ql.Driver.compile(Driver.java:437)
> at org.apache.hadoop.hive.ql.Driver.compile(Driver.java:341)
> at org.apache.hadoop.hive.ql.Driver.runInternal(Driver.java:973)
> at org.apache.hadoop.hive.ql.Driver.run(Driver.java:885)
> at
> org.apache.hadoop.hive.cli.CliDriver.processLocalCmd(CliDriver.java:259)
> at org.apache.hadoop.hive.cli.CliDriver.processCmd(CliDriver.java:216)
> at
> org.apache.hadoop.hive.cli.CliDriver.processLine(CliDriver.java:413)
> at
> org.apache.hadoop.hive.cli.CliDriver.processLine(CliDriver.java:348)
> at
> org.apache.hadoop.hive.ql.QTestUtil.executeClient(QTestUtil.java:790)
> at
> org.apache.hadoop.hive.cli.TestCliDriver.runTest(TestCliDriver.java:124)
> at
> org.apache.hadoop.hive.cli.TestCliDriver.testCliDriver_auto_join25(TestCliDriver.java:108)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
> at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> at java.lang.reflect.Method.invoke(Method.java:606)
> at junit.framework.TestCase.runTest(TestCase.java:154)
> at junit.framework.TestCase.runBare(TestCase.java:127)
> at junit.framework.TestResult$1.protect(TestResult.java:106)
> at junit.framework.TestResult.runProtected(TestResult.java:124)
> at junit.framework.TestResult.run(TestResult.java:109)
> at junit.framework.TestCase.run(TestCase.java:118)
> at junit.framework.TestSuite.runTest(TestSuite.java:208)
> at junit.framework.TestSuite.run(TestSuite.java:203)
> at
> org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.run(JUnitTestRunner.java:520)
> at
> org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.launch(JUnitTestRunner.java:1060)
> at
> org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.main(JUnitTestRunner.java:911)
> Caused by: java.lang.Exception: XMLEncoder: discarding statement
> XMLEncoder.writeObject(MapredWork);
> ... 40 more
> {noformat}
--
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