Skip to content

Commit e741fd6

Browse files
authored
[Build] Build hdfs fixture faster and less (#118801)
The building of the shadowed hdfs2 and hdfs3 fixtures takes quite long time due to being 51 and 80mb in size. By removing non used dependencies from the shadow jar creation we can speed up this significantly. Also we avoid building hdfs fixture jars now for compile only (resulting in no shadow jar creation for precommit checks)
1 parent 5663efa commit e741fd6

File tree

3 files changed

+66
-21
lines changed

3 files changed

+66
-21
lines changed

test/fixtures/hdfs-fixture/build.gradle

Lines changed: 62 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,10 @@
1010
apply plugin: 'elasticsearch.java'
1111
apply plugin: 'com.gradleup.shadow'
1212

13+
1314
import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar
1415

1516
configurations {
16-
// all {
17-
// transitive = true
18-
// }
1917
hdfs2
2018
hdfs3
2119
consumable("shadowedHdfs2")
@@ -27,20 +25,76 @@ dependencies {
2725
transitive false
2826
}
2927
compileOnly "junit:junit:${versions.junit}"
30-
hdfs2 "org.apache.hadoop:hadoop-minicluster:2.8.5"
31-
hdfs3 "org.apache.hadoop:hadoop-minicluster:3.3.1"
3228

29+
def commonExcludes = [
30+
[group: "org.apache.commons", module: "commons-compress"],
31+
[group: "org.apache.hadoop", module: "hadoop-mapreduce-client-app"],
32+
[group: "org.apache.hadoop", module: "hadoop-mapreduce-client-core"],
33+
[group: "org.apache.hadoop", module: "hadoop-mapreduce-client-hs"],
34+
[group: "org.apache.hadoop", module: "hadoop-mapreduce-client-jobclient"],
35+
[group: "org.apache.hadoop", module: "hadoop-yarn-server-tests"],
36+
[group: "org.apache.httpcomponents", module: "httpclient"],
37+
[group: "org.apache.zookeeper", module: "zookeeper"],
38+
[group: "org.apache.curator", module: "curator-recipes"],
39+
[group: "org.apache.curator", module: "curator-client"],
40+
[group: "org.apache.curator", module: "curator-framework"],
41+
[group: "org.apache.avro", module: "avro"],
42+
[group: "log4j", module: "log4j"],
43+
[group: "io.netty", module: "netty-all"],
44+
[group: "io.netty", module: "netty"],
45+
[group: "com.squareup.okhttp", module: "okhttp"],
46+
[group: "com.google.guava", module: "guava"],
47+
[group: "com.google.code.gson", module: "gson"],
48+
[group: "javax.servlet.jsp", module: "jsp-api"],
49+
[group: "org.fusesource.leveldbjni", module: "leveldbjni-all"],
50+
[group: "commons-cli", module: "commons-cli"],
51+
[group: "org.mortbay.jetty", module: "servlet-api"],
52+
[group: "commons-logging", module: "commons-logging"],
53+
[group: "org.slf4j", module: "slf4j-log4j12"],
54+
[group: "commons-codec", module: "commons-codec"],
55+
[group: "com.sun.jersey", module: "jersey-core"],
56+
[group: "com.sun.jersey", module: "jersey-json"],
57+
[group: "com.google.code.findbugs", module: "jsr305"],
58+
[group: "com.sun.jersey", module: "jersey-json"],
59+
[group: "com.nimbusds", module: "nimbus-jose-jwt"],
60+
[group: "com.jcraft", module: "jsch"],
61+
[group: "org.slf4j", module: "slf4j-api"],
62+
]
63+
64+
hdfs2("org.apache.hadoop:hadoop-minicluster:2.8.5") {
65+
commonExcludes.each { exclude it }
66+
exclude group: "org.apache.commons", module: "commons-math3"
67+
exclude group: "xmlenc", module: "xmlenc"
68+
exclude group: "net.java.dev.jets3t", module: "jets3t"
69+
exclude group: "org.apache.directory.server", module: "apacheds-i18n"
70+
exclude group: "xerces", module: "xercesImpl"
71+
}
72+
73+
hdfs3("org.apache.hadoop:hadoop-minicluster:3.3.1") {
74+
commonExcludes.each { exclude it }
75+
exclude group: "dnsjava", module: "dnsjava"
76+
exclude group: "com.google.inject.extensions", module: "guice-servlet"
77+
exclude group: "com.google.inject", module: "guice"
78+
exclude group: "com.microsoft.sqlserver", module: "mssql-jdbc"
79+
exclude group: "com.sun.jersey.contribs", module: "jersey-guice"
80+
exclude group: "com.zaxxer", module: "HikariCP-java7"
81+
exclude group: "com.sun.jersey", module: "jersey-server"
82+
exclude group: "org.bouncycastle", module: "bcpkix-jdk15on"
83+
exclude group: "org.bouncycastle", module: "bcprov-jdk15on"
84+
exclude group: "org.ehcache", module: "ehcache"
85+
exclude group: "org.apache.geronimo.specs", module: "geronimo-jcache_1.0_spec"
86+
exclude group: "org.xerial.snappy", module: "snappy-java"
87+
}
3388
}
3489

3590
tasks.named("shadowJar").configure {
3691
archiveClassifier.set("hdfs3")
3792
// fix issues with signed jars
38-
3993
relocate("org.apache.hadoop", "fixture.hdfs3.org.apache.hadoop") {
4094
exclude "org.apache.hadoop.hdfs.protocol.ClientProtocol"
4195
exclude "org.apache.hadoop.ipc.StandbyException"
4296
}
43-
configurations << project.configurations.hdfs3
97+
configurations.add(project.configurations.hdfs3)
4498
}
4599

46100
def hdfs2Jar = tasks.register("hdfs2jar", ShadowJar) {
@@ -50,26 +104,15 @@ def hdfs2Jar = tasks.register("hdfs2jar", ShadowJar) {
50104
}
51105
archiveClassifier.set("hdfs2")
52106
from sourceSets.main.output
53-
configurations << project.configurations.hdfs2
107+
configurations.add(project.configurations.hdfs2)
54108
}
55109

56110
tasks.withType(ShadowJar).configureEach {
57111
dependencies {
58-
// exclude(dependency('commons-io:commons-io:2.8.0'))
59112
exclude(dependency("com.carrotsearch.randomizedtesting:randomizedtesting-runner:.*"))
60113
exclude(dependency("junit:junit:.*"))
61-
exclude(dependency("org.slf4j:slf4j-api:.*"))
62-
exclude(dependency("com.google.guava:guava:.*"))
63-
exclude(dependency("org.apache.commons:commons-compress:.*"))
64-
exclude(dependency("commons-logging:commons-logging:.*"))
65-
exclude(dependency("commons-codec:commons-codec:.*"))
66-
exclude(dependency("org.apache.httpcomponents:httpclient:.*"))
67114
exclude(dependency("org.apache.httpcomponents:httpcore:.*"))
68115
exclude(dependency("org.apache.logging.log4j:log4j-1.2-api:.*"))
69-
exclude(dependency("log4j:log4j:.*"))
70-
exclude(dependency("io.netty:.*:.*"))
71-
exclude(dependency("com.nimbusds:nimbus-jose-jwt:.*"))
72-
exclude(dependency("commons-cli:commons-cli:1.2"))
73116
exclude(dependency("net.java.dev.jna:jna:.*"))
74117
exclude(dependency("org.objenesis:objenesis:.*"))
75118
exclude(dependency('com.fasterxml.jackson.core:.*:.*'))

x-pack/plugin/searchable-snapshots/qa/hdfs/build.gradle

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,8 @@ apply plugin: 'elasticsearch.internal-available-ports'
1212
dependencies {
1313
clusterPlugins project(':plugins:repository-hdfs')
1414
javaRestTestImplementation(testArtifact(project(xpackModule('searchable-snapshots'))))
15-
javaRestTestImplementation project(path: ':test:fixtures:hdfs-fixture', configuration:"shadowedHdfs2")
15+
javaRestTestCompileOnly project(path: ':test:fixtures:hdfs-fixture')
16+
javaRestTestRuntimeOnly project(path: ':test:fixtures:hdfs-fixture', configuration:"shadowedHdfs2")
1617
javaRestTestImplementation project(':test:fixtures:krb5kdc-fixture')
1718
javaRestTestRuntimeOnly "com.google.guava:guava:16.0.1"
1819
javaRestTestRuntimeOnly "commons-cli:commons-cli:1.2"

x-pack/plugin/snapshot-repo-test-kit/qa/hdfs/build.gradle

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,8 @@ apply plugin: 'elasticsearch.rest-resources'
1010

1111
dependencies {
1212
javaRestTestImplementation testArtifact(project(xpackModule('snapshot-repo-test-kit')))
13-
javaRestTestImplementation project(path: ':test:fixtures:hdfs-fixture', configuration:"shadow")
13+
javaRestTestCompileOnly project(path: ':test:fixtures:hdfs-fixture')
14+
javaRestTestRuntimeOnly project(path: ':test:fixtures:hdfs-fixture', configuration:"shadow")
1415
javaRestTestImplementation project(':test:fixtures:krb5kdc-fixture')
1516
javaRestTestImplementation "org.slf4j:slf4j-api:${versions.slf4j}"
1617
javaRestTestImplementation "org.slf4j:slf4j-simple:${versions.slf4j}"

0 commit comments

Comments
 (0)