Skip to content

Update webrick to 1.8.1

Matthias Käppler requested to merge mk-webrick-1.8 into master

What does this MR do and why?

This fixes a library-internal call into the deprecated Socket.gethostbyname stdlib method. It should fix deprecation warnings logged like this one: https://log.gprd.gitlab.net/app/discover#/doc/AWNABDRwNDuQHTm2tH6l/pubsub-sidekiq-inf-gprd-003283?id=pkXEIYcBneguPzSVfruE

The method call was removed in this commit: https://github.com/ruby/webrick/commit/eb92c74b0a340907a73fe3d39e40071e829beb33

Changelog:

1.8.1:

    Body should be non-frozen by default. by @ioquatix in #103
    Join test thread. by @ioquatix in #104
    Fix several regexp warnings. by @ioquatix in #105

1.8.0:

    Use frozen strings by @kirs in #65
    Use test-unit by @hsbt in #66
    More rubies on CI, deprecating ruby 2.3 due to test failure by @mathieujobin in #68
    Adds common mime types by @gotoken in #75
    add mime type for .webmanifest extension by @olleolleolle in #76
    CI: use bundler-cache: true by @olleolleolle in #79
    Typo by @printfinn in #78
    s/RubyVM::JIT/RubyVM::MJIT/g by @k0kubun in #82
    Fix invalid use of IP addresses in SNI by @jeremyevans in #83
    Bump actions/checkout from 2 to 3 by @dependabot in #91
    remove unneeded bin/console and bin/setup files from gemspec by @Benjamin-L in #94
    Accept put requests by @bharjr01 in #70
    Move the host request parsing to a separate method. by @wishdev in #85
    Only output prime information to $stderr if $VERBOSE by @jeremyevans in #88
    Better support for connection upgrade and bi-directional streaming. by @ioquatix in #101

1.7.0:

    Extract creation of Net::HTTP in httpproxy by @wishdev in #41
    Fix httpd error in CJK directory by @jeremyevans in #42
    Use GitHub Actions instead of Travis CI (retry) by @deivid-rodriguez in #40
    Skip env-locale-sensitive CGI test on the "java" platform by @headius in #46
    Make readpartial limit chunk to appropriate size by @wishdev in #45
    Do not use ensure in a block without begin by @jeremyevans in #49
    Allow empty POST and PUT requests without content length by @jeremyevans in #50
    Only run test_big_bodies test on Ruby 2.5+ by @jeremyevans in #51
    Fix test when run with US-ASCII encoding by @jeremyevans in #52
    Allow shutdown_pipe to be passed in via @config by @wishdev in #44
    Ensure server port numbers are numeric and ensure they are stored as … by @wishdev in #55
    Fix shutdown_pipe test issue by @wishdev in #54
    Allow EPROTOTYPE error when writing junk to a socket by @jeremyevans in #56
    Use ruby/setup-ruby instead of actions/setup-ruby by @hsbt in #58
    Refix test_shutdown_pipe by @wishdev in #59
    add mime type of extention mjs by @paulownia in #60
    Make it more strict to interpret some headers by @mame in #61

https://my.diffend.io/gems/webrick/1.6.1/1.8.1

Screenshots or screen recordings

Screenshots are required for UI changes, and strongly recommended for all other merge requests.

How to set up and validate locally

The only thing I'm aware of that we use WEBrick for are:

  • the embedded HealthChecks::Server for Sidekiq, which services the readiness and liveness endpoints for kubernetes
  • the metrics_server process that services web and sidekiq metrics into Prometheus

Tested health-check server and metrics exporter for Sidekiq:

Logs:

sidekiq_1           | [2023-03-27 06:45:19] INFO  WEBrick 1.8.1
sidekiq_1           | [2023-03-27 06:45:19] INFO  ruby 3.0.5 (2022-11-24) [x86_64-linux]
sidekiq_1           | [2023-03-27 06:45:19] INFO  WEBrick::HTTPServer#start: pid=179 port=3907

This is the health-check server. Curling it:

$ docker exec -it gl-gck_sidekiq_1 bash
git@4796007fb8fe:~/gitlab$ curl localhost:3907/readiness
{"status":"ok"}

Metrics server uses the same setup and works too

MR acceptance checklist

This checklist encourages us to confirm any changes have been analyzed to reduce risks in quality, performance, reliability, security, and maintainability.

Edited by Matthias Käppler

Merge request reports