ChuanFF commented on code in PR #12852:
URL: https://github.com/apache/apisix/pull/12852#discussion_r2734491355
##########
apisix/init.lua:
##########
@@ -976,54 +976,74 @@ function _M.status()
core.response.exit(200, core.json.encode({ status = "ok" }))
end
-function _M.status_ready()
- local local_conf = core.config.local_conf()
- local role = core.table.try_read_attr(local_conf, "deployment", "role")
- local provider = core.table.try_read_attr(local_conf, "deployment",
"role_" ..
- role, "config_provider")
- if provider == "yaml" or provider == "etcd" then
- local status_shdict = ngx.shared["status-report"]
- local ids = status_shdict:get_keys()
- local error
- local worker_count = ngx.worker.count()
- if #ids ~= worker_count then
- core.log.warn("worker count: ", worker_count, " but status report
count: ", #ids)
- error = "worker count: " .. ngx.worker.count() ..
- " but status report count: " .. #ids
- end
- if error then
- core.response.exit(503, core.json.encode({
- status = "error",
- error = error
- }))
- return
- end
- for _, id in ipairs(ids) do
- local ready = status_shdict:get(id)
+
+local function discovery_ready_check()
+ local discovery_type = local_conf.discovery
+ if not discovery_type then
+ return true
+ end
+ for discovery_name, _ in pairs(discovery_type) do
+ local dis_module = discovery[discovery_name]
+ if dis_module.check_discovery_ready then
+ local ready, message = dis_module.check_discovery_ready()
if not ready then
- core.log.warn("worker id: ", id, " has not received
configuration")
- error = "worker id: " .. id ..
- " has not received configuration"
- break
+ return false, message
end
end
+ end
+ return true
+end
- if error then
- core.response.exit(503, core.json.encode({
- status = "error",
- error = error
- }))
- return
+local function config_ready_check()
+ local role = core.table.try_read_attr(local_conf, "deployment", "role")
+ local provider = core.table.try_read_attr(local_conf, "deployment",
"role_" ..
+ role, "config_provider")
+ if provider ~= "yaml" and provider ~= "etcd" then
+ return false, "unknown config provider: " .. tostring(provider)
+ end
+
+ local status_shdict = ngx.shared["status-report"]
Review Comment:
done
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]