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

bfe_server.go在InitConfig()漏掉了对WriteTimeout的赋值 #1152

Open
cherishman2005 opened this issue Mar 14, 2024 · 2 comments
Open

bfe_server.go在InitConfig()漏掉了对WriteTimeout的赋值 #1152

cherishman2005 opened this issue Mar 14, 2024 · 2 comments

Comments

@cherishman2005
Copy link

bfe master分支 以及v1.6.0等分支漏掉了对WriteTimeout的赋值 https://github.com/bfenetworks/bfe/blob/release/v1.6.0/bfe_server/bfe_server.go

  • v1.6.0现状
// InitConfig set some parameter based on config.
func (srv *BfeServer) InitConfig() {
	// set service port, according to config
	srv.Addr = fmt.Sprintf(":%d", srv.Config.Server.HttpPort)

	// set TlsHandshakeTimeout
	if srv.Config.Server.TlsHandshakeTimeout != 0 {
		srv.TlsHandshakeTimeout = time.Duration(srv.Config.Server.TlsHandshakeTimeout) * time.Second
	}

	// set ReadTimeout
	if srv.Config.Server.ClientReadTimeout != 0 {
		srv.ReadTimeout = time.Duration(srv.Config.Server.ClientReadTimeout) * time.Second
	}

	// set MaxHeaderBytes
	if srv.Config.Server.MaxHeaderBytes != 0 {
		srv.MaxHeaderBytes = srv.Config.Server.MaxHeaderBytes
	} else {
		srv.MaxHeaderBytes = bfe_http.DefaultMaxHeaderBytes
	}

	// set GracefulShutdownTimeout
	srv.GracefulShutdownTimeout = time.Duration(srv.Config.Server.GracefulShutdownTimeout) * time.Second

	// set MaxHeaderUriBytes
	if srv.Config.Server.MaxHeaderUriBytes != 0 {
		srv.MaxHeaderUriBytes = srv.Config.Server.MaxHeaderUriBytes
	} else {
		srv.MaxHeaderUriBytes = bfe_http.DefaultMaxHeaderUriBytes
	}
}
  • 应添加对WriteTimeout的赋值,优化为
// InitConfig set some parameter based on config.
func (srv *BfeServer) InitConfig() {
	// set service port, according to config
	srv.Addr = fmt.Sprintf(":%d", srv.Config.Server.HttpPort)

	// set TlsHandshakeTimeout
	if srv.Config.Server.TlsHandshakeTimeout != 0 {
		srv.TlsHandshakeTimeout = time.Duration(srv.Config.Server.TlsHandshakeTimeout) * time.Second
	}

	// set ReadTimeout
	if srv.Config.Server.ClientReadTimeout != 0 {
		srv.ReadTimeout = time.Duration(srv.Config.Server.ClientReadTimeout) * time.Second
	}

	// set WriteTimeout
	if srv.Config.Server.ClientWriteTimeout != 0 {
		srv.WriteTimeout = time.Duration(srv.Config.Server.ClientWriteTimeout) * time.Second
	}

	// set MaxHeaderBytes
	if srv.Config.Server.MaxHeaderBytes != 0 {
		srv.MaxHeaderBytes = srv.Config.Server.MaxHeaderBytes
	} else {
		srv.MaxHeaderBytes = bfe_http.DefaultMaxHeaderBytes
	}

	// set GracefulShutdownTimeout
	srv.GracefulShutdownTimeout = time.Duration(srv.Config.Server.GracefulShutdownTimeout) * time.Second

	// set MaxHeaderUriBytes
	if srv.Config.Server.MaxHeaderUriBytes != 0 {
		srv.MaxHeaderUriBytes = srv.Config.Server.MaxHeaderUriBytes
	} else {
		srv.MaxHeaderUriBytes = bfe_http.DefaultMaxHeaderUriBytes
	}
}

image

image

@xuleiming
Copy link
Collaborator

感谢你的问题!
目前,srv.WriteTimeout 并没有被使用,所以没有赋值并没有影响。ConfigBasic.ClientWriteTimeout 目前是个多余的配置项,没有被使用。
真正起作用的 ClientWriteTimeout 值是 cluster_conf.data 中每个cluster配的 ClusterBasic.TimeoutWriteClient

@cherishman2005
Copy link
Author

srv.WriteTimeout 并没有被使用,所以没有赋值并没有影响。

为了保证bfe代码中配置参数的完整性,应该赋值。希望@xuleiming 方便时更新下。我在基于BFE做二次开发,在前半段(client->BFEserver)需要使用WriteTimeout变量。

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

No branches or pull requests

2 participants