View | Details | Raw Unified | Return to bug 6435
Collapse All | Expand All

(-)a/misc/migration_tools/rebuild_zebra.pl (-10 / +56 lines)
Lines 21-26 $|=1; # flushes output Link Here
21
# If the cron job starts us in an unreadable dir, we will break without
21
# If the cron job starts us in an unreadable dir, we will break without
22
# this.
22
# this.
23
chdir $ENV{HOME} if (!(-r '.'));
23
chdir $ENV{HOME} if (!(-r '.'));
24
my $daemon_mode;
25
my $daemon_sleep = 5;
24
my $directory;
26
my $directory;
25
my $nosanitize;
27
my $nosanitize;
26
my $skip_export;
28
my $skip_export;
Lines 45-50 my $run_user = (getpwuid($<))[0]; Link Here
45
my $verbose_logging = 0;
47
my $verbose_logging = 0;
46
my $zebraidx_log_opt = " -v none,fatal,warn ";
48
my $zebraidx_log_opt = " -v none,fatal,warn ";
47
my $result = GetOptions(
49
my $result = GetOptions(
50
    'daemon'        => \$daemon_mode,
51
    'sleep:i'       => \$daemon_sleep,
48
    'd:s'           => \$directory,
52
    'd:s'           => \$directory,
49
    'r|reset'       => \$reset,
53
    'r|reset'       => \$reset,
50
    's'             => \$skip_export,
54
    's'             => \$skip_export,
Lines 152-167 if ($do_munge) { Link Here
152
156
153
my $tester = XML::LibXML->new();
157
my $tester = XML::LibXML->new();
154
158
155
if ($authorities) {
159
if ($daemon_mode) {
156
    index_records('authority', $directory, $skip_export, $skip_index, $process_zebraqueue, $as_xml, $noxml, $nosanitize, $do_not_clear_zebraqueue, $verbose_logging, $zebraidx_log_opt, $authorityserverdir);
160
    while (1) {
157
} else {
161
        do_one_pass() if ( zebraqueue_not_empty() );
158
    print "skipping authorities\n" if ( $verbose_logging );
162
        sleep $daemon_sleep;
159
}
163
    }
160
161
if ($biblios) {
162
    index_records('biblio', $directory, $skip_export, $skip_index, $process_zebraqueue, $as_xml, $noxml, $nosanitize, $do_not_clear_zebraqueue, $verbose_logging, $zebraidx_log_opt, $biblioserverdir);
163
} else {
164
} else {
164
    print "skipping biblios\n" if ( $verbose_logging );
165
    do_one_pass();
165
}
166
}
166
167
167
168
Lines 191-196 if ($keep_export) { Link Here
191
    }
192
    }
192
}
193
}
193
194
195
sub do_one_pass {
196
    if ($authorities) {
197
        index_records('authority', $directory, $skip_export, $skip_index, $process_zebraqueue, $as_xml, $noxml, $nosanitize, $do_not_clear_zebraqueue, $verbose_logging, $zebraidx_log_opt, $authorityserverdir);
198
    } else {
199
        print "skipping authorities\n" if ( $verbose_logging );
200
    }
201
202
    if ($biblios) {
203
        index_records('biblio', $directory, $skip_export, $skip_index, $process_zebraqueue, $as_xml, $noxml, $nosanitize, $do_not_clear_zebraqueue, $verbose_logging, $zebraidx_log_opt, $biblioserverdir);
204
    } else {
205
        print "skipping biblios\n" if ( $verbose_logging );
206
    }
207
}
208
209
# Check the zebra update queue and return true if there are records to process
210
sub zebraqueue_not_empty {
211
    my $where_str;
212
213
    if ($authorities && $biblios) {
214
	$where_str = 'done = 0;';
215
    } elsif ($biblios) {
216
	$where_str = 'server = "biblioserver" AND done = 0;';
217
    } else {
218
	$where_str = 'server = "authorityserver" AND done = 0;';
219
    }
220
    my $query = $dbh->prepare('SELECT COUNT(*) FROM zebraqueue WHERE ' .
221
	                      $where_str );
222
223
    $query->execute;
224
    my $count = $query->fetchrow_arrayref->[0];
225
    print "queued records: $count\n" if $verbose_logging > 0;
226
    return $count > 0;
227
}
228
194
# This checks to see if the zebra directories exist under the provided path.
229
# This checks to see if the zebra directories exist under the provided path.
195
# If they don't, then zebra is likely to spit the dummy. This returns true
230
# If they don't, then zebra is likely to spit the dummy. This returns true
196
# if the directories had to be created, false otherwise.
231
# if the directories had to be created, false otherwise.
Lines 692-697 Parameters: Link Here
692
727
693
    -a                      index authority records
728
    -a                      index authority records
694
729
730
    -daemon                 Run in daemon mode.  The program will loop checking
731
                            for entries on the zebraqueue table, processing
732
                            them incrementally if present, and then sleep
733
                            for a few seconds before repeating the process
734
                            Checking the zebraqueue table is done with a cheap
735
                            SQL query.  This allows for near realtime update of
736
                            the zebra search index with low system overhead.
737
                            Use -sleep to control the checking interval.
738
739
    -sleep 10               Seconds to sleep between checks of the zebraqueue
740
                            table in daemon mode.  The default is 5 seconds.
741
695
    -z                      select only updated and deleted
742
    -z                      select only updated and deleted
696
                            records marked in the zebraqueue
743
                            records marked in the zebraqueue
697
                            table.  Cannot be used with -r
744
                            table.  Cannot be used with -r
698
- 

Return to bug 6435