Skip to content

Commit

Permalink
feat(patch): control the proxy_upstream in lua side (#14029)
Browse files Browse the repository at this point in the history
  • Loading branch information
oowl authored Dec 23, 2024
1 parent 5b0da6d commit c77a178
Show file tree
Hide file tree
Showing 3 changed files with 34 additions and 1 deletion.
2 changes: 1 addition & 1 deletion .requirements
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ LIBEXPAT_SHA256=d4cf38d26e21a56654ffe4acd9cd5481164619626802328506a2869afab29ab3

# Note: git repositories can be loaded from local path if path is set as value

LUA_KONG_NGINX_MODULE=f85f92191fb98dbeec614a418d46b008f6a107ce # 0.14.0
LUA_KONG_NGINX_MODULE=c967e8326179c86680c0f34d82ee087765aed19a # 0.15.0
LUA_RESTY_LMDB=9da0e9f3313960d06e2d8e718b7ac494faa500f1 # 1.6.0
LUA_RESTY_EVENTS=bc85295b7c23eda2dbf2b4acec35c93f77b26787 # 0.3.1
LUA_RESTY_SIMDJSON=7e6466ce91b2bc763b45701a4f055e94b1e8143b # 1.1.0
Expand Down
29 changes: 29 additions & 0 deletions build/openresty/patches/nginx-1.25.3_10-proxy-upstream-next.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
diff --git a/bundle/nginx-1.25.3/src/http/ngx_http_upstream.c b/bundle/nginx-1.25.3/src/http/ngx_http_upstream.c
index 2be233c..7f7132d 100644
--- a/bundle/nginx-1.25.3/src/http/ngx_http_upstream.c
+++ b/bundle/nginx-1.25.3/src/http/ngx_http_upstream.c
@@ -2563,7 +2563,11 @@ ngx_http_upstream_test_next(ngx_http_request_t *r, ngx_http_upstream_t *u)
}

if (u->peer.tries > 1
+#if (NGX_HTTP_LUA_KONG)
+ && ((ngx_http_lua_kong_get_next_upstream_mask(r, u->conf->next_upstream) & mask) == mask)
+#else
&& ((u->conf->next_upstream & mask) == mask)
+#endif
&& !(u->request_sent && r->request_body_no_buffering)
&& !(timeout && ngx_current_msec - u->peer.start_time >= timeout))
{
@@ -4420,7 +4424,12 @@ ngx_http_upstream_next(ngx_http_request_t *r, ngx_http_upstream_t *u,
}

if (u->peer.tries == 0
+#if (NGX_HTTP_LUA_KONG)
+ || ((ngx_http_lua_kong_get_next_upstream_mask(r, u->conf->next_upstream) & ft_type) != ft_type)
+#else
|| ((u->conf->next_upstream & ft_type) != ft_type)
+#endif
+
|| (u->request_sent && r->request_body_no_buffering)
|| (timeout && ngx_current_msec - u->peer.start_time >= timeout))
{
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
message: |
Add a patch for kong.resty.set_next_upstream() to control the next upstream retry logic in lua side. [Kong/lua-kong-nginx-module#98](https://github.com/Kong/lua-kong-nginx-module/pull/98)
type: bugfix
scope: Core

1 comment on commit c77a178

@github-actions
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Bazel Build

Docker image available kong/kong:c77a1786f2792bb1255b411281a7a9b6473fe469
Artifacts available https://github.com/Kong/kong/actions/runs/12469279776

Please sign in to comment.