Hi team,

      When using APISIX in critical env, we'd like it fail fast to avoid
false healthy server which cannot process any actual requests:

      1. If APISIX cannot connect to ETCD when it's configured with the
ETCD config center, it means pre-configured routes are not available. At
this point, APISIX should fail the start, but currently it starts as if
everything is fine, but since all preconfigured routes are not available,
it cannot serve any real business requests.
      2. If a plugin has a critical init phase which should be completed
before the plugin can be used in request processing, and the init phase
throws an error. APISIX should fail at the start in such cases, since it
cannot process any real business requests which have that fail-to-init
plugin configured.

     For the first, I think APISIX should verify ETCD connectivity if
configured to use ETCD as the config center.

     For the second, I think every plugin should be able to declare some
critical method which must be completed before the plugin is ready to serve
requests, such as a main_init() method which will be called inside
init_by_lua_block phase. If such a plugin fails to init itself, APISIX
should not start itself.

Reply via email to