[ 
https://issues.apache.org/jira/browse/HIVE-487?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12734795#action_12734795
 ] 

Todd Lipcon commented on HIVE-487:
----------------------------------

bq. @Todd - Where were you a few weeks ago? 

Chillin' over on the HADOOP jira ;-) We're gearing up for release of our 
distribution that includes Hadoop 0.20.0, so just started watching this one 
more carefully.

bq. The jars are upstream in Hadoop core. I did not look into this closely but 
the talk about 'Sealing exceptions' above led me to believe I should not try 
this.

Sorry, what I meant here is that the hive tarball would include 
lib/hive-0.4.0.jar, lib/jetty-shims/hive-jetty-shim-v6.jar and 
lib/jetty-shims/hive-jetty-shim-v5.jar

In those jars we'd have two different implementations of the shim. The hive 
wrapper script would then do something like:

{code}
HADOOP_JAR=$HADOOP_HOME/hadoop*core*jar
if [[ $HADOOP_JAR =~ 0.1[789] ]]; then
  JETTY_SHIM=lib/jetty-shims/jetty-shim-v5.jar
else
  JETTY_SHIM=lib/jetty-shims/jetty-shim-v6.jar
fi
CLASSPATH=$CLASSPATH:$JETTY_SHIM
{code}

To generate the shim jars at compile time, we'd compile two different 
JettyShim.java files - one against the v5 API, and one against the v6 API.

As for eclipse properly completing/warning for the right versions for the right 
files, I haven't the foggiest idea. But I am pretty sure it's not going to warn 
if your reflective calls are broken either ;-)

bq. My only concern is will the ant process cooperate?

I don't see why not - my example build here is just to show how it works in a 
self contained way. The stuff inside v1-classes and v2-classes in the example 
are the equivalent of the two jetty jar versions - we don't have to compile 
them. The only code that has to compile is DynamicProxy.java which is 
completely normal code.

bq. If you/we can tackle the ant/eclipse issues I would be happy to use the 
'Dynamic Proxy', but maybe we tackle it in a different Jira because this is a 
pretty big blocker and I am sure many people want to see this in the trunk. 

As for committing now and not worrying, that sounds pretty reasonable, as long 
as there's some kind of deprecation timeline set out. (e.g "in Hive 0.5.0 we 
will drop support for versions of Hadoop that use Jetty v5" or whatever). As 
someone who isn't a major Hive contributor, I'll defer to you guys completely 
-- I just wanted to throw the idea up on the JIRA.

> Hive does not compile with Hadoop 0.20.0
> ----------------------------------------
>
>                 Key: HIVE-487
>                 URL: https://issues.apache.org/jira/browse/HIVE-487
>             Project: Hadoop Hive
>          Issue Type: Bug
>    Affects Versions: 0.3.0
>            Reporter: Aaron Kimball
>            Assignee: Justin Lynn
>             Fix For: 0.4.0
>
>         Attachments: dynamic-proxy.tar.gz, HIVE-487-2.patch, 
> hive-487-jetty-2.diff, hive-487-jetty.patch, hive-487.3.patch, 
> hive-487.4.patch, HIVE-487.patch, jetty-patch.patch, junit-patch1.html
>
>
> Attempting to compile Hive with Hadoop 0.20.0 fails:
> aa...@jargon:~/src/ext/svn/hive-0.3.0$ ant -Dhadoop.version=0.20.0 package
> (several lines elided)
> compile:
>      [echo] Compiling: hive
>     [javac] Compiling 261 source files to 
> /home/aaron/src/ext/svn/hive-0.3.0/build/ql/classes
>     [javac] 
> /home/aaron/src/ext/svn/hive-0.3.0/build/ql/java/org/apache/hadoop/hive/ql/exec/ExecDriver.java:94:
>  cannot find symbol
>     [javac] symbol  : method getCommandLineConfig()
>     [javac] location: class org.apache.hadoop.mapred.JobClient
>     [javac]       Configuration commandConf = 
> JobClient.getCommandLineConfig();
>     [javac]                                            ^
>     [javac] 
> /home/aaron/src/ext/svn/hive-0.3.0/build/ql/java/org/apache/hadoop/hive/ql/io/HiveInputFormat.java:241:
>  cannot find symbol
>     [javac] symbol  : method validateInput(org.apache.hadoop.mapred.JobConf)
>     [javac] location: interface org.apache.hadoop.mapred.InputFormat
>     [javac]       inputFormat.validateInput(newjob);
>     [javac]                  ^
>     [javac] Note: Some input files use or override a deprecated API.
>     [javac] Note: Recompile with -Xlint:deprecation for details.
>     [javac] Note: Some input files use unchecked or unsafe operations.
>     [javac] Note: Recompile with -Xlint:unchecked for details.
>     [javac] 2 errors
> BUILD FAILED
> /home/aaron/src/ext/svn/hive-0.3.0/build.xml:145: The following error 
> occurred while executing this line:
> /home/aaron/src/ext/svn/hive-0.3.0/ql/build.xml:135: Compile failed; see the 
> compiler error output for details.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to