From 6627d96506e32fff48eb1e17daeff734eb8f23ab Mon Sep 17 00:00:00 2001 From: Matt Bargar Date: Fri, 28 Apr 2017 15:37:12 -0400 Subject: [PATCH] Report shard failures in the field_capabilities response (#11450) --- .../routes/api/ingest/register_field_capabilities.js | 7 ++++++- .../index_patterns/_enhance_fields_with_capabilities.js | 9 +++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/src/core_plugins/kibana/server/routes/api/ingest/register_field_capabilities.js b/src/core_plugins/kibana/server/routes/api/ingest/register_field_capabilities.js index 8250ea9ffbf3f18..1606149ad36ac77 100644 --- a/src/core_plugins/kibana/server/routes/api/ingest/register_field_capabilities.js +++ b/src/core_plugins/kibana/server/routes/api/ingest/register_field_capabilities.js @@ -22,7 +22,12 @@ export function registerFieldCapabilities(server) { return _.pick(value, ['searchable', 'aggregatable']); }); - reply({ fields: fieldsFilteredValues }); + const retVal = { fields: fieldsFilteredValues }; + if (res._shards && res._shards.failed) { + retVal.shard_failure_response = res; + } + + reply(retVal); }, (error) => { reply(handleESError(error)); diff --git a/src/ui/public/index_patterns/_enhance_fields_with_capabilities.js b/src/ui/public/index_patterns/_enhance_fields_with_capabilities.js index 8f8b404ccce9967..97d9110ac11d754 100644 --- a/src/ui/public/index_patterns/_enhance_fields_with_capabilities.js +++ b/src/ui/public/index_patterns/_enhance_fields_with_capabilities.js @@ -1,11 +1,20 @@ import chrome from 'ui/chrome'; import _ from 'lodash'; +import { Notifier } from 'ui/notify/notifier'; +import { ShardFailure } from 'ui/errors'; export function EnhanceFieldsWithCapabilitiesProvider($http) { + const notifier = new Notifier({ + location: 'Field Capabilities' + }); return function (fields, indices) { return $http.get(chrome.addBasePath(`/api/kibana/${indices}/field_capabilities`)) .then((res) => { + if (_.get(res, 'data.shard_failure_response')) { + notifier.warning(new ShardFailure(res.data.shard_failure_response)); + } + const stats = _.get(res, 'data.fields', {}); return _.map(fields, (field) => {