This is an automated email from the ASF dual-hosted git repository.

wenming pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-apisix.git


The following commit(s) were added to refs/heads/master by this push:
     new 70d3f0b  bug: fixed bug when no valid upstream node. (#893)
70d3f0b is described below

commit 70d3f0b608b178798e846c1fab867566720e0df0
Author: YuanSheng Wang <membp...@gmail.com>
AuthorDate: Mon Nov 25 16:46:20 2019 +0800

    bug: fixed bug when no valid upstream node. (#893)
---
 lua/apisix/balancer.lua |  3 ++-
 t/node/chash-balance.t  | 70 ++++++++++++++++++++++++++++++++++++++++++++++---
 2 files changed, 68 insertions(+), 5 deletions(-)

diff --git a/lua/apisix/balancer.lua b/lua/apisix/balancer.lua
index 01cb0f5..6d37426 100644
--- a/lua/apisix/balancer.lua
+++ b/lua/apisix/balancer.lua
@@ -240,7 +240,8 @@ local function pick_server(route, ctx)
 
     local server, err = server_picker.get(ctx)
     if not server then
-        return nil, nil, "failed to find valid upstream server" .. err
+        err = err or "no valid upstream node"
+        return nil, nil, "failed to find valid upstream server, " .. err
     end
 
     if up_conf.timeout then
diff --git a/t/node/chash-balance.t b/t/node/chash-balance.t
index 247fc37..dd24e69 100644
--- a/t/node/chash-balance.t
+++ b/t/node/chash-balance.t
@@ -321,8 +321,8 @@ passed
                     return
                 end
                 ports_count[res.body] = (ports_count[res.body] or 0) + 1
-            end 
- 
+            end
+
             local ports_arr = {}
             for port, count in pairs(ports_count) do
                 table.insert(ports_arr, {port = port, count = count})
@@ -399,8 +399,8 @@ passed
                     return
                 end
                 ports_count[res.body] = (ports_count[res.body] or 0) + 1
-            end 
- 
+            end
+
             local ports_arr = {}
             for port, count in pairs(ports_count) do
                 table.insert(ports_arr, {port = port, count = count})
@@ -421,3 +421,65 @@ GET /t
 [{"count":5,"port":"1982"},{"count":7,"port":"1981"},{"count":6,"port":"1980"}]
 --- no_error_log
 [error]
+
+
+
+=== TEST 11: set route(weight 0)
+--- config
+    location /t {
+        content_by_lua_block {
+            local t = require("lib.test_admin").test
+            local code, body = t('/apisix/admin/routes/1',
+                 ngx.HTTP_PUT,
+                 [[{
+                    "uri": "/server_port",
+                    "upstream": {
+                        "key": "arg_device_id",
+                        "type": "chash",
+                        "nodes": {
+                            "127.0.0.1:1980": 0,
+                            "127.0.0.1:1981": 0
+                        }
+                    }
+                }]]
+                )
+
+            if code >= 300 then
+                ngx.status = code
+            end
+            ngx.say(body)
+        }
+    }
+--- request
+GET /t
+--- response_body
+passed
+--- no_error_log
+[error]
+
+
+
+=== TEST 12: hit routes
+--- config
+    location /t {
+        content_by_lua_block {
+            local http = require "resty.http"
+            local uri = "http://127.0.0.1:"; .. ngx.var.server_port
+                        .. "/server_port?device_id=1"
+
+            local httpc = http.new()
+            local res, err = httpc:request_uri(uri, {method = "GET"})
+            if not res then
+                ngx.say(err)
+                return
+            end
+
+            ngx.status = res.status
+            ngx.say(res.body)
+        }
+    }
+--- request
+GET /t
+--- error_code_like: ^(?:50\d)$
+--- error_log
+failed to find valid upstream server, no valid upstream node

Reply via email to