Bug 23137: Move cache flushing to the method
authorJonathan Druart <jonathan.druart@bugs.koha-community.org>
Wed, 15 Apr 2020 14:38:16 +0000 (16:38 +0200)
committerMartin Renvoize <martin.renvoize@ptfs-europe.com>
Wed, 29 Apr 2020 16:02:15 +0000 (17:02 +0100)
Signed-off-by: Nick Clemens <nick@bywatersolutions.com>
Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>

Koha/SearchEngine/Elasticsearch.pm
admin/searchengine/elasticsearch/mappings.pl
misc/search_tools/rebuild_elasticsearch.pl
t/db_dependent/Koha/SearchEngine/Elasticsearch/Reset.t

index 19fa2a4..6616671 100644 (file)
@@ -26,6 +26,7 @@ use Koha::Exceptions::Config;
 use Koha::Exceptions::Elasticsearch;
 use Koha::SearchFields;
 use Koha::SearchMarcMaps;
+use Koha::Caches;
 use C4::Heading;
 
 use Carp;
@@ -382,6 +383,12 @@ sub reset_elasticsearch_mappings {
             }
         }
     }
+
+    my $cache = Koha::Caches->get_instance();
+    $cache->clear_from_cache('elasticsearch_search_fields_staff_client');
+    $cache->clear_from_cache('elasticsearch_search_fields_opac');
+
+    # FIXME return the mappings?
 }
 
 # This overrides the accessor provided by Class::Accessor so that if
index 17e4e86..9b1c8cc 100755 (executable)
@@ -78,12 +78,6 @@ my $update_mappings = sub {
     }
 };
 
-my $cache = Koha::Caches->get_instance();
-my $clear_cache = sub {
-    $cache->clear_from_cache('elasticsearch_search_fields_staff_client');
-    $cache->clear_from_cache('elasticsearch_search_fields_opac');
-};
-
 if ( $op eq 'edit' ) {
 
     $schema->storage->txn_begin;
@@ -170,13 +164,16 @@ if ( $op eq 'edit' ) {
     } else {
         push @messages, { type => 'message', code => 'success_on_update' };
         $schema->storage->txn_commit;
-        $clear_cache->();
+
+        my $cache = Koha::Caches->get_instance();
+        $cache->clear_from_cache('elasticsearch_search_fields_staff_client');
+        $cache->clear_from_cache('elasticsearch_search_fields_opac');
+
         $update_mappings->();
     }
 }
 elsif( $op eq 'reset_confirmed' ) {
     Koha::SearchEngine::Elasticsearch->reset_elasticsearch_mappings;
-    $clear_cache->();
     push @messages, { type => 'message', code => 'success_on_reset' };
 }
 elsif( $op eq 'reset_confirm' ) {
index 5268d12..6cff2ea 100755 (executable)
@@ -112,7 +112,6 @@ use Koha::MetadataRecord::Authority;
 use Koha::BiblioUtils;
 use Koha::SearchEngine::Elasticsearch;
 use Koha::SearchEngine::Elasticsearch::Indexer;
-use Koha::Caches;
 use MARC::Field;
 use MARC::Record;
 use Modern::Perl;
@@ -156,9 +155,6 @@ _sanity_check();
 
 if ($reset){
     Koha::SearchEngine::Elasticsearch->reset_elasticsearch_mappings;
-    my $cache = Koha::Caches->get_instance();
-    $cache->clear_from_cache('elasticsearch_search_fields_staff_client');
-    $cache->clear_from_cache('elasticsearch_search_fields_opac');
     $delete = 1;
 }
 
index 7222bc0..dc8e29a 100644 (file)
 
 use Modern::Perl;
 
-use Test::More tests => 4;
+use Test::More tests => 5;
 use Test::MockModule;
 
 use Koha::Database;
+use Koha::Caches;
 
 my $indexes = {
     'authorities' => {
@@ -54,8 +55,12 @@ Koha::SearchFields->search->delete;
 Koha::SearchMarcMaps->search->delete;
 $schema->resultset('SearchMarcToField')->search->delete;
 
+
 Koha::SearchEngine::Elasticsearch->reset_elasticsearch_mappings;
 
+my $cache = Koha::Caches->get_instance();
+is( $cache->get_from_cache('elasticsearch_search_fields_staff_client'), undef, 'Cache has been flushed by reset_elasticsearch_mappings' );
+
 my $search_fields = Koha::SearchFields->search({});
 is($search_fields->count, 2, 'There is 2 search fields after reset');
 
@@ -66,3 +71,7 @@ my $title_sf = Koha::SearchFields->search({ name => 'title' })->next;
 is($title_sf->weight, '20.00', 'Title search field is weighted with 20');
 
 $schema->storage->txn_rollback;
+
+$cache = Koha::Caches->get_instance();
+$cache->clear_from_cache('elasticsearch_search_fields_staff_client');
+$cache->clear_from_cache('elasticsearch_search_fields_opac');