diff --git a/CHANGELOG.md b/CHANGELOG.md index 7524c53..e592c31 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,11 @@ correspond to git tags (`vX.Y.Z`) and `nodejs/package.json`'s `version`. ## [Unreleased] +## [1.2.2] - 2026-07-21 + +### Fixed +- Multi-target load balancing (added in 1.2.0) crashed every request to a load-balanced host: `ops/nginx_conf/targetinfo.lua` required a nonexistent `resty.balancer.round_robin` module. The `lua-resty-balancer` rock installed by the Dockerfile/`install.sh` doesn't provide that path — it provides `resty.roundrobin` (constructed as `roundrobin:new(nodes)`, not `:new()` + `:reinit(nodes)`). Fixed `targetinfo.lua` to use the real module and API; verified end-to-end that requests now round-robin across targets with no Lua errors. + ## [1.2.1] - 2026-07-21 ### Fixed diff --git a/nodejs/package-lock.json b/nodejs/package-lock.json index 37b8d42..e691f1f 100644 --- a/nodejs/package-lock.json +++ b/nodejs/package-lock.json @@ -1,12 +1,12 @@ { "name": "proxy-api", - "version": "1.2.1", + "version": "1.2.2", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "proxy-api", - "version": "1.2.1", + "version": "1.2.2", "license": "MIT", "dependencies": { "@fortawesome/fontawesome-free": "^7.3.0", diff --git a/nodejs/package.json b/nodejs/package.json index 09504a4..d7d1788 100644 --- a/nodejs/package.json +++ b/nodejs/package.json @@ -1,6 +1,6 @@ { "name": "proxy-api", - "version": "1.2.1", + "version": "1.2.2", "author": [ { "name": "William Mantly", diff --git a/ops/nginx_conf/targetinfo.lua b/ops/nginx_conf/targetinfo.lua index 4c5d0a3..6a72fa3 100644 --- a/ops/nginx_conf/targetinfo.lua +++ b/ops/nginx_conf/targetinfo.lua @@ -62,7 +62,7 @@ function M.get(ngx, domain, targetInfo) local json = require "cjson" local redis = require "resty.redis" - local round_robin = require "resty.balancer.round_robin" + local roundrobin = require "resty.roundrobin" if not domain then return nil, 499 @@ -114,12 +114,11 @@ function M.get(ngx, domain, targetInfo) local cache_key = domain .. "_" .. (res["updated_on"] or "0") if not M.host_balancers[domain] or M.host_balancers[domain].key ~= cache_key then - local b = round_robin:new() local nodes = {} for _, t in ipairs(target_list) do nodes[t] = 1 end - b:reinit(nodes) + local b = roundrobin:new(nodes) M.host_balancers[domain] = { b = b, key = cache_key } end