Bug 16248: ModZebra doesn't update zebraqueue if ES is enabled
authorTomas Cohen Arazi <tomascohen@unc.edu.ar>
Tue, 12 Apr 2016 18:33:25 +0000 (15:33 -0300)
committerTomas Cohen Arazi <tomascohen@theke.io>
Tue, 26 Apr 2016 13:02:21 +0000 (10:02 -0300)
The zebraqueue table should still be populated with updates if ES is enabled, so
the Zebra indexer keeps the Z39.50/SRU indexes up to date.

To test:
- Set SearchEngine = Elasticsearch
- Watch for zebraqueue changes
  $ watch -n 0.5 'echo "SELECT COUNT(*) FROM zebraqueue WHERE done=0" | sudo koha-mysql kohadev'
- Call touch_all_biblios.pl to simulate record changes
  $ sudo koha-shell kohadev ; cd kohaclone
  $ perl misc/maintenance/touch_all_biblios.pl -v
=> FAIL: Notice the watch is not changing the number of records to be indexed.
- Apply the patch
- Call touch_all_biblios.pl to simulate record changes
  $ sudo koha-shell kohadev ; cd kohaclone
  $ perl misc/maintenance/touch_all_biblios.pl -v
=> SUCCESS: The count raises (more than 0) and the zebra indexer picks the updates.
- Sign off

Signed-off-by: Chris <chrisc@catalyst.net.nz>
Signed-off-by: Jesse Weaver <jweaver@bywatersolutions.com>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>

Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>

C4/Biblio.pm

index ea93b44..0db6f1f 100644 (file)
@@ -2932,27 +2932,27 @@ sub ModZebra {
         else {
             croak "ModZebra called with unknown operation: $op";
         }
-    } else {
-        my $dbh = C4::Context->dbh;
-
-        # true ModZebra commented until indexdata fixes zebraDB crashes (it seems they occur on multiple updates
-        # at the same time
-        # replaced by a zebraqueue table, that is filled with ModZebra to run.
-        # the table is emptied by rebuild_zebra.pl script (using the -z switch)
-        my $check_sql = "SELECT COUNT(*) FROM zebraqueue
-        WHERE server = ?
-            AND   biblio_auth_number = ?
-            AND   operation = ?
-            AND   done = 0";
-        my $check_sth = $dbh->prepare_cached($check_sql);
-        $check_sth->execute( $server, $biblionumber, $op );
-        my ($count) = $check_sth->fetchrow_array;
-        $check_sth->finish();
-        if ( $count == 0 ) {
-            my $sth = $dbh->prepare("INSERT INTO zebraqueue  (biblio_auth_number,server,operation) VALUES(?,?,?)");
-            $sth->execute( $biblionumber, $server, $op );
-            $sth->finish;
-        }
+    }
+
+    my $dbh = C4::Context->dbh;
+
+    # true ModZebra commented until indexdata fixes zebraDB crashes (it seems they occur on multiple updates
+    # at the same time
+    # replaced by a zebraqueue table, that is filled with ModZebra to run.
+    # the table is emptied by rebuild_zebra.pl script (using the -z switch)
+    my $check_sql = "SELECT COUNT(*) FROM zebraqueue
+    WHERE server = ?
+        AND   biblio_auth_number = ?
+        AND   operation = ?
+        AND   done = 0";
+    my $check_sth = $dbh->prepare_cached($check_sql);
+    $check_sth->execute( $server, $biblionumber, $op );
+    my ($count) = $check_sth->fetchrow_array;
+    $check_sth->finish();
+    if ( $count == 0 ) {
+        my $sth = $dbh->prepare("INSERT INTO zebraqueue  (biblio_auth_number,server,operation) VALUES(?,?,?)");
+        $sth->execute( $biblionumber, $server, $op );
+        $sth->finish;
     }
 }