hadoop-hdfs-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Steve Loughran (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (HDFS-7040) HDFS dangerously uses @Beta methods from very old versions of Guava
Date Thu, 11 Sep 2014 10:25:35 GMT

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

Steve Loughran commented on HDFS-7040:
--------------------------------------

This is the long-standing "hadoop branch-2 guava is way out of date" problem, seen in HDFS-5518
and addressed in HADOOP-10101.

I think Hadoop does have to bite the bullet and update Guava, and think the 2.7 "java 7+ only"
release is the time to do it. It may break some downstream code (the argument for holding
back), but  staying on 11.x is breaking code anyway.

Christopher .. .is there any easy way to switch off the missing methods in the hadoop code
while still having it build against 11.02? 

> HDFS dangerously uses @Beta methods from very old versions of Guava
> -------------------------------------------------------------------
>
>                 Key: HDFS-7040
>                 URL: https://issues.apache.org/jira/browse/HDFS-7040
>             Project: Hadoop HDFS
>          Issue Type: Bug
>    Affects Versions: 2.4.0, 2.5.0, 2.4.1
>            Reporter: Christopher Tubbs
>              Labels: beta, deprecated, guava
>         Attachments: 0001-HDFS-7040-Avoid-beta-LimitInputStream-in-Guava.patch
>
>
> HDFS uses LimitInputStream from Guava. This was introduced as @Beta and is risky for
any application to use.
> The problem is further exacerbated by Hadoop's dependency on Guava version 11.0.2, which
is quite old for an active project (Feb. 2012).
> Because Guava is very stable, projects which depend on Hadoop and use Guava themselves,
can use up through Guava version 14.x
> However, in version 14, Guava deprecated LimitInputStream and provided a replacement.
Because they make no guarantees about compatibility about @Beta classes, they removed it in
version 15.
> What should be done: Hadoop should updated its dependency on Guava to at least version
14 (currently Guava is on version 19). This should have little impact on users, because Guava
is so stable.
> HDFS should then be patched to use the provided alternative to LimitInputStream, so that
downstream packagers, users, and application developers requiring more recent versions of
Guava (to fix bugs, to use new features, etc.) will be able to swap out the Guava dependency
without breaking Hadoop.
> Alternative: While Hadoop cannot predict the marking and removal of deprecated code,
it can, and should, avoid the use of @Beta classes and methods that do not offer guarantees.
If the dependency cannot be bumped, then it should be relatively trivial to provide an internal
class with the same functionality, that does not rely on the older version of Guava.



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

Mime
View raw message