bfe_server.go在InitConfig()漏掉了对WriteTimeout的赋值
cherishman2005 opened this issue · 2 comments
cherishman2005 commented
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
}
}
xuleiming commented
感谢你的问题!
目前,srv.WriteTimeout 并没有被使用,所以没有赋值并没有影响。ConfigBasic.ClientWriteTimeout 目前是个多余的配置项,没有被使用。
真正起作用的 ClientWriteTimeout 值是 cluster_conf.data 中每个cluster配的 ClusterBasic.TimeoutWriteClient
cherishman2005 commented
srv.WriteTimeout 并没有被使用,所以没有赋值并没有影响。
为了保证bfe代码中配置参数的完整性,应该赋值。希望@xuleiming 方便时更新下。我在基于BFE做二次开发,在前半段(client->BFEserver)需要使用WriteTimeout变量。