From 5d574959b5492aca84981199e758d7722c668ccb Mon Sep 17 00:00:00 2001 From: Dan Kortschak Date: Thu, 28 Sep 2023 11:41:20 +0930 Subject: [PATCH] address pr comments --- libbeat/processors/cache/config.go | 2 +- libbeat/processors/cache/config_test.go | 2 +- libbeat/processors/cache/file_store.go | 16 +++++++++++++--- 3 files changed, 15 insertions(+), 5 deletions(-) diff --git a/libbeat/processors/cache/config.go b/libbeat/processors/cache/config.go index 019bd8d5840f..90e6fe2ef3b9 100644 --- a/libbeat/processors/cache/config.go +++ b/libbeat/processors/cache/config.go @@ -103,7 +103,7 @@ type memConfig struct { type fileConfig struct { ID string `config:"id"` - WriteOutEvery time.Duration `config:"write_frequency"` + WriteOutEvery time.Duration `config:"write_interval"` } func (cfg *storeConfig) Validate() error { diff --git a/libbeat/processors/cache/config_test.go b/libbeat/processors/cache/config_test.go index 69d158eb8302..17040b42910b 100644 --- a/libbeat/processors/cache/config_test.go +++ b/libbeat/processors/cache/config_test.go @@ -48,7 +48,7 @@ put: backend: file: id: aidmaster - write_frequency: 15m + write_interval: 15m put: ttl: 168h key_field: crowdstrike.aid diff --git a/libbeat/processors/cache/file_store.go b/libbeat/processors/cache/file_store.go index 604b7c01cde1..866175283af5 100644 --- a/libbeat/processors/cache/file_store.go +++ b/libbeat/processors/cache/file_store.go @@ -169,7 +169,12 @@ func (c *fileStore) readState() { err = dec.Decode(&e) if err != nil { if err != io.EOF { - c.log.Errorw("failed to read state element", "error", err) + switch err := err.(type) { + case *json.SyntaxError: + c.log.Errorw("failed to read state element", "error", err, "path", c.path, "offset", err.Offset) + default: + c.log.Errorw("failed to read state element", "error", err, "path", c.path) + } } break } @@ -219,12 +224,12 @@ func (c *fileStore) writeState(final bool) { } return } - f, err := os.CreateTemp("", "") + f, err := os.CreateTemp(filepath.Dir(c.path), "") if err != nil { c.log.Errorw("failed to open file to write state", "error", err) return } - // We are writing into tmp, so make sure we are private. + // Try to make sure we are private. err = os.Chmod(f.Name(), 0o600) if err != nil { c.log.Errorw("failed to set state file mode", "error", err) @@ -232,6 +237,11 @@ func (c *fileStore) writeState(final bool) { } tmp := f.Name() defer func() { + err = f.Sync() + if err != nil { + c.log.Errorw("failed to sync file after writing state", "error", err) + return + } err = f.Close() if err != nil { c.log.Errorw("failed to close file after writing state", "error", err)