hyperf / hyperf/hyperf

配置中心组件和监控组件冲突导致应用启动报错

Open
#2,514 2 comments 0 reactions 0 assignees View on GitHub
bug
Dominant language
PHP
Stars
6.9k
Forks
1.3k
Avg merge
4h 21m
Merged PRs (30d)
4

Description

Hyperf 2.0.11
Swoole 4.5.2
PHP 7.4.8

如题,接入配置中心后,配置中心监听 BeforeWorkerStart 事件中去拉取配置,并且更新 ConfigInterface 对象的;

而监控组件的 Watcher (比如RedisPoolWatcher) 也是监听 BeforeWorkerStart 事件,这时候就会出现,Watcher 组件优先于 配置中心的监听器执行(具体执行顺序不明,文档没有说明),导致了配置中心的配置还没有拉取,Watcher 获取到了错误的配置。

假如数据库和 Redis 配置,是存放在配置中心中的,那么就会启动的时候一路报错下去。这里应该要调整 Watcher 组件监听 MainWorkerStart 事件即可解决这个问题

另外,所有其他组件如果有依赖事件机制的,假如监听的是 BeforeWorkerStart 并且有用到配置中心的值,那么都会存在这个问题

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.