Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

slave server 不能直接set,要合并总的配置,再set,否则会报错 #1338

Merged
merged 3 commits into from
Feb 24, 2020

Conversation

monkeycraps
Copy link
Contributor

多个servers 下,slaveServer 的问题
slave 服务如果配置了 settings,会丢失继承的 setting,然后导致启动异常

测试 server 配置

//  这个是 slaveServer,现在的 Server.getSort 也比较奇怪,用的是 array_unshift,最后一个是主server 
[
            'name'      => 'http',
            'type'      => Server::SERVER_HTTP,
            'host'      => '0.0.0.0',
            'port'      => 9501,
            'sock_type' => SWOOLE_SOCK_TCP,
            'callbacks' => [
                SwooleEvent::ON_REQUEST => [Hyperf\HttpServer\Server::class, 'onRequest'],
            ],
            'settings'  => [
                'dispatch_mode' => 2,
                //                'worker_num'    => 1,
            ],
        ],
// 这个是主 server 
        [
            'name'      => 'grpc',
            'type'      => Server::SERVER_HTTP,
            'host'      => '0.0.0.0',
            'port'      => 9502,
            'sock_type' => SWOOLE_SOCK_TCP,
            'callbacks' => [
                SwooleEvent::ON_REQUEST => [\Hyperf\GrpcServer\Server::class, 'onRequest'],
            ],
            'settings'  => [
                //                'worker_num'    => 1,
                //                'open_http2_protocol'   => true,
            ],
        ],

@huangzhhui
Copy link
Member

servers 下的配置应该继承合并根节点的 settings 配置才对,不应该合并 main server 吧?

@monkeycraps
Copy link
Contributor Author

servers 下的配置应该继承合并根节点的 settings 配置才对,不应该合并 main server 吧?

现在合的就是根的 setting,$config->settting

@limingxinleo
Copy link
Member

这里我认为不应该做额外处理。。。

这里的配置完全按照 Swoole 的逻辑来处理的,如果添加过多特殊化的逻辑,不是很好

@monkeycraps
Copy link
Contributor Author

这里我认为不应该做额外处理。。。

这里的配置完全按照 Swoole 的逻辑来处理的,如果添加过多特殊化的逻辑,不是很好

swoole 逻辑没有,根setting 和子setting 的处理逻辑
现在的问题是导致了,在server 里设置单独的setting 会出错
举例

  1. 如果我针对某个子服务设置他的 dispatch_mode,会出错,因为他会清空子服务的根设置(不做设置的时候会继承),除非,我把其他配置也重新写一遍
  2. 整个配置流程,哪个是根服务,哪个是子服务,是不确定的

@limingxinleo
Copy link
Member

嗯,确实,现在 main 和 slave 的关系其实并不明显,是框架自己选择的

这种情况下,所有子节点都合并 根 setting 确实更好一些。

@huangzhhui 你觉得呢?

Copy link
Member

@huangzhhui huangzhhui left a comment

Choose a reason for hiding this comment

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

Changelog 要补一下

@limingxinleo limingxinleo merged commit 756572f into hyperf:master Feb 24, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants