[
https://issues.apache.org/jira/browse/HBASE-9667?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13782786#comment-13782786
]
Nicolas Liochon commented on HBASE-9667:
----------------------------------------
If I can rely on http://code.google.com/p/guava-libraries/wiki/ReleaseHistory,
these guava guys are not joking: v13 was in august 2012; in v14 (feb 1013) they
deprecated a feature and offered and replacement. In September 2013 they
removed the old feature => it's impossible to have a client depending on 3
versions that came into just a year. If it's confirmed, we will have to pay
extra attention each time we use this library, this is just not compatible with
our timeframes.
So I found 3 compilation issue when using guava 15:
- NullOutputStream -> there is one in org.apache.hadoop.io. Easy.
- LimitInputStream -> copy paste into hbase code base. Their Apache license
allows that.
- MapMaker -> Replaced with a concurrent map. See
http://code.google.com/p/guava-libraries/wiki/MapMakerMigration: ??At first
glance this behavior is tremendously useful, but the specific implementation of
this functionality behind a plain ConcurrentMap was riddled with issues. Having
a Map that auto-creates entries on get was simply a big mistake.?? Pinging
[~eclark] on this one as it may have in impact on performances.
The patch is with guava 15 to check how it behaves, but I plan to keep the
current version in our pom as hadoop 2.1 is on v11.0.2 (which is far too old as
well, but imho it's better to limit the gap for the moment).
Note that nothing guarantees us that we won't break our compatibility with
guava 15 in a later patch.
> NullOutputStream removed from Guava 15
> --------------------------------------
>
> Key: HBASE-9667
> URL: https://issues.apache.org/jira/browse/HBASE-9667
> Project: HBase
> Issue Type: Improvement
> Affects Versions: 0.98.0, 0.94.12, 0.96.1
> Reporter: Matt Greenfield
> Assignee: Nicolas Liochon
> Priority: Critical
> Attachments: 9667.v1.patch
>
>
> {{com.google.common.io.NullOutputStream}} was dropped in Guava 15.0 in favor
> of {{com.google.common.io.ByteStreams.nullOutputStream()}} which prevents
> projects on this artifact from upgrading from Guava 14 to Guava 15.
> {noformat}
> ERROR 2013-09-26 17:46:12,229 [hbase.master.MasterFileSystem] bootstrap
> org.apache.hadoop.hbase.DroppedSnapshotException: region: -ROOT-,,0
> at
> org.apache.hadoop.hbase.regionserver.HRegion.internalFlushcache(HRegion.java:1608)
> at
> org.apache.hadoop.hbase.regionserver.HRegion.internalFlushcache(HRegion.java:1482)
> at
> org.apache.hadoop.hbase.regionserver.HRegion.doClose(HRegion.java:1011)
> at
> org.apache.hadoop.hbase.regionserver.HRegion.close(HRegion.java:959)
> at
> org.apache.hadoop.hbase.regionserver.HRegion.close(HRegion.java:930)
> at
> org.apache.hadoop.hbase.master.MasterFileSystem.bootstrap(MasterFileSystem.java:447)
> at
> org.apache.hadoop.hbase.master.MasterFileSystem.checkRootDir(MasterFileSystem.java:387)
> at
> org.apache.hadoop.hbase.master.MasterFileSystem.createInitialFileSystemLayout(MasterFileSystem.java:134)
> at
> org.apache.hadoop.hbase.master.MasterFileSystem.<init>(MasterFileSystem.java:119)
> at
> org.apache.hadoop.hbase.master.HMaster.finishInitialization(HMaster.java:536)
> at org.apache.hadoop.hbase.master.HMaster.run(HMaster.java:395)
> at java.lang.Thread.run(Thread.java:680)
> Caused by: java.lang.NoClassDefFoundError:
> com/google/common/io/NullOutputStream
> at
> org.apache.hadoop.hbase.io.hfile.HFileWriterV2.close(HFileWriterV2.java:374)
> at
> org.apache.hadoop.hbase.regionserver.StoreFile$Writer.close(StoreFile.java:1283)
> at
> org.apache.hadoop.hbase.regionserver.Store.internalFlushCache(Store.java:836)
> at
> org.apache.hadoop.hbase.regionserver.Store.flushCache(Store.java:747)
> at
> org.apache.hadoop.hbase.regionserver.Store$StoreFlusherImpl.flushCache(Store.java:2229)
> at
> org.apache.hadoop.hbase.regionserver.HRegion.internalFlushcache(HRegion.java:1583)
> ... 11 more
> Caused by: java.lang.ClassNotFoundException:
> com.google.common.io.NullOutputStream
> at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
> at java.security.AccessController.doPrivileged(Native Method)
> at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
> at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
> at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
> at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
> ... 17 more
> {noformat}
--
This message was sent by Atlassian JIRA
(v6.1#6144)