Skip to content

Commit

Permalink
Remove use of Cloudflare zlib (elastic#84680) (elastic#84696)
Browse files Browse the repository at this point in the history
Relates to elastic#81662. This library isn't ready for public consumption.
Remove it from the Docker build.
  • Loading branch information
pugnascotia authored Mar 7, 2022
1 parent e4fef46 commit b7f2819
Show file tree
Hide file tree
Showing 5 changed files with 7 additions and 67 deletions.
21 changes: 2 additions & 19 deletions distribution/docker/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,6 @@ apply plugin: 'elasticsearch.test.fixtures'
apply plugin: 'elasticsearch.internal-distribution-download'
apply plugin: 'elasticsearch.rest-resources'

ext.cloudflareZlibVersion = '1.2.8'

String buildId = providers.systemProperty('build.id').getOrNull()
boolean useLocalArtifacts = buildId != null && buildId.isBlank() == false

Expand All @@ -36,15 +34,6 @@ repositories {
content { includeGroup 'krallin' }
}

ivy {
url 'https://github.com/'
patternLayout {
artifact '/[organisation]/[module]/archive/refs/tags/v[revision].[ext]'
}
metadataSources { artifact() }
content { includeGroup 'cloudflare' }
}

// Cloud builds bundle some beats
ivy {
if (useLocalArtifacts) {
Expand Down Expand Up @@ -73,7 +62,6 @@ configurations {
allPlugins
filebeat
metricbeat
cloudflareZlib
}

String beatsArch = Architecture.current() == Architecture.AARCH64 ? 'arm64' : 'x86_64'
Expand All @@ -87,7 +75,6 @@ dependencies {
allPlugins project(path: ':plugins', configuration: 'allPlugins')
filebeat "beats:filebeat:${VersionProperties.elasticsearch}:${beatsArch}@tar.gz"
metricbeat "beats:metricbeat:${VersionProperties.elasticsearch}:${beatsArch}@tar.gz"
cloudflareZlib "cloudflare:zlib:${cloudflareZlibVersion}@tar.gz"
}

ext.expansions = { Architecture architecture, DockerBase base ->
Expand All @@ -112,8 +99,7 @@ ext.expansions = { Architecture architecture, DockerBase base ->
'docker_base' : base.name().toLowerCase(),
'version' : VersionProperties.elasticsearch,
'major_minor_version': "${major}.${minor}",
'retry' : ShellRetry,
'zlib_version' : cloudflareZlibVersion
'retry' : ShellRetry
]
}

Expand Down Expand Up @@ -302,8 +288,7 @@ void addTransformDockerContextTask(Architecture architecture, DockerBase base) {
eachFile { FileCopyDetails details ->
if (details.name.equals("Dockerfile")) {
filter { String filename ->
String result = filename.replaceAll('^RUN curl.*artifacts-no-kpi.*$', "COPY ${distributionName} /tmp/elasticsearch.tar.gz")
return result.replaceAll('^RUN curl.*cloudflare/zlib.*$', "COPY zlib-${cloudflareZlibVersion}.tar.gz /tmp")
return filename.replaceAll('^RUN curl.*artifacts-no-kpi.*$', "COPY ${distributionName} /tmp/elasticsearch.tar.gz")
}
}
}
Expand All @@ -317,8 +302,6 @@ void addTransformDockerContextTask(Architecture architecture, DockerBase base) {
from configurations.dockerSource
}

from configurations.cloudflareZlib

if (base == DockerBase.IRON_BANK) {
from (configurations.tini) {
rename { _ -> 'tini' }
Expand Down
29 changes: 0 additions & 29 deletions distribution/docker/src/docker/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -25,32 +25,6 @@ ARG BASE_IMAGE=ironbank/redhat/ubi/ubi8
ARG BASE_TAG=8.5
<% } %>
################################################################################
# Build stage 0 `zlib`:
# Compile zlib for the current architecture
################################################################################
FROM ${base_image} AS zlib
<% if (docker_base == 'default' || docker_base == 'cloud') { %>
RUN <%= retry.loop(package_manager, "${package_manager} update && DEBIAN_FRONTEND=noninteractive ${package_manager} install -y curl gcc make") %>
<% } else { %>
RUN <%= retry.loop(package_manager, "${package_manager} install -y curl gcc make tar gzip") %>
<% } %>
<%
// Fetch the zlib source. Keep this command on one line - it is replaced
// with a `COPY` during local builds.
%>
WORKDIR /tmp
RUN curl --retry 10 -S -L -o zlib-${zlib_version}.tar.gz https://github.com/cloudflare/zlib/archive/refs/tags/v${zlib_version}.tar.gz
RUN echo "7e393976368975446b263ae4143fb404bc33bf3b436e72007700b5b88e5be332cd461cdec42d31a4b6dffdca2368550f01b9fa1165d81c0aa818bbf2b1ac191e zlib-${zlib_version}.tar.gz" \\
| sha512sum --check -
RUN tar xf zlib-${zlib_version}.tar.gz
WORKDIR /tmp/zlib-${zlib_version}
RUN ./configure --prefix=/usr/local/cloudflare-zlib && make && make install
################################################################################
# Build stage 1 `builder`:
# Extract Elasticsearch artifact
Expand Down Expand Up @@ -162,7 +136,6 @@ RUN chmod -R 0555 /opt/plugins
################################################################################
# Build stage 2 (the actual Elasticsearch image):
#
# Copy zlib from stage 2
# Copy elasticsearch from stage 1
# Add entrypoint
################################################################################
Expand Down Expand Up @@ -224,14 +197,12 @@ WORKDIR /usr/share/elasticsearch
COPY --from=builder --chown=0:0 /usr/share/elasticsearch /usr/share/elasticsearch
COPY --from=builder --chown=0:0 /bin/tini /bin/tini
COPY --from=zlib --chown=0:0 /usr/local/cloudflare-zlib /usr/local/cloudflare-zlib
<% if (docker_base == 'cloud') { %>
COPY --from=builder --chown=0:0 /opt /opt
<% } %>
ENV PATH /usr/share/elasticsearch/bin:\$PATH
ENV ES_ZLIB_PATH /usr/local/cloudflare-zlib/lib
COPY ${bin_dir}/docker-entrypoint.sh /usr/local/bin/docker-entrypoint.sh
Expand Down
8 changes: 0 additions & 8 deletions distribution/src/bin/elasticsearch
Original file line number Diff line number Diff line change
Expand Up @@ -52,14 +52,6 @@ if [ -z "$LIBFFI_TMPDIR" ]; then
export LIBFFI_TMPDIR
fi

if [ -n "$ES_ZLIB_PATH" ]; then
if [ ! -d "$ES_ZLIB_PATH" ]; then
echo "zlib path specified in ES_ZLIB_PATH does not exist or is not a directory: $ES_ZLIB_PATH" >&2
exit 1
fi
export LD_LIBRARY_PATH="$ES_ZLIB_PATH:$LD_LIBRARY_PATH"
fi

# get keystore password before setting java options to avoid
# conflicting GC configurations for the keystore tools
unset KEYSTORE_PASSWORD
Expand Down
5 changes: 5 additions & 0 deletions docs/changelog/84680.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
pr: 84680
summary: Remove use of Cloudflare zlib
area: Packaging
type: bug
issues: []
Original file line number Diff line number Diff line change
Expand Up @@ -413,17 +413,6 @@ public void test050BasicApiTests() throws Exception {
runElasticsearchTestsAsElastic(PASSWORD);
}

/**
* Check that the JDK uses the Cloudflare zlib, instead of the default one.
*/
public void test060JavaUsesCloudflareZlib() {
waitForElasticsearch(installation, "elastic", PASSWORD);

final String output = sh.run("bash -c 'pmap -p $(pidof java)'").stdout();

assertThat("Expected java to be using cloudflare-zlib", output, containsString("cloudflare-zlib"));
}

/**
* Check that the default config can be overridden using a bind mount, and that env vars are respected
*/
Expand Down

0 comments on commit b7f2819

Please sign in to comment.