mirror of
https://github.com/ClusterCockpit/cc-metric-collector.git
synced 2024-11-10 04:27:25 +01:00
Add config option idle_timeout
This commit is contained in:
parent
0c95db50ad
commit
f6b5f7fb07
@ -23,6 +23,11 @@ type HttpReceiverConfig struct {
|
||||
Addr string `json:"address"`
|
||||
Port string `json:"port"`
|
||||
Path string `json:"path"`
|
||||
|
||||
// Maximum amount of time to wait for the next request when keep-alives are enabled
|
||||
// should be larger than the measurement interval to keep the connection open
|
||||
IdleTimeout string `json:"idle_timeout"`
|
||||
idleTimeout time.Duration
|
||||
}
|
||||
|
||||
type HttpReceiver struct {
|
||||
@ -36,7 +41,13 @@ type HttpReceiver struct {
|
||||
|
||||
func (r *HttpReceiver) Init(name string, config json.RawMessage) error {
|
||||
r.name = fmt.Sprintf("HttpReceiver(%s)", name)
|
||||
|
||||
// Set default values
|
||||
r.config.Port = HTTP_RECEIVER_PORT
|
||||
// should be larger than the measurement interval to keep the connection open
|
||||
r.config.IdleTimeout = "120s"
|
||||
|
||||
// Read config
|
||||
if len(config) > 0 {
|
||||
err := json.Unmarshal(config, &r.config)
|
||||
if err != nil {
|
||||
@ -47,6 +58,13 @@ func (r *HttpReceiver) Init(name string, config json.RawMessage) error {
|
||||
if len(r.config.Port) == 0 {
|
||||
return errors.New("not all configuration variables set required by HttpReceiver")
|
||||
}
|
||||
if len(r.config.IdleTimeout) > 0 {
|
||||
t, err := time.ParseDuration(r.config.IdleTimeout)
|
||||
if err == nil {
|
||||
cclog.ComponentDebug(r.name, "idleTimeout", t)
|
||||
r.config.idleTimeout = t
|
||||
}
|
||||
}
|
||||
r.meta = map[string]string{"source": r.name}
|
||||
p := r.config.Path
|
||||
if !strings.HasPrefix(p, "/") {
|
||||
@ -64,6 +82,7 @@ func (r *HttpReceiver) Init(name string, config json.RawMessage) error {
|
||||
r.server = &http.Server{
|
||||
Addr: addr,
|
||||
Handler: r.router,
|
||||
IdleTimeout: r.config.idleTimeout,
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user