From 0d235f9d4e5b2ab53c1df0c8ff49baa5ff1e4984 Mon Sep 17 00:00:00 2001 From: Pier-Hugues Pellerin Date: Thu, 6 Sep 2018 14:08:44 -0400 Subject: [PATCH] Clone any cached data from docker and k8s (#8240) (#8246) Using cached data can lead to race condition if we have some reference in place, this commit force a clone on the retrieved data so each event has his own copy. (cherry picked from commit b4a69c199efcafcafb8b0ff6af81d1a0bf9c9b7d) --- CHANGELOG.asciidoc | 1 + libbeat/processors/add_docker_metadata/add_docker_metadata.go | 2 +- libbeat/processors/add_kubernetes_metadata/kubernetes.go | 2 +- 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.asciidoc b/CHANGELOG.asciidoc index 257a0062112..87f8858b488 100644 --- a/CHANGELOG.asciidoc +++ b/CHANGELOG.asciidoc @@ -43,6 +43,7 @@ https://github.com/elastic/beats/compare/v6.4.0...6.4[Check the HEAD diff] - Add backoff support to x-pack monitoring outputs. {issue}7966[7966] - Removed execute permissions systemd unit file. {pull}7873[7873] - Fix a race condition with the `add_host_metadata` and the event serialization. {pull}8223[8223] +- Enforce that data used by k8s or docker doesn't use any reference. {pull}8240[8240] *Auditbeat* diff --git a/libbeat/processors/add_docker_metadata/add_docker_metadata.go b/libbeat/processors/add_docker_metadata/add_docker_metadata.go index c4af0c848c2..5a81f5a6909 100644 --- a/libbeat/processors/add_docker_metadata/add_docker_metadata.go +++ b/libbeat/processors/add_docker_metadata/add_docker_metadata.go @@ -181,7 +181,7 @@ func (d *addDockerMetadata) Run(event *beat.Event) (*beat.Event, error) { meta.Put("container.id", container.ID) meta.Put("container.image", container.Image) meta.Put("container.name", container.Name) - event.Fields["docker"] = meta + event.Fields["docker"] = meta.Clone() } else { d.log.Debugf("Container not found: cid=%s", cid) } diff --git a/libbeat/processors/add_kubernetes_metadata/kubernetes.go b/libbeat/processors/add_kubernetes_metadata/kubernetes.go index df98e1dd68e..63915e4b6ea 100644 --- a/libbeat/processors/add_kubernetes_metadata/kubernetes.go +++ b/libbeat/processors/add_kubernetes_metadata/kubernetes.go @@ -155,7 +155,7 @@ func (k *kubernetesAnnotator) Run(event *beat.Event) (*beat.Event, error) { } event.Fields.DeepUpdate(common.MapStr{ - "kubernetes": metadata, + "kubernetes": metadata.Clone(), }) return event, nil