elastic-apm 4.6.0 → 4.6.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.ci/.jenkins_exclude.yml +11 -11
- data/.ci/.jenkins_main_framework.yml +2 -2
- data/.ci/Jenkinsfile +33 -2
- data/.ci/docker/jruby/11-jdk/Dockerfile +8 -3
- data/.ci/docker/jruby/12-jdk/Dockerfile +5 -2
- data/.ci/docker/jruby/13-jdk/Dockerfile +5 -2
- data/.ci/docker/jruby/7-jdk/Dockerfile +6 -3
- data/.ci/docker/jruby/8-jdk/Dockerfile +8 -3
- data/.ci/docker/jruby/README.md +1 -1
- data/.ci/docker/jruby/run.sh +33 -9
- data/.ci/docker/jruby/test.sh +17 -2
- data/.ci/snapshoty.yml +34 -0
- data/.ci/update-specs.yml +108 -0
- data/.github/workflows/update-specs.yml +30 -0
- data/CHANGELOG.asciidoc +17 -1
- data/CONTRIBUTING.md +1 -1
- data/Gemfile +4 -2
- data/Rakefile +2 -2
- data/docker-compose.yml +6 -0
- data/lib/elastic_apm/spies/faraday.rb +13 -4
- data/lib/elastic_apm/trace_context/tracestate.rb +3 -1
- data/lib/elastic_apm/transport/connection/http.rb +9 -3
- data/lib/elastic_apm/version.rb +1 -1
- metadata +5 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f7c28585ab44cfdb7a4eb8c32b8dd60e1ecb10c091357c25a6b13f35a0fe2ffc
|
4
|
+
data.tar.gz: 3aad55a03f8c2a4d824ea09731be304e7712ee306dc4e585c5cc29ba11e25413
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: eb6480a61567bd000e5325e12702c46882a42a9c452a60bd7af997b7138b076cd332d853f101b694af30d120bdd3b48f1b911feb6ecf12e94cdfc58ba096855c
|
7
|
+
data.tar.gz: e626d4a1cb9370780d764385585fb4c4025d612a84b7ef36ae0525f6d6f6a83ddf7d5aa670ccf2610bf10f9e2c2d9a87f2f97818cc9e8de27153c3a85cd34875
|
data/.ci/.jenkins_exclude.yml
CHANGED
@@ -18,7 +18,7 @@ exclude:
|
|
18
18
|
- RUBY_VERSION: ruby:2.4
|
19
19
|
FRAMEWORK: rails-main
|
20
20
|
- RUBY_VERSION: ruby:2.4
|
21
|
-
FRAMEWORK: sinatra-
|
21
|
+
FRAMEWORK: sinatra-main
|
22
22
|
- RUBY_VERSION: ruby:2.4
|
23
23
|
FRAMEWORK: grape-master
|
24
24
|
|
@@ -61,7 +61,7 @@ exclude:
|
|
61
61
|
- RUBY_VERSION: ruby:2.4
|
62
62
|
FRAMEWORK: rails-6.0
|
63
63
|
|
64
|
-
# Only test rails
|
64
|
+
# Only test rails main on ruby 3.1
|
65
65
|
- RUBY_VERSION: ruby:3.0
|
66
66
|
FRAMEWORK: rails-main
|
67
67
|
- RUBY_VERSION: ruby:2.7
|
@@ -97,23 +97,23 @@ exclude:
|
|
97
97
|
- RUBY_VERSION: docker.elastic.co/observability-ci/jruby:9.2-8-jdk
|
98
98
|
FRAMEWORK: rails-7.0
|
99
99
|
|
100
|
-
# Only test sinatra
|
100
|
+
# Only test sinatra main on ruby 2.7 and ruby 3.1
|
101
101
|
- RUBY_VERSION: ruby:3.0
|
102
|
-
FRAMEWORK: sinatra-
|
102
|
+
FRAMEWORK: sinatra-main
|
103
103
|
- RUBY_VERSION: ruby:2.6
|
104
|
-
FRAMEWORK: sinatra-
|
104
|
+
FRAMEWORK: sinatra-main
|
105
105
|
- RUBY_VERSION: ruby:2.5
|
106
|
-
FRAMEWORK: sinatra-
|
106
|
+
FRAMEWORK: sinatra-main
|
107
107
|
- RUBY_VERSION: ruby:2.4
|
108
|
-
FRAMEWORK: sinatra-
|
108
|
+
FRAMEWORK: sinatra-main
|
109
109
|
- RUBY_VERSION: jruby:9.2
|
110
|
-
FRAMEWORK: sinatra-
|
110
|
+
FRAMEWORK: sinatra-main
|
111
111
|
- RUBY_VERSION: docker.elastic.co/observability-ci/jruby:9.2-13-jdk
|
112
|
-
FRAMEWORK: sinatra-
|
112
|
+
FRAMEWORK: sinatra-main
|
113
113
|
- RUBY_VERSION: docker.elastic.co/observability-ci/jruby:9.2-11-jdk
|
114
|
-
FRAMEWORK: sinatra-
|
114
|
+
FRAMEWORK: sinatra-main
|
115
115
|
- RUBY_VERSION: docker.elastic.co/observability-ci/jruby:9.2-8-jdk
|
116
|
-
FRAMEWORK: sinatra-
|
116
|
+
FRAMEWORK: sinatra-main
|
117
117
|
|
118
118
|
# Only test grape master on ruby 2.7 and ruby 3.0
|
119
119
|
- RUBY_VERSION: ruby:2.6
|
data/.ci/Jenkinsfile
CHANGED
@@ -25,6 +25,7 @@ pipeline {
|
|
25
25
|
OPBEANS_REPO = 'opbeans-ruby'
|
26
26
|
REFERENCE_REPO = '/var/lib/jenkins/.git-references/apm-agent-ruby.git'
|
27
27
|
SLACK_CHANNEL = '#apm-agent-ruby'
|
28
|
+
RUBY_DOCKER_TAG = 'ruby:2.6'
|
28
29
|
}
|
29
30
|
options {
|
30
31
|
timeout(time: 2, unit: 'HOURS')
|
@@ -123,6 +124,37 @@ pipeline {
|
|
123
124
|
}
|
124
125
|
}
|
125
126
|
}
|
127
|
+
stage('Publish snapshot packages') {
|
128
|
+
options { skipDefaultCheckout() }
|
129
|
+
environment {
|
130
|
+
PATH = "${env.WORKSPACE}/.local/bin:${env.WORKSPACE}/bin:${env.PATH}"
|
131
|
+
BUCKET_NAME = 'oblt-artifacts'
|
132
|
+
DOCKER_REGISTRY = 'docker.elastic.co'
|
133
|
+
DOCKER_REGISTRY_SECRET = 'secret/observability-team/ci/docker-registry/prod'
|
134
|
+
GCS_ACCOUNT_SECRET = 'secret/observability-team/ci/snapshoty'
|
135
|
+
}
|
136
|
+
when { branch 'main' }
|
137
|
+
steps {
|
138
|
+
withGithubNotify(context: 'Publish snapshot packages') {
|
139
|
+
deleteDir()
|
140
|
+
unstash 'source'
|
141
|
+
dir(env.BASE_DIR) {
|
142
|
+
script {
|
143
|
+
docker.image(env.RUBY_DOCKER_TAG).inside() {
|
144
|
+
sh(label: 'install build system', script: 'gem install rake yard rspec')
|
145
|
+
sh(label: 'create gem', script: 'rake build')
|
146
|
+
}
|
147
|
+
snapshoty(
|
148
|
+
bucket: env.BUCKET_NAME,
|
149
|
+
gcsAccountSecret: env.GCS_ACCOUNT_SECRET,
|
150
|
+
dockerRegistry: env.DOCKER_REGISTRY,
|
151
|
+
dockerSecret: env.DOCKER_REGISTRY_SECRET
|
152
|
+
)
|
153
|
+
}
|
154
|
+
}
|
155
|
+
}
|
156
|
+
}
|
157
|
+
}
|
126
158
|
stage('Benchmarks') {
|
127
159
|
options { skipDefaultCheckout() }
|
128
160
|
when {
|
@@ -178,7 +210,6 @@ pipeline {
|
|
178
210
|
stage('Release') {
|
179
211
|
options { skipDefaultCheckout() }
|
180
212
|
environment {
|
181
|
-
RUBY_DOCKER_TAG = 'ruby:2.6'
|
182
213
|
HOME = '/var/lib/jenkins'
|
183
214
|
}
|
184
215
|
when {
|
@@ -389,7 +420,7 @@ def convergeCoverage() {
|
|
389
420
|
|
390
421
|
def prepareRelease(Closure body){
|
391
422
|
dir("${env.BASE_DIR}"){
|
392
|
-
docker.image(
|
423
|
+
docker.image(env.RUBY_DOCKER_TAG).inside('-v ${REFERENCE_REPO}:${REFERENCE_REPO} -v /etc/passwd:/etc/passwd -v ${HOME}/.ssh:${HOME}/.ssh') {
|
393
424
|
withEnv(["HOME=${env.WORKSPACE}/${env.BASE_DIR ?: ''}"]) {
|
394
425
|
rubygemsLogin.withApi(secret: "${env.RELEASE_SECRET}") {
|
395
426
|
withGitRelease(credentialsId: '2a9602aa-ab9f-4e52-baf3-b71ca88469c7-UserAndToken') {
|
@@ -6,11 +6,11 @@ RUN apt-get update \
|
|
6
6
|
&& rm -rf /var/lib/apt/lists/*
|
7
7
|
|
8
8
|
ENV JRUBY_VERSION 9.2.16.0
|
9
|
-
ENV JRUBY_SHA256 9199707712c683c525252ccb1de5cb8e75f53b790c5b57a18f6367039ec79553
|
10
9
|
|
11
10
|
RUN mkdir -p /opt/jruby \
|
11
|
+
&& curl -fSL https://repo1.maven.org/maven2/org/jruby/jruby-dist/${JRUBY_VERSION}/jruby-dist-${JRUBY_VERSION}-bin.tar.gz.sha256 -o /tmp/jruby.sha256 \
|
12
12
|
&& curl -fSL https://repo1.maven.org/maven2/org/jruby/jruby-dist/${JRUBY_VERSION}/jruby-dist-${JRUBY_VERSION}-bin.tar.gz -o /tmp/jruby.tar.gz \
|
13
|
-
&& echo "$
|
13
|
+
&& echo "$(cat /tmp/jruby.sha256) */tmp/jruby.tar.gz" | sha256sum -c - \
|
14
14
|
&& tar -zx --strip-components=1 -f /tmp/jruby.tar.gz -C /opt/jruby \
|
15
15
|
&& update-alternatives --install /usr/local/bin/ruby ruby /opt/jruby/bin/jruby 1
|
16
16
|
|
@@ -25,7 +25,9 @@ RUN mkdir -p /opt/jruby/etc \
|
|
25
25
|
} >> /opt/jruby/etc/gemrc
|
26
26
|
|
27
27
|
# install bundler, gem requires bash to work
|
28
|
-
|
28
|
+
# https://github.com/rubygems/rubygems/issues/2534#issuecomment-448843746
|
29
|
+
RUN gem update --system --conservative || (gem i "rubygems-update:~>2.7" --no-document && update_rubygems) \
|
30
|
+
&& gem install bundler:2.3.26 rake net-telnet xmlrpc tzinfo-data
|
29
31
|
|
30
32
|
# install things globally, for great justice
|
31
33
|
# and don't create ".bundle" in all our apps
|
@@ -38,4 +40,7 @@ ENV PATH $BUNDLE_BIN:$PATH
|
|
38
40
|
RUN mkdir -p "$GEM_HOME" "$BUNDLE_BIN" \
|
39
41
|
&& chmod 777 "$GEM_HOME" "$BUNDLE_BIN"
|
40
42
|
|
43
|
+
RUN useradd -rm -d /home/jruby -u 1001 jruby
|
44
|
+
USER jruby
|
45
|
+
WORKDIR /home/jruby
|
41
46
|
CMD [ "irb" ]
|
@@ -6,11 +6,11 @@ RUN apt-get update \
|
|
6
6
|
&& rm -rf /var/lib/apt/lists/*
|
7
7
|
|
8
8
|
ENV JRUBY_VERSION 9.3.1.0
|
9
|
-
ENV JRUBY_SHA256 9199707712c683c525252ccb1de5cb8e75f53b790c5b57a18f6367039ec79553
|
10
9
|
|
11
10
|
RUN mkdir -p /opt/jruby \
|
11
|
+
&& curl -fSL https://repo1.maven.org/maven2/org/jruby/jruby-dist/${JRUBY_VERSION}/jruby-dist-${JRUBY_VERSION}-bin.tar.gz.sha256 -o /tmp/jruby.sha256 \
|
12
12
|
&& curl -fSL https://repo1.maven.org/maven2/org/jruby/jruby-dist/${JRUBY_VERSION}/jruby-dist-${JRUBY_VERSION}-bin.tar.gz -o /tmp/jruby.tar.gz \
|
13
|
-
&& echo "$
|
13
|
+
&& echo "$(cat /tmp/jruby.sha256) */tmp/jruby.tar.gz" | sha256sum -c - \
|
14
14
|
&& tar -zx --strip-components=1 -f /tmp/jruby.tar.gz -C /opt/jruby \
|
15
15
|
&& update-alternatives --install /usr/local/bin/ruby ruby /opt/jruby/bin/jruby 1
|
16
16
|
|
@@ -38,4 +38,7 @@ ENV PATH $BUNDLE_BIN:$PATH
|
|
38
38
|
RUN mkdir -p "$GEM_HOME" "$BUNDLE_BIN" \
|
39
39
|
&& chmod 777 "$GEM_HOME" "$BUNDLE_BIN"
|
40
40
|
|
41
|
+
RUN useradd -rm -d /home/jruby -u 1001 jruby
|
42
|
+
USER jruby
|
43
|
+
WORKDIR /home/jruby
|
41
44
|
CMD [ "irb" ]
|
@@ -6,11 +6,11 @@ RUN apt-get update \
|
|
6
6
|
&& rm -rf /var/lib/apt/lists/*
|
7
7
|
|
8
8
|
ENV JRUBY_VERSION 9.3.1.0
|
9
|
-
ENV JRUBY_SHA256 9199707712c683c525252ccb1de5cb8e75f53b790c5b57a18f6367039ec79553
|
10
9
|
|
11
10
|
RUN mkdir -p /opt/jruby \
|
11
|
+
&& curl -fSL https://repo1.maven.org/maven2/org/jruby/jruby-dist/${JRUBY_VERSION}/jruby-dist-${JRUBY_VERSION}-bin.tar.gz.sha256 -o /tmp/jruby.sha256 \
|
12
12
|
&& curl -fSL https://repo1.maven.org/maven2/org/jruby/jruby-dist/${JRUBY_VERSION}/jruby-dist-${JRUBY_VERSION}-bin.tar.gz -o /tmp/jruby.tar.gz \
|
13
|
-
&& echo "$
|
13
|
+
&& echo "$(cat /tmp/jruby.sha256) */tmp/jruby.tar.gz" | sha256sum -c - \
|
14
14
|
&& tar -zx --strip-components=1 -f /tmp/jruby.tar.gz -C /opt/jruby \
|
15
15
|
&& update-alternatives --install /usr/local/bin/ruby ruby /opt/jruby/bin/jruby 1
|
16
16
|
|
@@ -38,4 +38,7 @@ ENV PATH $BUNDLE_BIN:$PATH
|
|
38
38
|
RUN mkdir -p "$GEM_HOME" "$BUNDLE_BIN" \
|
39
39
|
&& chmod 777 "$GEM_HOME" "$BUNDLE_BIN"
|
40
40
|
|
41
|
+
RUN useradd -rm -d /home/jruby -u 1001 jruby
|
42
|
+
USER jruby
|
43
|
+
WORKDIR /home/jruby
|
41
44
|
CMD [ "irb" ]
|
@@ -2,15 +2,15 @@ FROM openjdk:7-jdk
|
|
2
2
|
|
3
3
|
RUN apt-get update \
|
4
4
|
&& apt-get install -y libc6-dev --no-install-recommends \
|
5
|
-
&& apt-get install -y gcc \
|
5
|
+
&& apt-get install --force-yes -y gcc \
|
6
6
|
&& rm -rf /var/lib/apt/lists/*
|
7
7
|
|
8
8
|
ENV JRUBY_VERSION 9.3.1.0
|
9
|
-
ENV JRUBY_SHA256 6a22f7bf8fef1a52530a9c9781a9d374ad07bbbef0d3d8e2af0ff5cbead0dfd5
|
10
9
|
|
11
10
|
RUN mkdir -p /opt/jruby \
|
11
|
+
&& curl -fSL https://repo1.maven.org/maven2/org/jruby/jruby-dist/${JRUBY_VERSION}/jruby-dist-${JRUBY_VERSION}-bin.tar.gz.sha256 -o /tmp/jruby.sha256 \
|
12
12
|
&& curl -fSL https://repo1.maven.org/maven2/org/jruby/jruby-dist/${JRUBY_VERSION}/jruby-dist-${JRUBY_VERSION}-bin.tar.gz -o /tmp/jruby.tar.gz \
|
13
|
-
&& echo "$
|
13
|
+
&& echo "$(cat /tmp/jruby.sha256) */tmp/jruby.tar.gz" | sha256sum -c - \
|
14
14
|
&& tar -zx --strip-components=1 -f /tmp/jruby.tar.gz -C /opt/jruby \
|
15
15
|
&& update-alternatives --install /usr/local/bin/ruby ruby /opt/jruby/bin/jruby 1
|
16
16
|
|
@@ -38,4 +38,7 @@ ENV PATH $BUNDLE_BIN:$PATH
|
|
38
38
|
RUN mkdir -p "$GEM_HOME" "$BUNDLE_BIN" \
|
39
39
|
&& chmod 777 "$GEM_HOME" "$BUNDLE_BIN"
|
40
40
|
|
41
|
+
RUN useradd -rm -d /home/jruby -u 1001 jruby
|
42
|
+
USER jruby
|
43
|
+
WORKDIR /home/jruby
|
41
44
|
CMD [ "irb" ]
|
@@ -6,11 +6,11 @@ RUN apt-get update \
|
|
6
6
|
&& rm -rf /var/lib/apt/lists/*
|
7
7
|
|
8
8
|
ENV JRUBY_VERSION 9.2.14.0
|
9
|
-
ENV JRUBY_SHA256 9199707712c683c525252ccb1de5cb8e75f53b790c5b57a18f6367039ec79553
|
10
9
|
|
11
10
|
RUN mkdir -p /opt/jruby \
|
11
|
+
&& curl -fSL https://repo1.maven.org/maven2/org/jruby/jruby-dist/${JRUBY_VERSION}/jruby-dist-${JRUBY_VERSION}-bin.tar.gz.sha256 -o /tmp/jruby.sha256 \
|
12
12
|
&& curl -fSL https://repo1.maven.org/maven2/org/jruby/jruby-dist/${JRUBY_VERSION}/jruby-dist-${JRUBY_VERSION}-bin.tar.gz -o /tmp/jruby.tar.gz \
|
13
|
-
&& echo "$
|
13
|
+
&& echo "$(cat /tmp/jruby.sha256) */tmp/jruby.tar.gz" | sha256sum -c - \
|
14
14
|
&& tar -zx --strip-components=1 -f /tmp/jruby.tar.gz -C /opt/jruby \
|
15
15
|
&& update-alternatives --install /usr/local/bin/ruby ruby /opt/jruby/bin/jruby 1
|
16
16
|
|
@@ -25,7 +25,9 @@ RUN mkdir -p /opt/jruby/etc \
|
|
25
25
|
} >> /opt/jruby/etc/gemrc
|
26
26
|
|
27
27
|
# install bundler, gem requires bash to work
|
28
|
-
|
28
|
+
# https://github.com/rubygems/rubygems/issues/2534#issuecomment-448843746
|
29
|
+
RUN gem update --system --conservative || (gem i "rubygems-update:~>2.7" --no-document && update_rubygems) \
|
30
|
+
&& gem install bundler:2.3.26 rake net-telnet xmlrpc tzinfo-data
|
29
31
|
|
30
32
|
# install things globally, for great justice
|
31
33
|
# and don't create ".bundle" in all our apps
|
@@ -38,4 +40,7 @@ ENV PATH $BUNDLE_BIN:$PATH
|
|
38
40
|
RUN mkdir -p "$GEM_HOME" "$BUNDLE_BIN" \
|
39
41
|
&& chmod 777 "$GEM_HOME" "$BUNDLE_BIN"
|
40
42
|
|
43
|
+
RUN useradd -rm -d /home/jruby -u 1001 jruby
|
44
|
+
USER jruby
|
45
|
+
WORKDIR /home/jruby
|
41
46
|
CMD [ "irb" ]
|
data/.ci/docker/jruby/README.md
CHANGED
@@ -12,7 +12,7 @@ To build the images run
|
|
12
12
|
|
13
13
|
You can set your own docker registry with the flag `--registry x.y.z/org`
|
14
14
|
|
15
|
-
You can exclude what images can be built with the flag `--exclude jdk-7`
|
15
|
+
You can exclude what images can be built with the flag `--exclude jdk-7`. Multiple usages of `--exclude` are accepted.
|
16
16
|
|
17
17
|
## Test
|
18
18
|
|
data/.ci/docker/jruby/run.sh
CHANGED
@@ -1,5 +1,10 @@
|
|
1
1
|
#!/usr/bin/env bash
|
2
2
|
|
3
|
+
set -o pipefail
|
4
|
+
|
5
|
+
# 7-jdk is excluded by default. See https://github.com/elastic/apm-agent-ruby/pull/1367#issuecomment-1437228929
|
6
|
+
EXCLUDE=("7-jdk")
|
7
|
+
|
3
8
|
while (( "$#" )); do
|
4
9
|
case "$1" in
|
5
10
|
-r|--registry)
|
@@ -7,7 +12,7 @@ while (( "$#" )); do
|
|
7
12
|
shift 2
|
8
13
|
;;
|
9
14
|
-e|--exclude)
|
10
|
-
EXCLUDE
|
15
|
+
EXCLUDE+=("$2")
|
11
16
|
shift 2
|
12
17
|
;;
|
13
18
|
-a|--action)
|
@@ -28,12 +33,13 @@ while (( "$#" )); do
|
|
28
33
|
esac
|
29
34
|
done
|
30
35
|
|
36
|
+
function convert_exclude_opts() {
|
37
|
+
for val in "${EXCLUDE[@]}"; do
|
38
|
+
printf "! -path \"./%s/*\" " $val
|
39
|
+
done
|
40
|
+
}
|
31
41
|
|
32
|
-
|
33
|
-
search=$(find . -path ./$EXCLUDE -prune -o -name 'Dockerfile' -print)
|
34
|
-
else
|
35
|
-
search=$(find . -name 'Dockerfile' -print)
|
36
|
-
fi
|
42
|
+
search=$(bash -c "find . -name 'Dockerfile' $(convert_exclude_opts) -print")
|
37
43
|
|
38
44
|
function report {
|
39
45
|
if [ $1 -eq 0 ] ; then
|
@@ -43,7 +49,18 @@ function report {
|
|
43
49
|
fi
|
44
50
|
}
|
45
51
|
|
52
|
+
function max {
|
53
|
+
if [ "$1" -gt "$2" ]; then
|
54
|
+
echo "$1"
|
55
|
+
else
|
56
|
+
echo "$2"
|
57
|
+
fi
|
58
|
+
}
|
59
|
+
|
46
60
|
echo "${ACTION} docker images"
|
61
|
+
|
62
|
+
EXIT_CODE=0
|
63
|
+
|
47
64
|
for i in ${search}; do
|
48
65
|
jdk_image=$(basename `dirname "$i"`)
|
49
66
|
jdk_version=$(echo "$jdk_image" | cut -d'-' -f1)
|
@@ -63,11 +80,18 @@ for i in ${search}; do
|
|
63
80
|
|
64
81
|
if [ "${ACTION}" == "build" ] ; then
|
65
82
|
docker build --tag "${name}" -< $i >> output.log 2>&1
|
66
|
-
|
83
|
+
result=$?
|
84
|
+
report $result "${name}"
|
67
85
|
elif [ "${ACTION}" == "push" ] ; then
|
68
86
|
docker push "${name}" >> output.log 2>&1
|
69
|
-
|
87
|
+
result=$?
|
88
|
+
report $result "${name}"
|
70
89
|
else
|
71
90
|
./test.sh "${name}" $jdk_version
|
91
|
+
result=$?
|
72
92
|
fi
|
73
|
-
|
93
|
+
|
94
|
+
EXIT_CODE=$(max $EXIT_CODE $result)
|
95
|
+
done
|
96
|
+
|
97
|
+
exit "${EXIT_CODE}"
|
data/.ci/docker/jruby/test.sh
CHANGED
@@ -6,8 +6,23 @@ printf '\tTest %-30s %s\n' ${image}
|
|
6
6
|
|
7
7
|
if [ -n "$version" ] ; then
|
8
8
|
test_name="Test java -version '$version'"
|
9
|
-
docker run -t --rm $image java -version | grep -q "openjdk version \"$version\|1.$version"
|
9
|
+
docker run -t --rm $image java -version | grep -q "openjdk version \"$version\|1.$version"
|
10
|
+
TEST_JAVA_VERSION_RESULT=$?
|
11
|
+
if [[ $TEST_JAVA_VERSION_RESULT -eq 0 ]]; then
|
12
|
+
printf '\t\t%-40s %s\n' "${test_name}" "PASSED"
|
13
|
+
else
|
14
|
+
printf '\t\t%-40s %s\n' "${test_name}" "FAILED"
|
15
|
+
fi
|
10
16
|
fi
|
11
17
|
|
12
18
|
test_name="Test Hello World"
|
13
|
-
|
19
|
+
# random operation to verify that ruby evaluates the passed string correctly
|
20
|
+
docker run -t --rm $image jruby -e "foo = 3 * 4; puts foo" | grep -q '12'
|
21
|
+
TEST_HELLO_WORLD_RESULT=$?
|
22
|
+
if [[ $TEST_HELLO_WORLD_RESULT -eq 0 ]]; then
|
23
|
+
printf '\t\t%-40s %s\n' "${test_name}" "PASSED"
|
24
|
+
else
|
25
|
+
printf '\t\t%-40s %s\n' "${test_name}" "FAILED"
|
26
|
+
fi
|
27
|
+
|
28
|
+
! (( $TEST_JAVA_VERSION_RESULT || $TEST_HELLO_WORLD_RESULT ))
|
data/.ci/snapshoty.yml
ADDED
@@ -0,0 +1,34 @@
|
|
1
|
+
---
|
2
|
+
|
3
|
+
# Version of configuration to use
|
4
|
+
version: '1.0'
|
5
|
+
|
6
|
+
# You can define a Google Cloud Account to use
|
7
|
+
account:
|
8
|
+
# Project id of the service account
|
9
|
+
project: '${GCS_PROJECT}'
|
10
|
+
# Private key id of the service account
|
11
|
+
private_key_id: '${GCS_PRIVATE_KEY_ID}'
|
12
|
+
# Private key of the service account
|
13
|
+
private_key: '${GCS_PRIVATE_KEY}'
|
14
|
+
# Email of the service account
|
15
|
+
client_email: '${GCS_CLIENT_EMAIL}'
|
16
|
+
# URI token
|
17
|
+
token_uri: 'https://oauth2.googleapis.com/token'
|
18
|
+
|
19
|
+
# List of artifacts
|
20
|
+
artifacts:
|
21
|
+
# Path to use for artifacts discovery
|
22
|
+
- path: './pkg'
|
23
|
+
# Files pattern to match
|
24
|
+
files_pattern: 'elastic-apm-(?P<app_version>\d+\.\d+\.\d+)\.gem'
|
25
|
+
# File layout on GCS bucket
|
26
|
+
output_pattern: '{project}/{jenkins_branch_name}/elastic-apm-ruby-{app_version}-{jenkins_git_commit_short}.gem'
|
27
|
+
# List of metadata processors to use.
|
28
|
+
metadata:
|
29
|
+
# Define static custom metadata
|
30
|
+
- name: 'custom'
|
31
|
+
data:
|
32
|
+
project: 'apm-agent-ruby'
|
33
|
+
# Add jenkins metadata
|
34
|
+
- name: 'jenkins'
|
@@ -0,0 +1,108 @@
|
|
1
|
+
name: update-specs
|
2
|
+
|
3
|
+
title: synchronize schema specs
|
4
|
+
|
5
|
+
scms:
|
6
|
+
default:
|
7
|
+
kind: github
|
8
|
+
spec:
|
9
|
+
user: '{{ requiredEnv "GIT_USER" }}'
|
10
|
+
email: '{{ requiredEnv "GIT_EMAIL" }}'
|
11
|
+
owner: elastic
|
12
|
+
repository: apm-agent-ruby
|
13
|
+
token: '{{ requiredEnv "GITHUB_TOKEN" }}'
|
14
|
+
username: '{{ requiredEnv "GIT_USER" }}'
|
15
|
+
branch: main
|
16
|
+
|
17
|
+
sources:
|
18
|
+
sha:
|
19
|
+
kind: file
|
20
|
+
spec:
|
21
|
+
file: 'https://github.com/elastic/apm-data/commit/main.patch'
|
22
|
+
matchpattern: "^From\\s([0-9a-f]{40})\\s"
|
23
|
+
transformers:
|
24
|
+
- findsubmatch:
|
25
|
+
pattern: "[0-9a-f]{40}"
|
26
|
+
error.json:
|
27
|
+
kind: file
|
28
|
+
spec:
|
29
|
+
file: https://raw.githubusercontent.com/elastic/apm-data/main/input/elasticapm/docs/spec/v2/error.json
|
30
|
+
metadata.json:
|
31
|
+
kind: file
|
32
|
+
spec:
|
33
|
+
file: https://raw.githubusercontent.com/elastic/apm-data/main/input/elasticapm/docs/spec/v2/metadata.json
|
34
|
+
metricset.json:
|
35
|
+
kind: file
|
36
|
+
spec:
|
37
|
+
file: https://raw.githubusercontent.com/elastic/apm-data/main/input/elasticapm/docs/spec/v2/metricset.json
|
38
|
+
span.json:
|
39
|
+
kind: file
|
40
|
+
spec:
|
41
|
+
file: https://raw.githubusercontent.com/elastic/apm-data/main/input/elasticapm/docs/spec/v2/span.json
|
42
|
+
transaction.json:
|
43
|
+
kind: file
|
44
|
+
spec:
|
45
|
+
file: https://raw.githubusercontent.com/elastic/apm-data/main/input/elasticapm/docs/spec/v2/transaction.json
|
46
|
+
|
47
|
+
|
48
|
+
|
49
|
+
|
50
|
+
|
51
|
+
actions:
|
52
|
+
pr:
|
53
|
+
kind: "github/pullrequest"
|
54
|
+
scmid: default
|
55
|
+
sourceid: sha
|
56
|
+
spec:
|
57
|
+
automerge: false
|
58
|
+
draft: false
|
59
|
+
labels:
|
60
|
+
- "automation"
|
61
|
+
description: |-
|
62
|
+
### What
|
63
|
+
APM agent json schema automatic sync
|
64
|
+
### Why
|
65
|
+
*Changeset*
|
66
|
+
* https://github.com/elastic/apm-data/commit/{{ source "sha" }}
|
67
|
+
|
68
|
+
targets:
|
69
|
+
error.json:
|
70
|
+
name: error.json
|
71
|
+
scmid: default
|
72
|
+
sourceid: error.json
|
73
|
+
kind: file
|
74
|
+
spec:
|
75
|
+
file: spec/fixtures/error.json
|
76
|
+
forcecreate: true
|
77
|
+
metadata.json:
|
78
|
+
name: metadata.json
|
79
|
+
scmid: default
|
80
|
+
sourceid: metadata.json
|
81
|
+
kind: file
|
82
|
+
spec:
|
83
|
+
file: spec/fixtures/metadata.json
|
84
|
+
forcecreate: true
|
85
|
+
metricset.json:
|
86
|
+
name: metricset.json
|
87
|
+
scmid: default
|
88
|
+
sourceid: metricset.json
|
89
|
+
kind: file
|
90
|
+
spec:
|
91
|
+
file: spec/fixtures/metricset.json
|
92
|
+
forcecreate: true
|
93
|
+
span.json:
|
94
|
+
name: span.json
|
95
|
+
scmid: default
|
96
|
+
sourceid: span.json
|
97
|
+
kind: file
|
98
|
+
spec:
|
99
|
+
file: spec/fixtures/span.json
|
100
|
+
forcecreate: true
|
101
|
+
transaction.json:
|
102
|
+
name: transaction.json
|
103
|
+
scmid: default
|
104
|
+
sourceid: transaction.json
|
105
|
+
kind: file
|
106
|
+
spec:
|
107
|
+
file: spec/fixtures/transaction.json
|
108
|
+
forcecreate: true
|
@@ -0,0 +1,30 @@
|
|
1
|
+
name: update-specs
|
2
|
+
|
3
|
+
on:
|
4
|
+
workflow_dispatch: ~
|
5
|
+
schedule:
|
6
|
+
- cron: '0 6 * * *'
|
7
|
+
|
8
|
+
permissions:
|
9
|
+
contents: read
|
10
|
+
|
11
|
+
jobs:
|
12
|
+
bump:
|
13
|
+
runs-on: ubuntu-latest
|
14
|
+
steps:
|
15
|
+
- uses: actions/checkout@v3
|
16
|
+
- uses: elastic/apm-pipeline-library/.github/actions/updatecli@current
|
17
|
+
env:
|
18
|
+
BRANCH_NAME: ${{ github.ref_name }}
|
19
|
+
with:
|
20
|
+
vaultUrl: ${{ secrets.VAULT_ADDR }}
|
21
|
+
vaultRoleId: ${{ secrets.VAULT_ROLE_ID }}
|
22
|
+
vaultSecretId: ${{ secrets.VAULT_SECRET_ID }}
|
23
|
+
pipeline: ./.ci/update-specs.yml
|
24
|
+
- if: failure()
|
25
|
+
uses: elastic/apm-pipeline-library/.github/actions/notify-build-status@current
|
26
|
+
with:
|
27
|
+
vaultUrl: ${{ secrets.VAULT_ADDR }}
|
28
|
+
vaultRoleId: ${{ secrets.VAULT_ROLE_ID }}
|
29
|
+
vaultSecretId: ${{ secrets.VAULT_SECRET_ID }}
|
30
|
+
slackChannel: "#apm-agent-ruby"
|
data/CHANGELOG.asciidoc
CHANGED
@@ -25,7 +25,6 @@ endif::[]
|
|
25
25
|
|
26
26
|
[float]
|
27
27
|
===== Fixed
|
28
|
-
- Fix {pull}2526[#2526]
|
29
28
|
|
30
29
|
[float]
|
31
30
|
[[unreleased]]
|
@@ -35,6 +34,23 @@ endif::[]
|
|
35
34
|
[[release-notes-4.x]]
|
36
35
|
=== Ruby Agent version 4.x
|
37
36
|
|
37
|
+
[[release-notes-4.6.2]]
|
38
|
+
==== 4.6.2
|
39
|
+
|
40
|
+
[float]
|
41
|
+
===== Fixed
|
42
|
+
- Fix Faraday::RackBuilder::StackLocked {pull}1371[#1371]
|
43
|
+
|
44
|
+
[[release-notes-4.6.1]]
|
45
|
+
==== 4.6.1
|
46
|
+
|
47
|
+
[float]
|
48
|
+
===== Fixed
|
49
|
+
|
50
|
+
- Fix growing number of open file descriptors when HTTP request to APM is never sent {pull}1351[#1351]
|
51
|
+
- Fix setting span http status code when Faraday Middleware is used {pull}1368[#1368]
|
52
|
+
- Handle whitespace when splitting tracestate entries {pull}1353[#1353]
|
53
|
+
|
38
54
|
[[release-notes-4.6.0]]
|
39
55
|
==== 4.6.0
|
40
56
|
|
data/CONTRIBUTING.md
CHANGED
@@ -49,4 +49,4 @@ To release a new version:
|
|
49
49
|
2. Push the tag to GitHub.
|
50
50
|
3. Build the gem and upload to Rubygems (local user needs to be signed in and authorized.)
|
51
51
|
1. Run `rake release:update_branch`. This will...
|
52
|
-
1. Update `
|
52
|
+
1. Update `4.x` branch to be at released commit and push it to GitHub.
|
data/Gemfile
CHANGED
@@ -83,9 +83,9 @@ frameworks_versions.each do |framework, version|
|
|
83
83
|
end
|
84
84
|
|
85
85
|
case version
|
86
|
-
when 'master' #
|
86
|
+
when 'master' # grape
|
87
87
|
gem framework, github: GITHUB_REPOS.fetch(framework)
|
88
|
-
when 'main' # rails
|
88
|
+
when 'main' # sinatra, rails
|
89
89
|
gem framework, github: GITHUB_REPOS.fetch(framework), branch: 'main'
|
90
90
|
when /.+/
|
91
91
|
gem framework, "~> #{version}.0"
|
@@ -116,6 +116,8 @@ if RUBY_PLATFORM == 'java'
|
|
116
116
|
end
|
117
117
|
elsif frameworks_versions['rails'] =~ /^(4|5)/
|
118
118
|
gem 'sqlite3', '~> 1.3.6'
|
119
|
+
elsif RUBY_VERSION < '2.7'
|
120
|
+
gem 'sqlite3', '~> 1.4.4'
|
119
121
|
else
|
120
122
|
gem 'sqlite3'
|
121
123
|
end
|
data/Rakefile
CHANGED
data/docker-compose.yml
CHANGED
@@ -6,6 +6,8 @@ services:
|
|
6
6
|
image: mongo:latest
|
7
7
|
volumes: ['mongodata:/data/db']
|
8
8
|
ports: ['27017:27017']
|
9
|
+
security_opt:
|
10
|
+
- no-new-privileges
|
9
11
|
|
10
12
|
specs:
|
11
13
|
build:
|
@@ -27,12 +29,16 @@ services:
|
|
27
29
|
depends_on:
|
28
30
|
- mongodb
|
29
31
|
user: ${USER_ID}
|
32
|
+
security_opt:
|
33
|
+
- no-new-privileges
|
30
34
|
|
31
35
|
ruby_rspec:
|
32
36
|
image: apm-agent-ruby:${RUBY_VERSION}
|
33
37
|
environment:
|
34
38
|
MONGODB_URL: 'mongodb:27017'
|
35
39
|
user: ${USER_ID}
|
40
|
+
security_opt:
|
41
|
+
- no-new-privileges
|
36
42
|
|
37
43
|
volumes:
|
38
44
|
vendor:
|
@@ -103,10 +103,19 @@ module ElasticAPM
|
|
103
103
|
ElasticAPM::Spies.without_net_http do
|
104
104
|
trace_context = span&.trace_context || transaction.trace_context
|
105
105
|
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
106
|
+
begin
|
107
|
+
result = super(method, url, body, headers) do |req|
|
108
|
+
trace_context.apply_headers { |k, v| req[k] = v }
|
109
|
+
yield req if block
|
110
|
+
end
|
111
|
+
rescue Faraday::ClientError, Faraday::ServerError => e # Faraday::Response::RaiseError
|
112
|
+
status = e.response[:status]
|
113
|
+
http = span&.context&.http
|
114
|
+
if http && status
|
115
|
+
http.status_code = status.to_s
|
116
|
+
span.outcome = Span::Outcome.from_http_status(status)
|
117
|
+
end
|
118
|
+
raise e
|
110
119
|
end
|
111
120
|
|
112
121
|
if (http = span&.context&.http)
|
@@ -92,6 +92,8 @@ module ElasticAPM
|
|
92
92
|
|
93
93
|
extend Forwardable
|
94
94
|
|
95
|
+
ENTRY_SPLIT_REGEX = /\s*[\n,]+\s*/
|
96
|
+
|
95
97
|
def initialize(entries: {}, sample_rate: nil)
|
96
98
|
@entries = entries
|
97
99
|
|
@@ -140,7 +142,7 @@ module ElasticAPM
|
|
140
142
|
# Rack handles this by joining the headers under the same key,
|
141
143
|
# separated by newlines.
|
142
144
|
# See https://www.rubydoc.info/github/rack/rack/file/SPEC
|
143
|
-
String(str).split(
|
145
|
+
String(str).split(ENTRY_SPLIT_REGEX).flatten
|
144
146
|
end
|
145
147
|
end
|
146
148
|
end
|
@@ -75,7 +75,15 @@ module ElasticAPM
|
|
75
75
|
@closed.make_true
|
76
76
|
|
77
77
|
@wr&.close
|
78
|
-
|
78
|
+
|
79
|
+
if @request&.join(5)
|
80
|
+
@rd&.close
|
81
|
+
return
|
82
|
+
end
|
83
|
+
|
84
|
+
@rd&.close
|
85
|
+
|
86
|
+
return if @request.nil?
|
79
87
|
|
80
88
|
error(
|
81
89
|
'%s: APM Server not responding in time, terminating request',
|
@@ -117,8 +125,6 @@ module ElasticAPM
|
|
117
125
|
error(
|
118
126
|
"Couldn't establish connection to APM Server:\n%p", e.inspect
|
119
127
|
)
|
120
|
-
ensure
|
121
|
-
@rd&.close
|
122
128
|
end
|
123
129
|
end
|
124
130
|
end
|
data/lib/elastic_apm/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: elastic-apm
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 4.6.
|
4
|
+
version: 4.6.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Mikkel Malmberg
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2023-
|
12
|
+
date: 2023-03-22 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: concurrent-ruby
|
@@ -82,6 +82,8 @@ files:
|
|
82
82
|
- ".ci/jobs/defaults.yml"
|
83
83
|
- ".ci/linting.groovy"
|
84
84
|
- ".ci/packer_cache.sh"
|
85
|
+
- ".ci/snapshoty.yml"
|
86
|
+
- ".ci/update-specs.yml"
|
85
87
|
- ".github/ISSUE_TEMPLATE/Bug_report.md"
|
86
88
|
- ".github/ISSUE_TEMPLATE/Feature_request.md"
|
87
89
|
- ".github/PULL_REQUEST_TEMPLATE.md"
|
@@ -89,6 +91,7 @@ files:
|
|
89
91
|
- ".github/labeler-config.yml"
|
90
92
|
- ".github/workflows/addToProject.yml"
|
91
93
|
- ".github/workflows/labeler.yml"
|
94
|
+
- ".github/workflows/update-specs.yml"
|
92
95
|
- ".gitignore"
|
93
96
|
- ".pre-commit-config.yaml"
|
94
97
|
- ".rspec"
|