Skip to content

Conversation

@viirya
Copy link
Member

@viirya viirya commented Sep 29, 2020

See https://issues.apache.org/jira/browse/HADOOP-17292 for details.

The change of mvn dependencies:

For Apache Hadoop Common:

< [INFO] \- org.wildfly.openssl:wildfly-openssl-java:jar:1.0.7.Final:provided                                                                                                                                                          
---                                                                                                                                                                                                                                    
> [INFO] +- org.wildfly.openssl:wildfly-openssl-java:jar:1.0.7.Final:provided                                                                                                                                                          
> [INFO] \- org.lz4:lz4-java:jar:1.7.1:provided     

For Apache Hadoop Kafka Library support:

[INFO] +- org.apache.kafka:kafka-clients:jar:2.4.0:compile
[INFO] |  +- com.github.luben:zstd-jni:jar:1.4.3-1:compile
< [INFO] |  \- org.lz4:lz4-java:jar:1.6.0:compile                                                                                                                                                                                      
---                                                                                                                                                                                                                                    
> [INFO] |  \- org.lz4:lz4-java:jar:1.7.1:compile  

For Apache Hadoop Tools Dist:

[INFO] +- org.apache.hadoop:hadoop-kafka:jar:3.4.0-SNAPSHOT:compile
[INFO] |  \- org.apache.kafka:kafka-clients:jar:2.4.0:compile
[INFO] |     +- com.github.luben:zstd-jni:jar:1.4.3-1:compile
< [INFO] |     \- org.lz4:lz4-java:jar:1.6.0:compile                                                                                                                                                                                   
---                                                                                                                                                                                                                                    
> [INFO] |     \- org.lz4:lz4-java:jar:1.7.1:compile     

@viirya viirya changed the title HADOOP-17292. Using snappy-java in Lz4Codec HADOOP-17292. Using lz4-java in Lz4Codec Sep 29, 2020
@viirya
Copy link
Member Author

viirya commented Sep 29, 2020

cc @dbtsai @sunchao


// Compress data
n = useLz4HC ? compressBytesDirectHC() : compressBytesDirect();
n = compressBytesDirect();
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

compressDirectBuf?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

fixed.

if (Lz4Codec.isNativeCodeLoaded()) {
conf.setBoolean(
conf.setBoolean(
CommonConfigurationKeys.IO_COMPRESSION_CODEC_LZ4_USELZ4HC_KEY,
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

indentation as you remove the { }

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

fixed.


if (compressor.getClass().isAssignableFrom(Lz4Compressor.class)
&& (NativeCodeLoader.isNativeCodeLoaded()))
if (compressor.getClass().isAssignableFrom(Lz4Compressor.class))
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can we add a compatibility test like snappy?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sure. Will add it later.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Added compatibility test.

@viirya viirya force-pushed the lz4-java branch 2 times, most recently from 10b027d to 4aefff4 Compare October 2, 2020 05:18
@dbtsai
Copy link
Member

dbtsai commented Oct 2, 2020

cc @steveloughran this is almost identical to #2297 Thanks!

@viirya
Copy link
Member Author

viirya commented Oct 4, 2020

@dbtsai
Copy link
Member

dbtsai commented Oct 7, 2020

@viirya can you rebase master?

@viirya
Copy link
Member Author

viirya commented Oct 7, 2020

Rebased. Thanks.

@dbtsai
Copy link
Member

dbtsai commented Oct 7, 2020

Gently ping @steveloughran This is almost identical to SnappyCodec one you merged. Could you help to review it? Thanks.

@hadoop-yetus
Copy link

💔 -1 overall

Vote Subsystem Runtime Logfile Comment
+0 🆗 reexec 2m 10s Docker mode activated.
_ Prechecks _
+1 💚 dupname 0m 1s No case conflicting files found.
+1 💚 @author 0m 0s The patch does not contain any @author tags.
+1 💚 0m 0s test4tests The patch appears to include 6 new or modified test files.
_ trunk Compile Tests _
+0 🆗 mvndep 6m 18s Maven dependency ordering for branch
+1 💚 mvninstall 27m 49s trunk passed
+1 💚 compile 25m 54s trunk passed with JDK Ubuntu-11.0.8+10-post-Ubuntu-0ubuntu118.04.1
+1 💚 compile 21m 50s trunk passed with JDK Private Build-1.8.0_265-8u265-b01-0ubuntu2~18.04-b01
+1 💚 checkstyle 3m 25s trunk passed
+1 💚 mvnsite 3m 13s trunk passed
+1 💚 shadedclient 17m 32s branch has no errors when building and testing our client artifacts.
+1 💚 javadoc 2m 3s trunk passed with JDK Ubuntu-11.0.8+10-post-Ubuntu-0ubuntu118.04.1
+1 💚 javadoc 2m 44s trunk passed with JDK Private Build-1.8.0_265-8u265-b01-0ubuntu2~18.04-b01
+0 🆗 spotbugs 0m 58s Used deprecated FindBugs config; considering switching to SpotBugs.
+0 🆗 findbugs 0m 36s branch/hadoop-project no findbugs output file (findbugsXml.xml)
_ Patch Compile Tests _
+0 🆗 mvndep 0m 33s Maven dependency ordering for patch
+1 💚 mvninstall 1m 47s the patch passed
+1 💚 compile 23m 56s the patch passed with JDK Ubuntu-11.0.8+10-post-Ubuntu-0ubuntu118.04.1
-1 ❌ cc 23m 56s /diff-compile-cc-root-jdkUbuntu-11.0.8+10-post-Ubuntu-0ubuntu118.04.1.txt root-jdkUbuntu-11.0.8+10-post-Ubuntu-0ubuntu118.04.1 with JDK Ubuntu-11.0.8+10-post-Ubuntu-0ubuntu118.04.1 generated 8 new + 155 unchanged - 8 fixed = 163 total (was 163)
+1 💚 golang 23m 56s the patch passed
-1 ❌ javac 23m 56s /diff-compile-javac-root-jdkUbuntu-11.0.8+10-post-Ubuntu-0ubuntu118.04.1.txt root-jdkUbuntu-11.0.8+10-post-Ubuntu-0ubuntu118.04.1 with JDK Ubuntu-11.0.8+10-post-Ubuntu-0ubuntu118.04.1 generated 2 new + 2051 unchanged - 1 fixed = 2053 total (was 2052)
+1 💚 compile 21m 13s the patch passed with JDK Private Build-1.8.0_265-8u265-b01-0ubuntu2~18.04-b01
-1 ❌ cc 21m 13s /diff-compile-cc-root-jdkPrivateBuild-1.8.0_265-8u265-b01-0ubuntu2~18.04-b01.txt root-jdkPrivateBuild-1.8.0_265-8u265-b01-0ubuntu218.04-b01 with JDK Private Build-1.8.0_265-8u265-b01-0ubuntu218.04-b01 generated 13 new + 150 unchanged - 13 fixed = 163 total (was 163)
+1 💚 golang 21m 13s the patch passed
-1 ❌ javac 21m 13s /diff-compile-javac-root-jdkPrivateBuild-1.8.0_265-8u265-b01-0ubuntu2~18.04-b01.txt root-jdkPrivateBuild-1.8.0_265-8u265-b01-0ubuntu218.04-b01 with JDK Private Build-1.8.0_265-8u265-b01-0ubuntu218.04-b01 generated 1 new + 1947 unchanged - 0 fixed = 1948 total (was 1947)
-0 ⚠️ checkstyle 3m 26s /diff-checkstyle-root.txt root: The patch generated 2 new + 132 unchanged - 1 fixed = 134 total (was 133)
+1 💚 mvnsite 3m 0s the patch passed
+1 💚 shellcheck 0m 0s There were no new shellcheck issues.
+1 💚 shelldocs 0m 35s There were no new shelldocs issues.
+1 💚 whitespace 0m 0s The patch has no whitespace issues.
+1 💚 xml 0m 4s The patch has no ill-formed XML file.
+1 💚 shadedclient 17m 5s patch has no errors when building and testing our client artifacts.
+1 💚 javadoc 1m 43s the patch passed with JDK Ubuntu-11.0.8+10-post-Ubuntu-0ubuntu118.04.1
+1 💚 javadoc 2m 49s the patch passed with JDK Private Build-1.8.0_265-8u265-b01-0ubuntu2~18.04-b01
+0 🆗 findbugs 0m 32s hadoop-project has no data from findbugs
_ Other Tests _
+1 💚 unit 0m 29s hadoop-project in the patch passed.
+1 💚 unit 11m 54s hadoop-common in the patch passed.
+1 💚 unit 12m 11s hadoop-mapreduce-client-nativetask in the patch passed.
-1 ❌ asflicense 1m 0s /patch-asflicense-problems.txt The patch generated 2 ASF License warnings.
228m 34s
Subsystem Report/Notes
Docker ClientAPI=1.40 ServerAPI=1.40 base: https://ci-hadoop.apache.org/job/hadoop-multibranch/job/PR-2350/8/artifact/out/Dockerfile
GITHUB PR #2350
Optional Tests dupname asflicense compile javac javadoc mvninstall mvnsite unit shadedclient xml cc findbugs checkstyle golang shellcheck shelldocs
uname Linux c5b2b3be1ba1 4.15.0-112-generic #113-Ubuntu SMP Thu Jul 9 23:41:39 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
Build tool maven
Personality dev-support/bin/hadoop.sh
git revision trunk / df4006e
Default Java Private Build-1.8.0_265-8u265-b01-0ubuntu2~18.04-b01
Multi-JDK versions /usr/lib/jvm/java-11-openjdk-amd64:Ubuntu-11.0.8+10-post-Ubuntu-0ubuntu118.04.1 /usr/lib/jvm/java-8-openjdk-amd64:Private Build-1.8.0_265-8u265-b01-0ubuntu2~18.04-b01
Test Results https://ci-hadoop.apache.org/job/hadoop-multibranch/job/PR-2350/8/testReport/
Max. process+thread count 1615 (vs. ulimit of 5500)
modules C: hadoop-project hadoop-common-project/hadoop-common hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-nativetask U: .
Console output https://ci-hadoop.apache.org/job/hadoop-multibranch/job/PR-2350/8/console
versions git=2.17.1 maven=3.6.0 shellcheck=0.4.6 findbugs=4.0.6
Powered by Apache Yetus 0.13.0-SNAPSHOT https://yetus.apache.org

This message was automatically generated.

Copy link
Contributor

@steveloughran steveloughran left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

seems more familiar now

  • will need extra docs (where?) to cover the change
  • this may be time for that hadoop-compression library which, even if the codec stays in hadoop-common, can declare the new JAR (and snappy java) as explicit dependencies. That way things including mapreduce client can just ask for hadoop-compression and get all the latest set of JARs as well as codecs, and critically, get the JAR versions consistent with what hadoop was built with

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

put into the same import block as org.sjf4j

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

They are already in same block, no?

import net.jpountz.lz4.LZ4Factory;
import net.jpountz.lz4.LZ4Compressor;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.io.compress.Compressor;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

final?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

thanks. added final.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

again, not in same import block as org.apache

Copy link
Member Author

@viirya viirya Oct 14, 2020

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Already in same block?

import net.jpountz.lz4.LZ4Factory;
import net.jpountz.lz4.LZ4SafeDecompressor;
import org.apache.hadoop.io.compress.Decompressor;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@viirya I think steveloughran is mentioning about the order of imports and blank line between import blocks.
https://github.com/steveloughran/formality/blob/master/styleguide/styleguide.md#imports

While the original file violates the coding stantdard and we usually avoid large diff just for fixing formatting issue, it would be ok to fix a few lines here.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

yeah, if things are mixed up, best to leave alone -at least for those files which get lots of changes. For something which rarely sees maintenance, you can make a stronger case for cleanup. I do it sometimes, but as I also get to field cherrypick merge pain, I don't go wild on it

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Shame the constructor can't throw exceptions direct.

Catch only the exception's known to be raised, and don't convert RTEs or, especially, Errors.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hmm, I tried to explicitly catch ClassNotFoundException, but the java compiler complains...

 exception java.lang.ClassNotFoundException is never thrown in body of corresponding try statement

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LZ4Factory seems to throw java.lang.AssertionError after catching unrecoverable exception.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ok, so what's best here?

  1. Catch AssertionError and wrap
  2. Catch throwable, but with something ahead of it which will catch and rethrow Error without wrapping. Because we shouldn't really be wrapping those high-priority problems that aren't generally things to ignore

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Let me just catch AssertionError and wrap it.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

add +t to the end of the string, so the specific error text isn't lost

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

thanks. added it.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The library also allow configuring the compression level, which perhaps we can add a Hadoop option to enable that later. This just use the default compression level.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah, sounds good. We can add it later if it is necessary.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nit: seems we no longer need the field useLz4HC with this.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Oh, yes.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

seems some of the methods in this class look exactly the same as in SnappyCompressor - perhaps we can do some refactoring later.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ok, currently this PR focuses on turning to use lz4-java. We can refactor compressor/decompressor classes later.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think this isn't necessary since it's called right before the call site?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We can remove the clear and limit calls at the call site.

// Re-initialize the lz4's output direct-buffer
    compressedDirectBuf.clear();
    compressedDirectBuf.limit(0);

But we cannot remove clear in compressDirectBuf method.

First, lz4-java cannot accept the compressedDirectBuf if it is called with limit(0).

[ERROR] Failures:                                                                                                                                                                                                                      
[ERROR]   TestCompressorDecompressor.testCompressorDecompressor:69  Expected to find 'testCompressorDecompressor error !!!' but got unexpected exception: net.jpountz.lz4.LZ4Exception: maxDestLen is too small                        
        at net.jpountz.lz4.LZ4JNICompressor.compress(LZ4JNICompressor.java:69)                                                                                                                                                         
        at net.jpountz.lz4.LZ4Compressor.compress(LZ4Compressor.java:158)                                                                                                                                                              
        at org.apache.hadoop.io.compress.lz4.Lz4Compressor.compressDirectBuf(Lz4Compressor.java:310)                                                                                                                                   
        at org.apache.hadoop.io.compress.lz4.Lz4Compressor.compress(Lz4Compressor.java:237)                                                                                                                                            
        at org.apache.hadoop.io.compress.CompressDecompressTester$CompressionTestStrategy$2.assertCompression(CompressDecompressTester.java:286)                                                                                       
        at org.apache.hadoop.io.compress.CompressDecompressTester.test(CompressDecompressTester.java:114)                                                                                                                              
        at org.apache.hadoop.io.compress.TestCompressorDecompressor.testCompressorDecompressor(TestCompressorDecompressor.java:66)                                                                                                     

Second, even we remove limit in the call site, one test still failed:

[ERROR] testCompressorDecompressor(org.apache.hadoop.io.compress.TestCompressorDecompressor)  Time elapsed: 0.539 s  <<< FAILURE!
java.lang.AssertionError: org.apache.hadoop.io.compress.lz4.Lz4Compressor_org.apache.hadoop.io.compress.lz4.Lz4Decompressor- empty stream compressed output size != 4 expected:<4> but was:<65796>
        at org.junit.Assert.fail(Assert.java:88)                                                                                                                                                                                       
        at org.junit.Assert.failNotEquals(Assert.java:834)                                               
        at org.junit.Assert.assertEquals(Assert.java:645)                                                                                                                                                                              
        at org.apache.hadoop.io.compress.CompressDecompressTester$CompressionTestStrategy$3.assertCompression(CompressDecompressTester.java:334)
        at org.apache.hadoop.io.compress.CompressDecompressTester.test(CompressDecompressTester.java:114)      
        at org.apache.hadoop.io.compress.TestCompressorDecompressor.testCompressorDecompressor(TestCompressorDecompressor.java:66)

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Okay makes sense.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't think this will ever happen but it's not a big deal.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nit: this comment doesn't add much value - it just state what is exactly being done in the code.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ok, removed.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

you can just call clear?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

sure.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

why is this needed?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

One test in hadoop-mapreduce-client-nativetask uses Lz4Codec. If we don't add lz4-java as test dependency, because it is provided scope in hadoop-common now, we will get class not found exception.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nit: perhaps some comments on this - not quite sure what it is testing.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ok, added some comment.

@viirya
Copy link
Member Author

viirya commented Oct 14, 2020

@steveloughran Thanks for reviewing this change.

this may be time for that hadoop-compression library which, even if the codec stays in hadoop-common, can declare the new JAR (and snappy java) as explicit dependencies. That way things including mapreduce client can just ask for hadoop-compression and get all the latest set of JARs as well as codecs, and critically, get the JAR versions consistent with what hadoop was built with

Yea, we will make hadoop-compression after this change. As we change snappy and lz4 codec to use java library, it actually makes easier to prepare hadoop-compression as if we want to move codec, we don't need to move native codes, related native code compilation stuffs..etc.

will need extra docs (where?) to cover the change

Not sure where is good, we will look at proper place to put extra docs.

@viirya
Copy link
Member Author

viirya commented Oct 14, 2020

@sunchao Thanks for review. I addressed your comments, please let me know if you have more comments.

Copy link
Member

@sunchao sunchao left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks @viirya . This PR looks good to me. @steveloughran would appreciate if you can take another pass. Thanks.

@dbtsai
Copy link
Member

dbtsai commented Oct 21, 2020

@viirya can you resolve the conflict? Thanks.

@viirya
Copy link
Member Author

viirya commented Oct 21, 2020

@dbtsai Resolved. Thanks.

@sunchao
Copy link
Member

sunchao commented Oct 21, 2020

kindly ping @steveloughran

@hadoop-yetus
Copy link

💔 -1 overall

Vote Subsystem Runtime Logfile Comment
+0 🆗 reexec 1m 13s Docker mode activated.
_ Prechecks _
+1 💚 dupname 0m 0s No case conflicting files found.
+1 💚 @author 0m 0s The patch does not contain any @author tags.
+1 💚 0m 0s test4tests The patch appears to include 6 new or modified test files.
_ trunk Compile Tests _
+0 🆗 mvndep 11m 37s Maven dependency ordering for branch
+1 💚 mvninstall 23m 6s trunk passed
+1 💚 compile 22m 3s trunk passed with JDK Ubuntu-11.0.8+10-post-Ubuntu-0ubuntu118.04.1
+1 💚 compile 18m 27s trunk passed with JDK Private Build-1.8.0_265-8u265-b01-0ubuntu2~18.04-b01
+1 💚 checkstyle 2m 57s trunk passed
+1 💚 mvnsite 2m 45s trunk passed
+1 💚 shadedclient 17m 14s branch has no errors when building and testing our client artifacts.
+1 💚 javadoc 1m 46s trunk passed with JDK Ubuntu-11.0.8+10-post-Ubuntu-0ubuntu118.04.1
+1 💚 javadoc 2m 39s trunk passed with JDK Private Build-1.8.0_265-8u265-b01-0ubuntu2~18.04-b01
+0 🆗 spotbugs 0m 52s Used deprecated FindBugs config; considering switching to SpotBugs.
+0 🆗 findbugs 0m 36s branch/hadoop-project no findbugs output file (findbugsXml.xml)
_ Patch Compile Tests _
+0 🆗 mvndep 0m 32s Maven dependency ordering for patch
+1 💚 mvninstall 1m 30s the patch passed
+1 💚 compile 20m 45s the patch passed with JDK Ubuntu-11.0.8+10-post-Ubuntu-0ubuntu118.04.1
-1 ❌ cc 20m 45s /diff-compile-cc-root-jdkUbuntu-11.0.8+10-post-Ubuntu-0ubuntu118.04.1.txt root-jdkUbuntu-11.0.8+10-post-Ubuntu-0ubuntu118.04.1 with JDK Ubuntu-11.0.8+10-post-Ubuntu-0ubuntu118.04.1 generated 24 new + 148 unchanged - 24 fixed = 172 total (was 172)
+1 💚 golang 20m 45s the patch passed
-1 ❌ javac 20m 45s /diff-compile-javac-root-jdkUbuntu-11.0.8+10-post-Ubuntu-0ubuntu118.04.1.txt root-jdkUbuntu-11.0.8+10-post-Ubuntu-0ubuntu118.04.1 with JDK Ubuntu-11.0.8+10-post-Ubuntu-0ubuntu118.04.1 generated 2 new + 2051 unchanged - 1 fixed = 2053 total (was 2052)
+1 💚 compile 18m 23s the patch passed with JDK Private Build-1.8.0_265-8u265-b01-0ubuntu2~18.04-b01
-1 ❌ cc 18m 23s /diff-compile-cc-root-jdkPrivateBuild-1.8.0_265-8u265-b01-0ubuntu2~18.04-b01.txt root-jdkPrivateBuild-1.8.0_265-8u265-b01-0ubuntu218.04-b01 with JDK Private Build-1.8.0_265-8u265-b01-0ubuntu218.04-b01 generated 29 new + 143 unchanged - 29 fixed = 172 total (was 172)
+1 💚 golang 18m 23s the patch passed
-1 ❌ javac 18m 23s /diff-compile-javac-root-jdkPrivateBuild-1.8.0_265-8u265-b01-0ubuntu2~18.04-b01.txt root-jdkPrivateBuild-1.8.0_265-8u265-b01-0ubuntu218.04-b01 with JDK Private Build-1.8.0_265-8u265-b01-0ubuntu218.04-b01 generated 1 new + 1947 unchanged - 0 fixed = 1948 total (was 1947)
-0 ⚠️ checkstyle 3m 21s /diff-checkstyle-root.txt root: The patch generated 2 new + 132 unchanged - 1 fixed = 134 total (was 133)
+1 💚 mvnsite 2m 46s the patch passed
+1 💚 shellcheck 0m 0s There were no new shellcheck issues.
+1 💚 shelldocs 0m 34s There were no new shelldocs issues.
-1 ❌ whitespace 0m 0s /whitespace-tabs.txt The patch 1 line(s) with tabs.
+1 💚 xml 0m 4s The patch has no ill-formed XML file.
+1 💚 shadedclient 16m 59s patch has no errors when building and testing our client artifacts.
+1 💚 javadoc 1m 45s the patch passed with JDK Ubuntu-11.0.8+10-post-Ubuntu-0ubuntu118.04.1
+1 💚 javadoc 2m 42s the patch passed with JDK Private Build-1.8.0_265-8u265-b01-0ubuntu2~18.04-b01
+0 🆗 findbugs 0m 33s hadoop-project has no data from findbugs
_ Other Tests _
+1 💚 unit 0m 30s hadoop-project in the patch passed.
+1 💚 unit 11m 31s hadoop-common in the patch passed.
+1 💚 unit 11m 34s hadoop-mapreduce-client-nativetask in the patch passed.
-1 ❌ asflicense 0m 55s /patch-asflicense-problems.txt The patch generated 2 ASF License warnings.
210m 56s
Subsystem Report/Notes
Docker ClientAPI=1.40 ServerAPI=1.40 base: https://ci-hadoop.apache.org/job/hadoop-multibranch/job/PR-2350/9/artifact/out/Dockerfile
GITHUB PR #2350
Optional Tests dupname asflicense compile javac javadoc mvninstall mvnsite unit shadedclient xml cc findbugs checkstyle golang shellcheck shelldocs
uname Linux e7f55b194c7b 4.15.0-112-generic #113-Ubuntu SMP Thu Jul 9 23:41:39 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
Build tool maven
Personality dev-support/bin/hadoop.sh
git revision trunk / 7f8ef76
Default Java Private Build-1.8.0_265-8u265-b01-0ubuntu2~18.04-b01
Multi-JDK versions /usr/lib/jvm/java-11-openjdk-amd64:Ubuntu-11.0.8+10-post-Ubuntu-0ubuntu118.04.1 /usr/lib/jvm/java-8-openjdk-amd64:Private Build-1.8.0_265-8u265-b01-0ubuntu2~18.04-b01
Test Results https://ci-hadoop.apache.org/job/hadoop-multibranch/job/PR-2350/9/testReport/
Max. process+thread count 2613 (vs. ulimit of 5500)
modules C: hadoop-project hadoop-common-project/hadoop-common hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-nativetask U: .
Console output https://ci-hadoop.apache.org/job/hadoop-multibranch/job/PR-2350/9/console
versions git=2.17.1 maven=3.6.0 shellcheck=0.4.6 findbugs=4.1.3
Powered by Apache Yetus 0.13.0-SNAPSHOT https://yetus.apache.org

This message was automatically generated.

@hadoop-yetus
Copy link

💔 -1 overall

Vote Subsystem Runtime Logfile Comment
+0 🆗 reexec 0m 33s Docker mode activated.
_ Prechecks _
+1 💚 dupname 0m 1s No case conflicting files found.
+1 💚 @author 0m 0s The patch does not contain any @author tags.
+1 💚 0m 0s test4tests The patch appears to include 6 new or modified test files.
_ trunk Compile Tests _
+0 🆗 mvndep 11m 50s Maven dependency ordering for branch
+1 💚 mvninstall 21m 21s trunk passed
+1 💚 compile 19m 54s trunk passed with JDK Ubuntu-11.0.8+10-post-Ubuntu-0ubuntu118.04.1
+1 💚 compile 17m 25s trunk passed with JDK Private Build-1.8.0_265-8u265-b01-0ubuntu2~18.04-b01
+1 💚 checkstyle 2m 51s trunk passed
+1 💚 mvnsite 3m 18s trunk passed
+1 💚 shadedclient 15m 45s branch has no errors when building and testing our client artifacts.
+1 💚 javadoc 2m 26s trunk passed with JDK Ubuntu-11.0.8+10-post-Ubuntu-0ubuntu118.04.1
+1 💚 javadoc 3m 21s trunk passed with JDK Private Build-1.8.0_265-8u265-b01-0ubuntu2~18.04-b01
+0 🆗 spotbugs 1m 2s Used deprecated FindBugs config; considering switching to SpotBugs.
+0 🆗 findbugs 0m 47s branch/hadoop-project no findbugs output file (findbugsXml.xml)
_ Patch Compile Tests _
+0 🆗 mvndep 0m 36s Maven dependency ordering for patch
+1 💚 mvninstall 1m 37s the patch passed
+1 💚 compile 19m 14s the patch passed with JDK Ubuntu-11.0.8+10-post-Ubuntu-0ubuntu118.04.1
-1 ❌ cc 19m 14s /diff-compile-cc-root-jdkUbuntu-11.0.8+10-post-Ubuntu-0ubuntu118.04.1.txt root-jdkUbuntu-11.0.8+10-post-Ubuntu-0ubuntu118.04.1 with JDK Ubuntu-11.0.8+10-post-Ubuntu-0ubuntu118.04.1 generated 36 new + 136 unchanged - 36 fixed = 172 total (was 172)
+1 💚 golang 19m 14s the patch passed
-1 ❌ javac 19m 14s /diff-compile-javac-root-jdkUbuntu-11.0.8+10-post-Ubuntu-0ubuntu118.04.1.txt root-jdkUbuntu-11.0.8+10-post-Ubuntu-0ubuntu118.04.1 with JDK Ubuntu-11.0.8+10-post-Ubuntu-0ubuntu118.04.1 generated 2 new + 2051 unchanged - 1 fixed = 2053 total (was 2052)
+1 💚 compile 17m 28s the patch passed with JDK Private Build-1.8.0_265-8u265-b01-0ubuntu2~18.04-b01
-1 ❌ cc 17m 28s /diff-compile-cc-root-jdkPrivateBuild-1.8.0_265-8u265-b01-0ubuntu2~18.04-b01.txt root-jdkPrivateBuild-1.8.0_265-8u265-b01-0ubuntu218.04-b01 with JDK Private Build-1.8.0_265-8u265-b01-0ubuntu218.04-b01 generated 11 new + 161 unchanged - 11 fixed = 172 total (was 172)
+1 💚 golang 17m 28s the patch passed
-1 ❌ javac 17m 28s /diff-compile-javac-root-jdkPrivateBuild-1.8.0_265-8u265-b01-0ubuntu2~18.04-b01.txt root-jdkPrivateBuild-1.8.0_265-8u265-b01-0ubuntu218.04-b01 with JDK Private Build-1.8.0_265-8u265-b01-0ubuntu218.04-b01 generated 1 new + 1947 unchanged - 0 fixed = 1948 total (was 1947)
-0 ⚠️ checkstyle 3m 17s /diff-checkstyle-root.txt root: The patch generated 2 new + 132 unchanged - 1 fixed = 134 total (was 133)
+1 💚 mvnsite 3m 21s the patch passed
+1 💚 shellcheck 0m 0s There were no new shellcheck issues.
+1 💚 shelldocs 0m 46s There were no new shelldocs issues.
-1 ❌ whitespace 0m 0s /whitespace-tabs.txt The patch 1 line(s) with tabs.
+1 💚 xml 0m 4s The patch has no ill-formed XML file.
+1 💚 shadedclient 15m 7s patch has no errors when building and testing our client artifacts.
+1 💚 javadoc 2m 23s the patch passed with JDK Ubuntu-11.0.8+10-post-Ubuntu-0ubuntu118.04.1
+1 💚 javadoc 3m 15s the patch passed with JDK Private Build-1.8.0_265-8u265-b01-0ubuntu2~18.04-b01
+0 🆗 findbugs 0m 44s hadoop-project has no data from findbugs
_ Other Tests _
+1 💚 unit 0m 44s hadoop-project in the patch passed.
+1 💚 unit 12m 1s hadoop-common in the patch passed.
+1 💚 unit 10m 52s hadoop-mapreduce-client-nativetask in the patch passed.
-1 ❌ asflicense 1m 7s /patch-asflicense-problems.txt The patch generated 2 ASF License warnings.
205m 43s
Subsystem Report/Notes
Docker ClientAPI=1.40 ServerAPI=1.40 base: https://ci-hadoop.apache.org/job/hadoop-multibranch/job/PR-2350/10/artifact/out/Dockerfile
GITHUB PR #2350
Optional Tests dupname asflicense compile javac javadoc mvninstall mvnsite unit shadedclient xml cc findbugs checkstyle golang shellcheck shelldocs
uname Linux 738878d6c2d2 4.15.0-58-generic #64-Ubuntu SMP Tue Aug 6 11:12:41 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux
Build tool maven
Personality dev-support/bin/hadoop.sh
git revision trunk / 7f8ef76
Default Java Private Build-1.8.0_265-8u265-b01-0ubuntu2~18.04-b01
Multi-JDK versions /usr/lib/jvm/java-11-openjdk-amd64:Ubuntu-11.0.8+10-post-Ubuntu-0ubuntu118.04.1 /usr/lib/jvm/java-8-openjdk-amd64:Private Build-1.8.0_265-8u265-b01-0ubuntu2~18.04-b01
Test Results https://ci-hadoop.apache.org/job/hadoop-multibranch/job/PR-2350/10/testReport/
Max. process+thread count 3249 (vs. ulimit of 5500)
modules C: hadoop-project hadoop-common-project/hadoop-common hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-nativetask U: .
Console output https://ci-hadoop.apache.org/job/hadoop-multibranch/job/PR-2350/10/console
versions git=2.17.1 maven=3.6.0 shellcheck=0.4.6 findbugs=4.1.3
Powered by Apache Yetus 0.13.0-SNAPSHOT https://yetus.apache.org

This message was automatically generated.

@sunchao
Copy link
Member

sunchao commented Nov 6, 2020

Another kindly ping @steveloughran . I think @viirya has resolved all your comments so please take a look. Otherwise I'll merge this next week. Thanks.

@iwasakims
Copy link
Member

I got a portability issue on bundled snappy .so of snappy-java in xerial/snappy-java#256. It could be downside that we can not directly control the portability. While I could not find how the bundled lz4 is built yet, it is enough portable since it has no dependency on other library?

@viirya
Copy link
Member Author

viirya commented Nov 7, 2020

I got a portability issue on bundled snappy .so of snappy-java in xerial/snappy-java#256. It could be downside that we can not directly control the portability. While I could not find how the bundled lz4 is built yet, it is enough portable since it has no dependency on other library?

Thanks for asking. The underlying of lz4-java is lz4 (https://lz4.github.io/lz4/), I think it is the same as current Hadoop's lz4 library.

LZ4 - Fast LZ compression algorithm
   Copyright (C) 2011-present, Yann Collet.
...
   You can contact the author at :
    - LZ4 homepage : http://www.lz4.org
    - LZ4 source repository : https://github.com/lz4/lz4

So I think it should be as portable as before?

BTW, for snappy-java and lz4-java, if no native library for your platform is found, it will fallback pure-java implementation.

@viirya
Copy link
Member Author

viirya commented Nov 9, 2020

Regarding whitespace | 0m 0s | /whitespace-tabs.txt:

hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-nativetask/src/main/native/lz4/lz4.c:1705: /* Currently the fast loop shows a regression on qualcomm arm chips. */

This lz4.c is copied from hadoop-common-project/hadoop-common/src/main/native/src/org/apache/hadoop/io/compress/lz4/lz4.c without change.

@iwasakims
Copy link
Member

BTW, for snappy-java and lz4-java, if no native library for your platform is found, it will fallback pure-java implementation.

Yeah. In the snappy-java case, native library was provided but the version on the dependency (libstdc++) did not match. Falling back to pure-java impl did not kick in. I think lz4-java has not such a dependency.

@iwasakims
Copy link
Member

@dbtsai Let me post a patch on HADOOP-17369.

@viirya
Copy link
Member Author

viirya commented Nov 9, 2020

Thanks @iwasakims

Copy link
Member

@iwasakims iwasakims left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm +1 overall. will wait for comments of @steveloughran some time.

@hadoop-yetus

This comment has been minimized.

@dbtsai
Copy link
Member

dbtsai commented Nov 16, 2020

Gently ping @steveloughran and @sunchao. @viirya can you update the pom again due to merge conflict? Thanks!

@apache apache deleted a comment from hadoop-yetus Nov 17, 2020
@steveloughran
Copy link
Contributor

LGTM. Only issue is should the catch be for all of Throwable or a subset. I think I'll be happy to go with it as is

Two checkstyles to deal with; deprecation warning is notthing to worry about

./hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/io/compress/CompressDecompressTester.java:476:    if (compressor.getClass().isAssignableFrom(Lz4Compressor.class)): 'if' construct must use '{}'s. [NeedBraces]
./hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/io/compress/TestCodec.java:79:import org.junit.Assert;:8: Unused import - org.junit.Assert. [UnusedImports]

@steveloughran steveloughran added dependencies Pull requests that update a dependency file enhancement labels Nov 17, 2020
@viirya
Copy link
Member Author

viirya commented Nov 18, 2020

Thanks @steveloughran!

@hadoop-yetus

This comment has been minimized.

@hadoop-yetus

This comment has been minimized.

@sunchao sunchao merged commit 34aa613 into apache:trunk Nov 18, 2020
@sunchao
Copy link
Member

sunchao commented Nov 18, 2020

Thanks @steveloughran for the LGTM. The last run looks good and I just merged this into trunk. Thanks @viirya for the contribution and everyone for reviewing!

@viirya
Copy link
Member Author

viirya commented Nov 18, 2020

Thanks all!

@steveloughran
Copy link
Contributor

Ok. Let's leave to simmer in trunk for the weekend and we can worry about backporting to branch-3.3

sunchao pushed a commit to sunchao/hadoop that referenced this pull request Dec 29, 2020
sunchao pushed a commit that referenced this pull request Dec 29, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependencies Pull requests that update a dependency file enhancement

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants