summaryrefslogtreecommitdiffstats
path: root/Bugzilla/Elastic/Role
diff options
context:
space:
mode:
authorDylan William Hardison <dylan@hardison.net>2017-07-20 22:36:56 +0200
committerGitHub <noreply@github.com>2017-07-20 22:36:56 +0200
commitda9c617eb5d8345409386b85b5d8c167fc0c55d7 (patch)
tree0938a7253553df05d30df952d6fc2b6e1393743b /Bugzilla/Elastic/Role
parent608ec172071f5adfe8eba9c83d42668520a2baea (diff)
downloadbugzilla-da9c617eb5d8345409386b85b5d8c167fc0c55d7.tar.gz
bugzilla-da9c617eb5d8345409386b85b5d8c167fc0c55d7.tar.xz
Bug 1381869 - Use separate elasticsearch index for Bugzilla::User
This patch removes the concept of a single, bugzilla-wide index in favor of a per-class index. bugs and comments continue to use Bugzilla->params->{elasticsearch_index} but users use Bugzilla->params->{elasticsearch_index} . "_user". It is assured via the ChildObject trait (role) that comments will share the index with bugs, and we have kept the index for bugs/comments the same to avoid the multi-hour reindexing of production. Re-indexing users takes only five minutes. Subsequent work on this will allow use to version the index names and use aliases, but I wanted to keep this patch small. This patch also corrects some mistakes 1. $indexer->put_mapping() should not have been a public method. 2. Time::HiRes should be imported at the top of the file, not in a sub.
Diffstat (limited to 'Bugzilla/Elastic/Role')
-rw-r--r--Bugzilla/Elastic/Role/ChildObject.pm6
-rw-r--r--Bugzilla/Elastic/Role/HasIndexName.pm16
-rw-r--r--Bugzilla/Elastic/Role/Object.pm4
3 files changed, 8 insertions, 18 deletions
diff --git a/Bugzilla/Elastic/Role/ChildObject.pm b/Bugzilla/Elastic/Role/ChildObject.pm
index 1f7a7483a..9735cc1ed 100644
--- a/Bugzilla/Elastic/Role/ChildObject.pm
+++ b/Bugzilla/Elastic/Role/ChildObject.pm
@@ -11,6 +11,10 @@ use Role::Tiny;
with 'Bugzilla::Elastic::Role::Object';
-requires qw(ES_PARENT_TYPE es_parent_id);
+requires qw(ES_PARENT_CLASS es_parent_id);
+
+sub ES_PARENT_TYPE { $_[0]->ES_PARENT_CLASS->ES_TYPE }
+sub ES_INDEX { $_[0]->ES_PARENT_CLASS->ES_INDEX }
+sub ES_SETTINGS { $_[0]->ES_PARENT_CLASS->ES_SETTINGS }
1;
diff --git a/Bugzilla/Elastic/Role/HasIndexName.pm b/Bugzilla/Elastic/Role/HasIndexName.pm
deleted file mode 100644
index eaff339cd..000000000
--- a/Bugzilla/Elastic/Role/HasIndexName.pm
+++ /dev/null
@@ -1,16 +0,0 @@
-# This Source Code Form is subject to the terms of the Mozilla Public
-# License, v. 2.0. If a copy of the MPL was not distributed with this
-# file, You can obtain one at http://mozilla.org/MPL/2.0/.
-#
-# This Source Code Form is "Incompatible With Secondary Licenses", as
-# defined by the Mozilla Public License, v. 2.0.
-package Bugzilla::Elastic::Role::HasIndexName;
-
-use 5.10.1;
-use Moo::Role;
-use Search::Elasticsearch;
-
-has 'index_name' => ( is => 'ro', default => sub { Bugzilla->params->{elasticsearch_index} } );
-
-
-1;
diff --git a/Bugzilla/Elastic/Role/Object.pm b/Bugzilla/Elastic/Role/Object.pm
index ad5ab002b..c51948ee9 100644
--- a/Bugzilla/Elastic/Role/Object.pm
+++ b/Bugzilla/Elastic/Role/Object.pm
@@ -9,7 +9,7 @@ package Bugzilla::Elastic::Role::Object;
use 5.10.1;
use Role::Tiny;
-requires qw(ES_TYPE ES_PROPERTIES es_document);
+requires qw(ES_TYPE ES_INDEX ES_SETTINGS ES_PROPERTIES es_document);
requires qw(ID_FIELD DB_TABLE);
sub ES_OBJECTS_AT_ONCE { 100 }
@@ -45,4 +45,6 @@ around 'es_document' => sub {
return $doc;
};
+
+
1;