(maint) Bump version to 2.4.0

Upgrade to jruby 9.3.6.0
Remove workaround for jruby 9.2 using JRUBY_OPTS=-Xinvokedynamic.yield=false
Removed unused dependency nokogiri?
This commit is contained in:
Samuel Beaulieu 2022-07-25 11:00:59 -05:00
parent 843f36e152
commit b859743694
No known key found for this signature in database
GPG key ID: 12030F74136D0F34
10 changed files with 38 additions and 71 deletions

View file

@ -20,10 +20,10 @@ jobs:
draft: false draft: false
prerelease: false prerelease: false
generateReleaseNotes: true generateReleaseNotes: true
- name: Install Ruby jruby-9.2.12.0 - name: Install Ruby jruby-9.3.6.0
uses: ruby/setup-ruby@v1 uses: ruby/setup-ruby@v1
with: with:
ruby-version: 'jruby-9.2.12.0' ruby-version: 'jruby-9.3.6.0'
- name: Build gem - name: Build gem
run: gem build *.gemspec run: gem build *.gemspec
- name: Publish gem - name: Publish gem

View file

@ -18,8 +18,7 @@ jobs:
strategy: strategy:
matrix: matrix:
ruby-version: ruby-version:
# - '2.5.8' - 'jruby-9.3.6.0'
- 'jruby-9.2.12.0'
steps: steps:
- uses: actions/checkout@v2 - uses: actions/checkout@v2
- name: Set up Ruby - name: Set up Ruby
@ -35,8 +34,7 @@ jobs:
strategy: strategy:
matrix: matrix:
ruby-version: ruby-version:
# - '2.5.8' - 'jruby-9.3.6.0'
- 'jruby-9.2.12.0'
steps: steps:
- uses: actions/checkout@v2 - uses: actions/checkout@v2
- name: Set up Ruby - name: Set up Ruby

View file

@ -1,12 +1,11 @@
PATH PATH
remote: . remote: .
specs: specs:
vmpooler (2.3.0) vmpooler (2.4.0)
concurrent-ruby (~> 1.1) concurrent-ruby (~> 1.1)
connection_pool (~> 2.2) connection_pool (~> 2.2)
deep_merge (~> 1.2) deep_merge (~> 1.2)
net-ldap (~> 0.16) net-ldap (~> 0.16)
nokogiri (~> 1.10)
opentelemetry-exporter-jaeger (= 0.20.1) opentelemetry-exporter-jaeger (= 0.20.1)
opentelemetry-instrumentation-concurrent_ruby (= 0.19.2) opentelemetry-instrumentation-concurrent_ruby (= 0.19.2)
opentelemetry-instrumentation-http_client (= 0.19.4) opentelemetry-instrumentation-http_client (= 0.19.4)
@ -30,54 +29,30 @@ GEM
ast (2.4.2) ast (2.4.2)
bindata (2.4.10) bindata (2.4.10)
builder (3.2.4) builder (3.2.4)
climate_control (1.0.1) climate_control (1.2.0)
coderay (1.1.3) coderay (1.1.3)
concurrent-ruby (1.1.10) concurrent-ruby (1.1.10)
connection_pool (2.2.5) connection_pool (2.2.5)
deep_merge (1.2.2) deep_merge (1.2.2)
diff-lcs (1.5.0) diff-lcs (1.5.0)
docile (1.4.0) docile (1.4.0)
faraday (1.10.0) faraday (2.3.0)
faraday-em_http (~> 1.0) faraday-net_http (~> 2.0)
faraday-em_synchrony (~> 1.0)
faraday-excon (~> 1.1)
faraday-httpclient (~> 1.0)
faraday-multipart (~> 1.0)
faraday-net_http (~> 1.0)
faraday-net_http_persistent (~> 1.0)
faraday-patron (~> 1.0)
faraday-rack (~> 1.0)
faraday-retry (~> 1.0)
ruby2_keywords (>= 0.0.4) ruby2_keywords (>= 0.0.4)
faraday-em_http (1.0.0) faraday-net_http (2.0.3)
faraday-em_synchrony (1.0.0)
faraday-excon (1.1.0)
faraday-httpclient (1.0.1)
faraday-multipart (1.0.3)
multipart-post (>= 1.2, < 3)
faraday-net_http (1.0.1)
faraday-net_http_persistent (1.2.0)
faraday-patron (1.0.0)
faraday-rack (1.0.0)
faraday-retry (1.0.3)
ffi (1.15.5-java) ffi (1.15.5-java)
google-cloud-env (1.6.0) google-cloud-env (1.6.0)
faraday (>= 0.17.3, < 3.0) faraday (>= 0.17.3, < 3.0)
method_source (1.0.0) method_source (1.0.0)
mock_redis (0.31.0) mock_redis (0.32.0)
ruby2_keywords ruby2_keywords
multipart-post (2.1.1) mustermann (2.0.2)
mustermann (1.1.1)
ruby2_keywords (~> 0.0.1) ruby2_keywords (~> 0.0.1)
net-ldap (0.17.0) net-ldap (0.17.1)
nio4r (2.5.8) nio4r (2.5.8)
nio4r (2.5.8-java) nio4r (2.5.8-java)
nokogiri (1.12.5-java) opentelemetry-api (1.0.2)
racc (~> 1.4) opentelemetry-common (0.19.6)
nokogiri (1.12.5-x86_64-linux)
racc (~> 1.4)
opentelemetry-api (1.0.1)
opentelemetry-common (0.19.3)
opentelemetry-api (~> 1.0) opentelemetry-api (~> 1.0)
opentelemetry-exporter-jaeger (0.20.1) opentelemetry-exporter-jaeger (0.20.1)
opentelemetry-api (~> 1.0) opentelemetry-api (~> 1.0)
@ -101,13 +76,15 @@ GEM
opentelemetry-api (~> 1.0) opentelemetry-api (~> 1.0)
opentelemetry-common (~> 0.19.3) opentelemetry-common (~> 0.19.3)
opentelemetry-instrumentation-base (~> 0.19.0) opentelemetry-instrumentation-base (~> 0.19.0)
opentelemetry-registry (0.1.0)
opentelemetry-api (~> 1.0.1)
opentelemetry-resource_detectors (0.19.1) opentelemetry-resource_detectors (0.19.1)
google-cloud-env google-cloud-env
opentelemetry-sdk opentelemetry-sdk
opentelemetry-sdk (1.0.2) opentelemetry-sdk (1.1.0)
opentelemetry-api (~> 1.0) opentelemetry-api (~> 1.0)
opentelemetry-common (~> 0.19.3) opentelemetry-common (~> 0.19.3)
opentelemetry-instrumentation-base (~> 0.19.0) opentelemetry-registry (~> 0.1)
opentelemetry-semantic_conventions opentelemetry-semantic_conventions
opentelemetry-semantic_conventions (1.8.0) opentelemetry-semantic_conventions (1.8.0)
opentelemetry-api (~> 1.0) opentelemetry-api (~> 1.0)
@ -127,17 +104,15 @@ GEM
nio4r (~> 2.0) nio4r (~> 2.0)
puma (5.6.4-java) puma (5.6.4-java)
nio4r (~> 2.0) nio4r (~> 2.0)
racc (1.6.0) rack (2.2.4)
racc (1.6.0-java) rack-protection (2.2.2)
rack (2.2.3)
rack-protection (2.2.0)
rack rack
rack-test (1.1.0) rack-test (2.0.2)
rack (>= 1.0, < 3) rack (>= 1.3)
rainbow (3.1.1) rainbow (3.1.1)
rake (13.0.6) rake (13.0.6)
redis (4.6.0) redis (4.7.1)
regexp_parser (2.3.1) regexp_parser (2.5.0)
rexml (3.2.5) rexml (3.2.5)
rspec (3.11.0) rspec (3.11.0)
rspec-core (~> 3.11.0) rspec-core (~> 3.11.0)
@ -148,7 +123,7 @@ GEM
rspec-expectations (3.11.0) rspec-expectations (3.11.0)
diff-lcs (>= 1.2.0, < 2.0) diff-lcs (>= 1.2.0, < 2.0)
rspec-support (~> 3.11.0) rspec-support (~> 3.11.0)
rspec-mocks (3.11.0) rspec-mocks (3.11.1)
diff-lcs (>= 1.2.0, < 2.0) diff-lcs (>= 1.2.0, < 2.0)
rspec-support (~> 3.11.0) rspec-support (~> 3.11.0)
rspec-support (3.11.0) rspec-support (3.11.0)
@ -161,7 +136,7 @@ GEM
rubocop-ast (>= 1.17.0, < 2.0) rubocop-ast (>= 1.17.0, < 2.0)
ruby-progressbar (~> 1.7) ruby-progressbar (~> 1.7)
unicode-display_width (>= 1.4.0, < 3.0) unicode-display_width (>= 1.4.0, < 3.0)
rubocop-ast (1.17.0) rubocop-ast (1.19.1)
parser (>= 3.1.1.0) parser (>= 3.1.1.0)
ruby-progressbar (1.11.0) ruby-progressbar (1.11.0)
ruby2_keywords (0.0.5) ruby2_keywords (0.0.5)
@ -171,10 +146,10 @@ GEM
simplecov_json_formatter (~> 0.1) simplecov_json_formatter (~> 0.1)
simplecov-html (0.12.3) simplecov-html (0.12.3)
simplecov_json_formatter (0.1.4) simplecov_json_formatter (0.1.4)
sinatra (2.2.0) sinatra (2.2.2)
mustermann (~> 1.0) mustermann (~> 2.0)
rack (~> 2.2) rack (~> 2.2)
rack-protection (= 2.2.0) rack-protection (= 2.2.2)
tilt (~> 2.0) tilt (~> 2.0)
spicy-proton (2.1.14) spicy-proton (2.1.14)
bindata (~> 2.3) bindata (~> 2.3)
@ -183,14 +158,15 @@ GEM
statsd-ruby (1.5.0) statsd-ruby (1.5.0)
thor (1.2.1) thor (1.2.1)
thrift (0.16.0) thrift (0.16.0)
tilt (2.0.10) tilt (2.0.11)
unicode-display_width (2.1.0) unicode-display_width (2.2.0)
yarjuf (2.0.0) yarjuf (2.0.0)
builder builder
rspec (~> 3) rspec (~> 3)
PLATFORMS PLATFORMS
universal-java-1.8 universal-java-1.8
universal-java-11
x86_64-linux x86_64-linux
DEPENDENCIES DEPENDENCIES
@ -206,4 +182,4 @@ DEPENDENCIES
yarjuf (>= 2.0) yarjuf (>= 2.0)
BUNDLED WITH BUNDLED WITH
2.3.10 2.3.18

View file

@ -30,10 +30,6 @@ VMPooler itself and the dev environment talked about below require additional Ru
Configuration for VMPooler may be provided via environment variables, or a configuration file. Configuration for VMPooler may be provided via environment variables, or a configuration file.
### Note on JRuby 9.2.11.x
We have found when running VMPooler on JRuby 9.2.11.x we occasionally encounter a stack overflow error that causes the pool\_manager application component to fail and stop doing work. To address this issue on JRuby 9.2.11.x we recommend setting the JRuby option `invokedynamic.yield=false`. To set this with JRuby 9.2.11.1 you can specify the environment variable `JRUBY_OPTS` with the value `-Xinvokedynamic.yield=false`.
The provided configuration defaults are reasonable for small VMPooler instances with a few pools. If you plan to run a large VMPooler instance it is important to consider configuration values appropriate for the instance of your size in order to avoid starving the provider, or Redis, of connections. The provided configuration defaults are reasonable for small VMPooler instances with a few pools. If you plan to run a large VMPooler instance it is important to consider configuration values appropriate for the instance of your size in order to avoid starving the provider, or Redis, of connections.
VMPooler uses a connection pool for Redis to improve efficiency and ensure thread safe usage. At Puppet, we run an instance with about 100 pools at any given time. We have to provide it with 200 Redis connections to the Redis connection pool, and a timeout for connections of 40 seconds, to avoid timeouts. Because metrics are generated for connection available and waited, your metrics provider will need to be able to cope with this volume. Prometheus or StatsD is recommended to ensure metrics get delivered reliably. VMPooler uses a connection pool for Redis to improve efficiency and ensure thread safe usage. At Puppet, we run an instance with about 100 pools at any given time. We have to provide it with 200 Redis connections to the Redis connection pool, and a timeout for connections of 40 seconds, to avoid timeouts. Because metrics are generated for connection available and waited, your metrics provider will need to be able to cope with this volume. Prometheus or StatsD is recommended to ensure metrics get delivered reliably.

View file

@ -1,12 +1,12 @@
# This Dockerfile is intended to be used with the # This Dockerfile is intended to be used with the
# docker-compose file in the same directory. # docker-compose file in the same directory.
FROM jruby:9.2-jdk FROM jruby:9.3-jdk
ENV RACK_ENV=production ENV RACK_ENV=production
RUN apt-get update -qq && \ RUN apt-get update -qq && \
apt-get install -y --no-install-recommends make && \ apt-get install -y --no-install-recommends make git && \
apt-get clean autoclean && \ apt-get clean autoclean && \
apt-get autoremove -y && \ apt-get autoremove -y && \
rm -rf /var/lib/apt/lists/* rm -rf /var/lib/apt/lists/*

View file

@ -18,7 +18,6 @@ services:
- VMPOOLER_CONFIG_FILE=/etc/vmpooler/vmpooler.yaml - VMPOOLER_CONFIG_FILE=/etc/vmpooler/vmpooler.yaml
- REDIS_SERVER=redislocal - REDIS_SERVER=redislocal
- LOGFILE=/dev/null - LOGFILE=/dev/null
- JRUBY_OPTS=-Xinvokedynamic.yield=false
- VMPOOLER_TRACING_ENABLED=true - VMPOOLER_TRACING_ENABLED=true
- VMPOOLER_TRACING_JAEGER_HOST=http://jaeger-aio:14268/api/traces - VMPOOLER_TRACING_JAEGER_HOST=http://jaeger-aio:14268/api/traces
image: vmpooler-local image: vmpooler-local

View file

@ -4,5 +4,5 @@ docker run -it --rm \
-v $(pwd)/docker:/app \ -v $(pwd)/docker:/app \
-v $(pwd):/app/vmpooler-source \ -v $(pwd):/app/vmpooler-source \
$(grep ^FROM docker/Dockerfile |cut -d ' ' -f2) \ $(grep ^FROM docker/Dockerfile |cut -d ' ' -f2) \
/bin/bash -c 'apt-get update -qq && apt-get install -y --no-install-recommends make && cd /app && gem install bundler && bundle install --jobs 3 && bundle update; echo "LOCK_FILE_UPDATE_EXIT_CODE=$?"' /bin/bash -c 'apt-get update -qq && apt-get install -y --no-install-recommends make git && cd /app && gem install bundler && bundle install --jobs 3 && bundle update; echo "LOCK_FILE_UPDATE_EXIT_CODE=$?"'
rmdir docker/vmpooler-source rmdir docker/vmpooler-source

View file

@ -1,5 +1,5 @@
# frozen_string_literal: true # frozen_string_literal: true
module Vmpooler module Vmpooler
VERSION = '2.3.0' VERSION = '2.4.0'
end end

View file

@ -3,4 +3,4 @@
docker run -it --rm \ docker run -it --rm \
-v $(pwd):/app \ -v $(pwd):/app \
$(grep ^FROM docker/Dockerfile |cut -d ' ' -f2) \ $(grep ^FROM docker/Dockerfile |cut -d ' ' -f2) \
/bin/bash -c 'apt-get update -qq && apt-get install -y --no-install-recommends make && cd /app && gem install bundler && bundle install --jobs 3 && bundle update; echo "LOCK_FILE_UPDATE_EXIT_CODE=$?"' /bin/bash -c 'apt-get update -qq && apt-get install -y --no-install-recommends make git && cd /app && gem install bundler && bundle install --jobs 3 && bundle update; echo "LOCK_FILE_UPDATE_EXIT_CODE=$?"'

View file

@ -11,7 +11,6 @@ Gem::Specification.new do |s|
s.summary = 'vmpooler provides configurable pools of instantly-available (running) virtual machines' s.summary = 'vmpooler provides configurable pools of instantly-available (running) virtual machines'
s.homepage = 'https://github.com/puppetlabs/vmpooler' s.homepage = 'https://github.com/puppetlabs/vmpooler'
s.license = 'Apache-2.0' s.license = 'Apache-2.0'
s.required_ruby_version = Gem::Requirement.new('>= 2.3.0')
s.files = Dir[ "bin/*", "lib/**/*" ] s.files = Dir[ "bin/*", "lib/**/*" ]
s.bindir = 'bin' s.bindir = 'bin'
@ -21,7 +20,6 @@ Gem::Specification.new do |s|
s.add_dependency 'connection_pool', '~> 2.2' s.add_dependency 'connection_pool', '~> 2.2'
s.add_dependency 'deep_merge', '~> 1.2' s.add_dependency 'deep_merge', '~> 1.2'
s.add_dependency 'net-ldap', '~> 0.16' s.add_dependency 'net-ldap', '~> 0.16'
s.add_dependency 'nokogiri', '~> 1.10'
s.add_dependency 'opentelemetry-exporter-jaeger', '= 0.20.1' s.add_dependency 'opentelemetry-exporter-jaeger', '= 0.20.1'
s.add_dependency 'opentelemetry-instrumentation-concurrent_ruby', '= 0.19.2' s.add_dependency 'opentelemetry-instrumentation-concurrent_ruby', '= 0.19.2'
s.add_dependency 'opentelemetry-instrumentation-http_client', '= 0.19.4' s.add_dependency 'opentelemetry-instrumentation-http_client', '= 0.19.4'