From d9f28d5bf29e84b55ad2d96d6d0cfb409547d969 Mon Sep 17 00:00:00 2001 From: Alexander Reelsen Date: Thu, 26 Apr 2018 12:11:49 +0200 Subject: [PATCH 1/4] Watcher: Fix watch history template for dynamic slack attachments The part of the history template responsible for slack attachments had a dynamic mapping configured which could lead to problems, when a string value looking like a date was configured in the value field of an attachment. This commit fixes the template by setting this field always to text. This also requires a change in the template numbering to be sure this will be applied properly when starting watcher. --- .../WatcherIndexTemplateRegistryField.java | 3 ++- .../src/main/resources/watch-history.json | 7 ++++++ .../rest-api-spec/test/slack/10_slack.yml | 23 +++++++++++++++++-- 3 files changed, 30 insertions(+), 3 deletions(-) diff --git a/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/watcher/support/WatcherIndexTemplateRegistryField.java b/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/watcher/support/WatcherIndexTemplateRegistryField.java index 4cf0898bae2ff..47fe9e6a0a877 100644 --- a/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/watcher/support/WatcherIndexTemplateRegistryField.java +++ b/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/watcher/support/WatcherIndexTemplateRegistryField.java @@ -12,8 +12,9 @@ public final class WatcherIndexTemplateRegistryField { // version 3: include watch status in history // version 6: upgrade to ES 6, removal of _status field // version 7: add full exception stack traces for better debugging + // version 8: fix slack attachment attachment property not to be dynamic, causing field type issues // Note: if you change this, also inform the kibana team around the watcher-ui - public static final String INDEX_TEMPLATE_VERSION = "7"; + public static final String INDEX_TEMPLATE_VERSION = "8"; public static final String HISTORY_TEMPLATE_NAME = ".watch-history-" + INDEX_TEMPLATE_VERSION; public static final String TRIGGERED_TEMPLATE_NAME = ".triggered_watches"; public static final String WATCHES_TEMPLATE_NAME = ".watches"; diff --git a/x-pack/plugin/core/src/main/resources/watch-history.json b/x-pack/plugin/core/src/main/resources/watch-history.json index a26305b35542a..d158281c264d2 100644 --- a/x-pack/plugin/core/src/main/resources/watch-history.json +++ b/x-pack/plugin/core/src/main/resources/watch-history.json @@ -507,6 +507,13 @@ "properties" : { "color" : { "type" : "keyword" + }, + "fields" : { + "properties" : { + "value" : { + "type" : "text" + } + } } } } diff --git a/x-pack/qa/third-party/slack/src/test/resources/rest-api-spec/test/slack/10_slack.yml b/x-pack/qa/third-party/slack/src/test/resources/rest-api-spec/test/slack/10_slack.yml index 3b04ba716759a..259bc9e1d25af 100644 --- a/x-pack/qa/third-party/slack/src/test/resources/rest-api-spec/test/slack/10_slack.yml +++ b/x-pack/qa/third-party/slack/src/test/resources/rest-api-spec/test/slack/10_slack.yml @@ -16,7 +16,13 @@ }, "input": { "simple": { - "foo" : "something from input" + "foo" : "something from input", + "hits" : { + "hits" : [ + { "_source" : { "name" : "first", "value" : "2018-04-26T11:45:12.518Z" } }, + { "_source" : { "name" : "second", "value" : "anything" } } + ] + } } }, "actions": { @@ -49,7 +55,20 @@ } ] } - ] + ], + "dynamic_attachments" : { + "list_path" : "ctx.payload.hits.hits", + "attachment_template" : { + "title": "Title", + "fields" : [ + { + "title" : "Field title {{_source.name}}", + "value" : "{{_source.value}}", + "short" : true + } + ] + } + } } } } From a7195163681bddb39f85283d2259da00c2a8d87a Mon Sep 17 00:00:00 2001 From: Alexander Reelsen Date: Fri, 4 May 2018 10:33:04 +0200 Subject: [PATCH 2/4] added changelog entry --- docs/CHANGELOG.asciidoc | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/docs/CHANGELOG.asciidoc b/docs/CHANGELOG.asciidoc index 9e33c10a56b12..27acbfe791a87 100644 --- a/docs/CHANGELOG.asciidoc +++ b/docs/CHANGELOG.asciidoc @@ -167,6 +167,15 @@ Machine Learning:: * Account for gaps in data counts after job is reopened ({pull}30294[#30294]) +Watcher:: + +* The watch history template was dynamically mapping fields for dynamic slack +attachments, which could end up with the wrong mapping, depending on the data +written in such an attachment (i.e. if only a date was specified). The new +template includes an explicit string based mapping for this field. +({pull}30172[#30172]) + + //[float] //=== Regressions From 990af9e2e5e24cf2a8a2aaf80b3f8dabfa0fc070 Mon Sep 17 00:00:00 2001 From: Alexander Reelsen Date: Tue, 15 May 2018 15:47:54 +0200 Subject: [PATCH 3/4] review comment --- .../core/watcher/support/WatcherIndexTemplateRegistryField.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/watcher/support/WatcherIndexTemplateRegistryField.java b/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/watcher/support/WatcherIndexTemplateRegistryField.java index 47fe9e6a0a877..25e2c928d9a57 100644 --- a/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/watcher/support/WatcherIndexTemplateRegistryField.java +++ b/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/watcher/support/WatcherIndexTemplateRegistryField.java @@ -12,7 +12,7 @@ public final class WatcherIndexTemplateRegistryField { // version 3: include watch status in history // version 6: upgrade to ES 6, removal of _status field // version 7: add full exception stack traces for better debugging - // version 8: fix slack attachment attachment property not to be dynamic, causing field type issues + // version 8: fix slack attachment property not to be dynamic, causing field type issues // Note: if you change this, also inform the kibana team around the watcher-ui public static final String INDEX_TEMPLATE_VERSION = "8"; public static final String HISTORY_TEMPLATE_NAME = ".watch-history-" + INDEX_TEMPLATE_VERSION; From 38aad9adc735eeb9971f36943a08d0fda7274078 Mon Sep 17 00:00:00 2001 From: Alexander Reelsen Date: Tue, 15 May 2018 15:48:33 +0200 Subject: [PATCH 4/4] remove swap file --- .CONTRIBUTING.md.swp | Bin 16384 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 .CONTRIBUTING.md.swp diff --git a/.CONTRIBUTING.md.swp b/.CONTRIBUTING.md.swp deleted file mode 100644 index dfd188ca2b69b26d2be34aae7883a8ca34addd9d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16384 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