From 7564476d03f10d414bb785c1cbe538632f24b724 Mon Sep 17 00:00:00 2001 From: Austin Blatt Date: Sat, 27 Dec 2025 13:28:07 -0800 Subject: [PATCH 01/14] Update dependencies for Jetty 12 migration Signed-off-by: Austin Blatt --- project.clj | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/project.clj b/project.clj index 7c3ab1d9c..f245d63e9 100644 --- a/project.clj +++ b/project.clj @@ -183,17 +183,17 @@ [org.openvoxproject/ssl-utils "3.6.4"] [org.openvoxproject/stockpile "1.0.1"] [org.openvoxproject/structured-logging "1.0.1"] - [org.openvoxproject/trapperkeeper "4.3.5"] - [org.openvoxproject/trapperkeeper "4.3.5" :classifier "test"] - [org.openvoxproject/trapperkeeper-authorization "2.2.0"] - [org.openvoxproject/trapperkeeper-authorization "2.2.0" :exclusions [io.dropwizard.metrics/metrics-core]] + [org.openvoxproject/trapperkeeper "5.0.0"] + [org.openvoxproject/trapperkeeper "5.0.0" :classifier "test"] + [org.openvoxproject/trapperkeeper-authorization "2.3.0"] + [org.openvoxproject/trapperkeeper-authorization "2.3.0" :exclusions [io.dropwizard.metrics/metrics-core]] [org.openvoxproject/trapperkeeper-filesystem-watcher "1.5.2"] - [org.openvoxproject/trapperkeeper-metrics "2.2.0"] - [org.openvoxproject/trapperkeeper-metrics "2.2.0" :exclusions [io.dropwizard.metrics/metrics-core]] - [org.openvoxproject/trapperkeeper-status "1.4.0"] - [org.openvoxproject/trapperkeeper-status "1.4.0" :exclusions [io.dropwizard.metrics/metrics-core]] - [org.openvoxproject/trapperkeeper-webserver "10.0.0"] - [org.openvoxproject/trapperkeeper-webserver "10.0.0" :classifier "test"] + [org.openvoxproject/trapperkeeper-metrics "2.3.0"] + [org.openvoxproject/trapperkeeper-metrics "2.3.0" :exclusions [io.dropwizard.metrics/metrics-core]] + [org.openvoxproject/trapperkeeper-status "1.5.0"] + [org.openvoxproject/trapperkeeper-status "1.5.0" :exclusions [io.dropwizard.metrics/metrics-core]] + [org.openvoxproject/trapperkeeper-webserver "12.0.0"] + [org.openvoxproject/trapperkeeper-webserver "12.0.0" :classifier "test"] [org.postgresql/postgresql "42.7.11"] [org.yaml/snakeyaml "2.6"] [prismatic/schema "1.4.1"] From ee05857a6d6894d0a2aedc4a73bc872a172b6db7 Mon Sep 17 00:00:00 2001 From: Austin Blatt Date: Sat, 27 Dec 2025 13:29:20 -0800 Subject: [PATCH 02/14] Simplify response->channel for Jetty 12 Jetty 12 provides direct access to the EndPoint through ServletChannel, eliminating the need to walk the HttpOutput interceptor chain. Remove the last-interceptor helper which is no longer needed. Signed-off-by: Austin Blatt --- src/puppetlabs/puppetdb/utils.clj | 15 ++------------- 1 file changed, 2 insertions(+), 13 deletions(-) diff --git a/src/puppetlabs/puppetdb/utils.clj b/src/puppetlabs/puppetdb/utils.clj index d0d428429..c491fd1eb 100644 --- a/src/puppetlabs/puppetdb/utils.clj +++ b/src/puppetlabs/puppetdb/utils.clj @@ -582,17 +582,6 @@ (on-timeout) (time-limited-seq (rest s) deadline-ns on-timeout)))))))) -(defn- last-interceptor [interceptor] - ;; See the jetty org.eclipse.jetty.server.HttpOutput javadocs: - ;; - ;; The HttpChannel is an Interceptor and is always the - ;; last link in any Interceptor chain. - ;; - ;; ...and it ends up being something that is or has a SocketChannel. - (->> (iterate #(.getNextInterceptor %) interceptor) - (take-while identity) - last)) - (defprotocol HasSocketChannel (get-socket-channel [this] "Returns the associated socket channel.")) @@ -604,7 +593,7 @@ "Returns the socket channel (i.e. something that can be registered with a Selector) associated with a jetty response object." [response] + ;; In Jetty 12, access the EndPoint through ServletChannel directly. ;; Sometimes the transport is a SocketChannel, and sometimes it's an ;; EndPoint. - (-> response .getHttpOutput .getInterceptor last-interceptor - .getEndPoint .getTransport get-socket-channel)) + (-> response .getServletChannel .getEndPoint .getTransport get-socket-channel)) From 0f40e5325698e23abd2c1ff92eac152ba31c1b19 Mon Sep 17 00:00:00 2001 From: nmburgan <13688219+nmburgan@users.noreply.github.com> Date: Mon, 11 May 2026 13:06:06 -0700 Subject: [PATCH 03/14] Update filesystem-watcher Signed-off-by: nmburgan <13688219+nmburgan@users.noreply.github.com> --- project.clj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/project.clj b/project.clj index f245d63e9..cbc8eb23f 100644 --- a/project.clj +++ b/project.clj @@ -187,7 +187,7 @@ [org.openvoxproject/trapperkeeper "5.0.0" :classifier "test"] [org.openvoxproject/trapperkeeper-authorization "2.3.0"] [org.openvoxproject/trapperkeeper-authorization "2.3.0" :exclusions [io.dropwizard.metrics/metrics-core]] - [org.openvoxproject/trapperkeeper-filesystem-watcher "1.5.2"] + [org.openvoxproject/trapperkeeper-filesystem-watcher "1.6.0"] [org.openvoxproject/trapperkeeper-metrics "2.3.0"] [org.openvoxproject/trapperkeeper-metrics "2.3.0" :exclusions [io.dropwizard.metrics/metrics-core]] [org.openvoxproject/trapperkeeper-status "1.5.0"] From b1486040e1b263da48af8de00b2a5a69ffd67d70 Mon Sep 17 00:00:00 2001 From: nmburgan <13688219+nmburgan@users.noreply.github.com> Date: Mon, 11 May 2026 13:06:32 -0700 Subject: [PATCH 04/14] Update ring-core to 1.15.3 Signed-off-by: nmburgan <13688219+nmburgan@users.noreply.github.com> --- project.clj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/project.clj b/project.clj index cbc8eb23f..c8bb3c625 100644 --- a/project.clj +++ b/project.clj @@ -199,7 +199,7 @@ [prismatic/schema "1.4.1"] [riddley "0.2.2"] [ring/ring-codec "1.3.0"] - [ring/ring-core "1.14.2"] + [ring/ring-core "1.15.3"] [ring/ring-mock "0.6.2"] [robert/hooke "1.3.0"] [timofreiberg/bultitude "0.3.1"] From 5f7b9cec767cdc1a67063560e7dcfae8cde965b0 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 11 May 2026 20:32:11 +0000 Subject: [PATCH 05/14] Update dependency net.logstash.logback:logstash-logback-encoder to v9 --- project.clj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/project.clj b/project.clj index c8bb3c625..ea53d5eb0 100644 --- a/project.clj +++ b/project.clj @@ -163,7 +163,7 @@ [instaparse "1.5.0"] [metrics-clojure "2.10.0"] [murphy "0.5.3"] - [net.logstash.logback/logstash-logback-encoder "7.4"] + [net.logstash.logback/logstash-logback-encoder "9.0"] [org.apache.commons/commons-lang3 "3.20.0"] [org.bouncycastle/bcpkix-jdk18on "1.84"] [org.bouncycastle/bcpkix-fips "1.0.8"] From af613471a9182f2efa4ca52f5d9d7aa42f60cc95 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 11 May 2026 21:42:13 +0000 Subject: [PATCH 06/14] Update dependency ring:ring-core to v1.15.4 --- project.clj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/project.clj b/project.clj index ea53d5eb0..fb686ab47 100644 --- a/project.clj +++ b/project.clj @@ -199,7 +199,7 @@ [prismatic/schema "1.4.1"] [riddley "0.2.2"] [ring/ring-codec "1.3.0"] - [ring/ring-core "1.15.3"] + [ring/ring-core "1.15.4"] [ring/ring-mock "0.6.2"] [robert/hooke "1.3.0"] [timofreiberg/bultitude "0.3.1"] From 5fb6ddeec461061e29971404f5dc365e4f771513 Mon Sep 17 00:00:00 2001 From: nmburgan <13688219+nmburgan@users.noreply.github.com> Date: Mon, 11 May 2026 17:59:12 -0700 Subject: [PATCH 07/14] Use Ruby 4 for builder image and cache it Rather than recreate the builder container every time using rbenv, which takes quite a while, this uses the off-the-shell Ruby 4 Bookworm image. It also caches the image in GitHub for the PR job that tests the build. Signed-off-by: nmburgan <13688219+nmburgan@users.noreply.github.com> --- .github/workflows/main.yml | 20 +++++++++++++++++++- Dockerfile | 26 +++++++++++++------------- rakelib/build.rake | 2 +- 3 files changed, 33 insertions(+), 15 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 4d7adcf4f..c21afa0ed 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -135,8 +135,26 @@ jobs: - name: setup ruby uses: ruby/setup-ruby@v1 with: - ruby-version: '3.2' + ruby-version: '4.0' bundler-cache: true + - id: docker-cache + uses: actions/cache/restore@v4 + with: + path: /tmp/ezbake-builder.tar + key: docker-ezbake-${{ hashFiles('Dockerfile') }} + - name: load or build docker image + run: | + if [[ -f /tmp/ezbake-builder.tar ]]; then + docker load -i /tmp/ezbake-builder.tar + else + docker build -t ezbake-builder . + docker save ezbake-builder -o /tmp/ezbake-builder.tar + fi + - uses: actions/cache/save@v4 + if: always() && steps.docker-cache.outputs.cache-hit != 'true' + with: + path: /tmp/ezbake-builder.tar + key: docker-ezbake-${{ hashFiles('Dockerfile') }} - name: build it run: bundle exec rake vox:build - name: get version diff --git a/Dockerfile b/Dockerfile index 91448eebf..74b2df1cd 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,16 +1,16 @@ -FROM almalinux:9 +FROM ruby:4.0-bookworm -WORKDIR / +RUN apt-get update && \ + apt-get install -y --no-install-recommends \ + openjdk-17-jdk-headless \ + rpm \ + && rm -rf /var/lib/apt/lists/* -RUN dnf install -y --enablerepo=crb vim wget git rpm-build java-17-openjdk java-17-openjdk-devel libyaml-devel zlib zlib-devel gcc-c++ patch readline readline-devel libffi-devel openssl-devel make bzip2 autoconf automake libtool bison sqlite-devel -RUN wget https://raw.githubusercontent.com/technomancy/leiningen/stable/bin/lein -RUN chmod a+x lein -RUN mv lein /usr/local/bin -RUN wget -q https://github.com/rbenv/rbenv-installer/raw/HEAD/bin/rbenv-installer -O- | bash -RUN /bin/bash --login -c 'rbenv install 3.2.9' -RUN /bin/bash --login -c 'rbenv global 3.2.9' -RUN git config --global user.email "openvox@voxpupuli.org" -RUN git config --global user.name "Vox Pupuli" -RUN git config --global --add safe.directory /code +RUN wget -q https://raw.githubusercontent.com/technomancy/leiningen/stable/bin/lein -O /usr/local/bin/lein && \ + chmod a+x /usr/local/bin/lein -CMD ["tail -f /dev/null"] +RUN git config --global user.email "openvox@voxpupuli.org" && \ + git config --global user.name "Vox Pupuli" && \ + git config --global --add safe.directory /code + +CMD ["tail", "-f", "/dev/null"] diff --git a/rakelib/build.rake b/rakelib/build.rake index 5c4e98a4a..5a5588481 100644 --- a/rakelib/build.rake +++ b/rakelib/build.rake @@ -164,7 +164,7 @@ module Vox ezbake_version_var = ENV['EZBAKE_VERSION'] ? "EZBAKE_VERSION=#{ENV['EZBAKE_VERSION']}" : "" puts 'Building openvoxdb' - @runner.exec('cd /code && rm -rf ruby output && bundle install --without test && lein install') + @runner.exec('cd /code && rm -rf ruby output && bundle config set without test && bundle install && lein install') unless @debs.empty? && @nonfips_rpms.empty? @runner.exec( From 7992ef9cc9006af5ccef340ce1e6d4a07ed60be3 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 12 May 2026 21:26:32 +0000 Subject: [PATCH 08/14] Update dependency org.openvoxproject:trapperkeeper-webserver to v12.0.1 --- project.clj | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/project.clj b/project.clj index fb686ab47..39cb1c668 100644 --- a/project.clj +++ b/project.clj @@ -192,8 +192,8 @@ [org.openvoxproject/trapperkeeper-metrics "2.3.0" :exclusions [io.dropwizard.metrics/metrics-core]] [org.openvoxproject/trapperkeeper-status "1.5.0"] [org.openvoxproject/trapperkeeper-status "1.5.0" :exclusions [io.dropwizard.metrics/metrics-core]] - [org.openvoxproject/trapperkeeper-webserver "12.0.0"] - [org.openvoxproject/trapperkeeper-webserver "12.0.0" :classifier "test"] + [org.openvoxproject/trapperkeeper-webserver "12.0.1"] + [org.openvoxproject/trapperkeeper-webserver "12.0.1" :classifier "test"] [org.postgresql/postgresql "42.7.11"] [org.yaml/snakeyaml "2.6"] [prismatic/schema "1.4.1"] From ed88cadef194c885ceb473a774fe19b33ad1ad50 Mon Sep 17 00:00:00 2001 From: nmburgan <13688219+nmburgan@users.noreply.github.com> Date: Tue, 12 May 2026 14:34:13 -0700 Subject: [PATCH 09/14] Bump ezbake to 2.7.6 Signed-off-by: nmburgan <13688219+nmburgan@users.noreply.github.com> --- project.clj | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/project.clj b/project.clj index 39cb1c668..e967c81c2 100644 --- a/project.clj +++ b/project.clj @@ -371,7 +371,7 @@ ;; via the release_scripts/sync_ezbake_dep.rb script. [org.openvoxproject/puppetdb "8.14.0-SNAPSHOT"]] :name "puppetdb" - :plugins [[org.openvoxproject/lein-ezbake ~(or (System/getenv "EZBAKE_VERSION") "2.7.4")]]} + :plugins [[org.openvoxproject/lein-ezbake ~(or (System/getenv "EZBAKE_VERSION") "2.7.6")]]} :ezbake-fips {:dependencies ^:replace [[org.bouncycastle/bcpkix-fips] [org.bouncycastle/bc-fips] [org.bouncycastle/bctls-fips] @@ -381,7 +381,7 @@ [org.openvoxproject/puppetdb "8.14.0-SNAPSHOT"]] :name "puppetdb" :uberjar-exclusions [#"^org/bouncycastle/.*"] - :plugins [[org.openvoxproject/lein-ezbake ~(or (System/getenv "EZBAKE_VERSION") "2.7.4")]]} + :plugins [[org.openvoxproject/lein-ezbake ~(or (System/getenv "EZBAKE_VERSION") "2.7.6")]]} :testutils {:source-paths ^:replace ["test"] :resource-paths ^:replace [] ;; Something else may need adjustment, but From 312935bae4cae7135ddbb2484ff01f55f7b1d14a Mon Sep 17 00:00:00 2001 From: nmburgan <13688219+nmburgan@users.noreply.github.com> Date: Tue, 12 May 2026 14:34:42 -0700 Subject: [PATCH 10/14] Bump lein min version to 2.12 Signed-off-by: nmburgan <13688219+nmburgan@users.noreply.github.com> --- project.clj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/project.clj b/project.clj index e967c81c2..abc00bacb 100644 --- a/project.clj +++ b/project.clj @@ -110,7 +110,7 @@ :url "https://github.com/openvoxproject/openvoxdb/" - :min-lein-version "2.7.1" + :min-lein-version "2.12.0" ;; Abort when version ranges or version conflicts are detected in ;; dependencies. Also supports :warn to simply emit warnings. From fdf9e7f9c77108a4aadf77221b18b9f4517e7b56 Mon Sep 17 00:00:00 2001 From: nmburgan <13688219+nmburgan@users.noreply.github.com> Date: Tue, 12 May 2026 15:43:41 -0700 Subject: [PATCH 11/14] Update ezbake to 2.7.7 Including the ostruct change Signed-off-by: nmburgan <13688219+nmburgan@users.noreply.github.com> --- project.clj | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/project.clj b/project.clj index abc00bacb..664a93187 100644 --- a/project.clj +++ b/project.clj @@ -371,7 +371,7 @@ ;; via the release_scripts/sync_ezbake_dep.rb script. [org.openvoxproject/puppetdb "8.14.0-SNAPSHOT"]] :name "puppetdb" - :plugins [[org.openvoxproject/lein-ezbake ~(or (System/getenv "EZBAKE_VERSION") "2.7.6")]]} + :plugins [[org.openvoxproject/lein-ezbake ~(or (System/getenv "EZBAKE_VERSION") "2.7.7")]]} :ezbake-fips {:dependencies ^:replace [[org.bouncycastle/bcpkix-fips] [org.bouncycastle/bc-fips] [org.bouncycastle/bctls-fips] @@ -381,7 +381,7 @@ [org.openvoxproject/puppetdb "8.14.0-SNAPSHOT"]] :name "puppetdb" :uberjar-exclusions [#"^org/bouncycastle/.*"] - :plugins [[org.openvoxproject/lein-ezbake ~(or (System/getenv "EZBAKE_VERSION") "2.7.6")]]} + :plugins [[org.openvoxproject/lein-ezbake ~(or (System/getenv "EZBAKE_VERSION") "2.7.7")]]} :testutils {:source-paths ^:replace ["test"] :resource-paths ^:replace [] ;; Something else may need adjustment, but From aca7d9ef117d72d026199f611e37f341e9a588d3 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 12 May 2026 22:50:18 +0000 Subject: [PATCH 12/14] Update dependency org.clojure:clojure to v1.12.5 --- project.clj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/project.clj b/project.clj index 664a93187..4f9bb8448 100644 --- a/project.clj +++ b/project.clj @@ -121,7 +121,7 @@ ;; and to avoid having to define versions in multiple places. If a component ;; defined under :dependencies ends up causing an error due to :pedantic? :abort, ;; because it is a dep of a dep with a different version, move it here. - :managed-dependencies [[org.clojure/clojure "1.12.4"] + :managed-dependencies [[org.clojure/clojure "1.12.5"] [org.clojure/core.async "1.9.865"] [org.clojure/core.match "1.1.1"] [org.clojure/core.memoize "1.2.281"] From 35fafd9222193e6ba3f175a07c723b5f0e89483c Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 13 May 2026 23:26:26 +0000 Subject: [PATCH 13/14] Update slf4j-version to v2.0.18 --- project.clj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/project.clj b/project.clj index 4f9bb8448..6c2215d65 100644 --- a/project.clj +++ b/project.clj @@ -98,7 +98,7 @@ (def i18n-version "1.0.4") (def jackson-version "2.21.3") -(def slf4j-version "2.0.17") +(def slf4j-version "2.0.18") ;; If you modify the version manually, run release_scripts/sync_ezbake_dep.rb to keep ;; the ezbake dependency in sync. From 2e1759d472844d6f1609953a1e30b72c0361a588 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 13 May 2026 23:45:42 +0000 Subject: [PATCH 14/14] Update dependency org.openvoxproject:trapperkeeper-webserver to v12.0.2 --- project.clj | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/project.clj b/project.clj index 6c2215d65..ed55d7742 100644 --- a/project.clj +++ b/project.clj @@ -192,8 +192,8 @@ [org.openvoxproject/trapperkeeper-metrics "2.3.0" :exclusions [io.dropwizard.metrics/metrics-core]] [org.openvoxproject/trapperkeeper-status "1.5.0"] [org.openvoxproject/trapperkeeper-status "1.5.0" :exclusions [io.dropwizard.metrics/metrics-core]] - [org.openvoxproject/trapperkeeper-webserver "12.0.1"] - [org.openvoxproject/trapperkeeper-webserver "12.0.1" :classifier "test"] + [org.openvoxproject/trapperkeeper-webserver "12.0.2"] + [org.openvoxproject/trapperkeeper-webserver "12.0.2" :classifier "test"] [org.postgresql/postgresql "42.7.11"] [org.yaml/snakeyaml "2.6"] [prismatic/schema "1.4.1"]