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

(-)a/misc/migration_tools/rebuild_zebra.pl (-12 / +14 lines)
Lines 191-197 sub index_records { Link Here
191
    my ($record_type, $directory, $skip_export, $process_zebraqueue, $as_xml, $noxml, $nosanitize, $do_not_clear_zebraqueue, $verbose_logging, $zebraidx_log_opt, $server_dir) = @_;
191
    my ($record_type, $directory, $skip_export, $process_zebraqueue, $as_xml, $noxml, $nosanitize, $do_not_clear_zebraqueue, $verbose_logging, $zebraidx_log_opt, $server_dir) = @_;
192
192
193
    my $num_records_exported = 0;
193
    my $num_records_exported = 0;
194
    my $num_records_deleted = 0;
194
    my $records_deleted;
195
    my $need_reset = check_zebra_dirs($server_dir);
195
    my $need_reset = check_zebra_dirs($server_dir);
196
    if ($need_reset) {
196
    if ($need_reset) {
197
    	print "$0: found broken zebra server directories: forcing a rebuild\n";
197
    	print "$0: found broken zebra server directories: forcing a rebuild\n";
Lines 212-223 sub index_records { Link Here
212
        if ($process_zebraqueue) {
212
        if ($process_zebraqueue) {
213
            my $entries = select_zebraqueue_records($record_type, 'deleted');
213
            my $entries = select_zebraqueue_records($record_type, 'deleted');
214
            mkdir "$directory/del_$record_type" unless (-d "$directory/del_$record_type");
214
            mkdir "$directory/del_$record_type" unless (-d "$directory/del_$record_type");
215
            $num_records_deleted = generate_deleted_marc_records($record_type, $entries, "$directory/del_$record_type", $as_xml);
215
            $records_deleted = generate_deleted_marc_records($record_type, $entries, "$directory/del_$record_type", $as_xml);
216
            mark_zebraqueue_batch_done($entries);
216
            mark_zebraqueue_batch_done($entries);
217
            $entries = select_zebraqueue_records($record_type, 'updated');
217
            $entries = select_zebraqueue_records($record_type, 'updated');
218
            mkdir "$directory/upd_$record_type" unless (-d "$directory/upd_$record_type");
218
            mkdir "$directory/upd_$record_type" unless (-d "$directory/upd_$record_type");
219
            $num_records_exported = export_marc_records_from_list($record_type, 
219
            $num_records_exported = export_marc_records_from_list($record_type, 
220
                                                                  $entries, "$directory/upd_$record_type", $as_xml, $noxml);
220
                                                                  $entries, "$directory/upd_$record_type", $as_xml, $noxml, $records_deleted);
221
            mark_zebraqueue_batch_done($entries);
221
            mark_zebraqueue_batch_done($entries);
222
        } else {
222
        } else {
223
            my $sth = select_all_records($record_type);
223
            my $sth = select_all_records($record_type);
Lines 239-245 sub index_records { Link Here
239
	my $record_fmt = ($as_xml) ? 'marcxml' : 'iso2709' ;
239
	my $record_fmt = ($as_xml) ? 'marcxml' : 'iso2709' ;
240
    if ($process_zebraqueue) {
240
    if ($process_zebraqueue) {
241
        do_indexing($record_type, 'delete', "$directory/del_$record_type", $reset, $noshadow, $record_fmt, $zebraidx_log_opt) 
241
        do_indexing($record_type, 'delete', "$directory/del_$record_type", $reset, $noshadow, $record_fmt, $zebraidx_log_opt) 
242
            if $num_records_deleted;
242
            if %$records_deleted;
243
        do_indexing($record_type, 'update', "$directory/upd_$record_type", $reset, $noshadow, $record_fmt, $zebraidx_log_opt)
243
        do_indexing($record_type, 'update', "$directory/upd_$record_type", $reset, $noshadow, $record_fmt, $zebraidx_log_opt)
244
            if $num_records_exported;
244
            if $num_records_exported;
245
    } else {
245
    } else {
Lines 361-372 sub export_marc_records_from_sth { Link Here
361
}
361
}
362
362
363
sub export_marc_records_from_list {
363
sub export_marc_records_from_list {
364
    my ($record_type, $entries, $directory, $as_xml, $noxml) = @_;
364
    my ($record_type, $entries, $directory, $as_xml, $noxml, $records_deleted) = @_;
365
365
366
    my $num_exported = 0;
366
    my $num_exported = 0;
367
    open (OUT, ">:utf8 ", "$directory/exported_records") or die $!;
367
    open (OUT, ">:utf8 ", "$directory/exported_records") or die $!;
368
    my $i = 0;
368
    my $i = 0;
369
    my %found = ();
369
370
    # Skip any deleted records. We check for this anyway, but this reduces error spam
371
    my %found = %$records_deleted;
370
    foreach my $record_number ( map { $_->{biblio_auth_number} }
372
    foreach my $record_number ( map { $_->{biblio_auth_number} }
371
                                grep { !$found{ $_->{biblio_auth_number} }++ }
373
                                grep { !$found{ $_->{biblio_auth_number} }++ }
372
                                @$entries ) {
374
                                @$entries ) {
Lines 391-397 sub export_marc_records_from_list { Link Here
391
sub generate_deleted_marc_records {
393
sub generate_deleted_marc_records {
392
    my ($record_type, $entries, $directory, $as_xml) = @_;
394
    my ($record_type, $entries, $directory, $as_xml) = @_;
393
395
394
    my $num_exported = 0;
396
    my $records_deleted = {};
395
    open (OUT, ">:utf8 ", "$directory/exported_records") or die $!;
397
    open (OUT, ">:utf8 ", "$directory/exported_records") or die $!;
396
    my $i = 0;
398
    my $i = 0;
397
    foreach my $record_number (map { $_->{biblio_auth_number} } @$entries ) {
399
    foreach my $record_number (map { $_->{biblio_auth_number} } @$entries ) {
Lines 409-419 sub generate_deleted_marc_records { Link Here
409
        }
411
        }
410
412
411
        print OUT ($as_xml) ? $marc->as_xml_record(C4::Context->preference("marcflavour")) : $marc->as_usmarc();
413
        print OUT ($as_xml) ? $marc->as_xml_record(C4::Context->preference("marcflavour")) : $marc->as_usmarc();
412
        $num_exported++;
414
415
        $records_deleted->{$record_number} = 1;
413
    }
416
    }
414
    print "\nRecords exported: $num_exported\n" if ( $verbose_logging );
417
    print "\nRecords exported: $i\n" if ( $verbose_logging );
415
    close OUT;
418
    close OUT;
416
    return $num_exported;
419
    return $records_deleted;
417
    
420
    
418
421
419
}
422
}
Lines 457-463 sub get_raw_marc_record { Link Here
457
            }
460
            }
458
        } else {
461
        } else {
459
            eval { $marc = GetMarcBiblio($record_number); };
462
            eval { $marc = GetMarcBiblio($record_number); };
460
            if ($@) {
463
            if ($@ || !defined($marc)) {
461
                # here we do warn since catching an exception
464
                # here we do warn since catching an exception
462
                # means that the bib was found but failed
465
                # means that the bib was found but failed
463
                # to be parsed
466
                # to be parsed
464
- 

Return to bug 6492