|
Lines 509-536
sub BatchFindDuplicates {
Link Here
|
| 509 |
|
509 |
|
| 510 |
=head2 BatchCommitRecords |
510 |
=head2 BatchCommitRecords |
| 511 |
|
511 |
|
| 512 |
my ($num_added, $num_updated, $num_items_added, $num_items_replaced, $num_items_errored, $num_ignored) = |
512 |
my ($num_added, $num_updated, $num_items_added, $num_items_replaced, $num_items_errored, $num_ignored) = |
| 513 |
BatchCommitRecords($batch_id, $framework, |
513 |
BatchCommitRecords( $batch_id, $framework, $progress_interval, $progress_callback, $params ); |
| 514 |
$progress_interval, $progress_callback); |
514 |
|
|
|
515 |
Parameter skip_intermediate_commit does what is says. |
| 515 |
|
516 |
|
| 516 |
=cut |
517 |
=cut |
| 517 |
|
518 |
|
| 518 |
sub BatchCommitRecords { |
519 |
sub BatchCommitRecords { |
| 519 |
my $batch_id = shift; |
520 |
my ( $batch_id, $framework, $progress_interval, $progress_callback, $params ) = @_; |
| 520 |
my $framework = shift; |
521 |
my $skip_intermediate_commit = $params->{skip_intermediate_commit}; |
|
|
522 |
$progress_interval = 0 unless $progress_interval =~ /^\d+$/ and $progress_interval > 0; |
| 523 |
$progress_interval = 0 unless ref($progress_callback) eq 'CODE'; |
| 521 |
|
524 |
|
| 522 |
my $schema = Koha::Database->schema; |
525 |
my $schema = Koha::Database->schema; |
| 523 |
|
526 |
$schema->txn_begin; |
| 524 |
# optional callback to monitor status |
527 |
# NOTE: Moved this transaction to the front of the routine. Note that inside the while loop below |
| 525 |
# of job |
528 |
# transactions may be committed and started too again. The final commit is close to the end. |
| 526 |
my $progress_interval = 0; |
|
|
| 527 |
my $progress_callback = undef; |
| 528 |
if ($#_ == 1) { |
| 529 |
$progress_interval = shift; |
| 530 |
$progress_callback = shift; |
| 531 |
$progress_interval = 0 unless $progress_interval =~ /^\d+$/ and $progress_interval > 0; |
| 532 |
$progress_interval = 0 unless 'CODE' eq ref $progress_callback; |
| 533 |
} |
| 534 |
|
529 |
|
| 535 |
my $record_type; |
530 |
my $record_type; |
| 536 |
my $num_added = 0; |
531 |
my $num_added = 0; |
|
Lines 560-566
sub BatchCommitRecords {
Link Here
|
| 560 |
|
555 |
|
| 561 |
my $rec_num = 0; |
556 |
my $rec_num = 0; |
| 562 |
my @biblio_ids; |
557 |
my @biblio_ids; |
| 563 |
$schema->txn_begin; # We commit in a transaction |
|
|
| 564 |
while (my $rowref = $sth->fetchrow_hashref) { |
558 |
while (my $rowref = $sth->fetchrow_hashref) { |
| 565 |
$record_type = $rowref->{'record_type'}; |
559 |
$record_type = $rowref->{'record_type'}; |
| 566 |
|
560 |
|
|
Lines 568-576
sub BatchCommitRecords {
Link Here
|
| 568 |
|
562 |
|
| 569 |
if ($progress_interval and (0 == ($rec_num % $progress_interval))) { |
563 |
if ($progress_interval and (0 == ($rec_num % $progress_interval))) { |
| 570 |
# report progress and commit |
564 |
# report progress and commit |
| 571 |
$schema->txn_commit; |
565 |
$schema->txn_commit unless $skip_intermediate_commit; |
| 572 |
&$progress_callback( $rec_num ); |
566 |
&$progress_callback( $rec_num ); |
| 573 |
$schema->txn_begin; |
567 |
$schema->txn_begin unless $skip_intermediate_commit; |
| 574 |
} |
568 |
} |
| 575 |
if ($rowref->{'status'} eq 'error' or $rowref->{'status'} eq 'imported') { |
569 |
if ($rowref->{'status'} eq 'error' or $rowref->{'status'} eq 'imported') { |
| 576 |
$num_ignored++; |
570 |
$num_ignored++; |
|
Lines 700-707
sub BatchCommitRecords {
Link Here
|
| 700 |
&$progress_callback($rec_num); |
694 |
&$progress_callback($rec_num); |
| 701 |
} |
695 |
} |
| 702 |
|
696 |
|
| 703 |
$schema->txn_commit; # Commit final records that may not have hit callback threshold |
|
|
| 704 |
|
| 705 |
$sth->finish(); |
697 |
$sth->finish(); |
| 706 |
|
698 |
|
| 707 |
if ( @biblio_ids ) { |
699 |
if ( @biblio_ids ) { |
|
Lines 710-715
sub BatchCommitRecords {
Link Here
|
| 710 |
} |
702 |
} |
| 711 |
|
703 |
|
| 712 |
SetImportBatchStatus($batch_id, 'imported'); |
704 |
SetImportBatchStatus($batch_id, 'imported'); |
|
|
705 |
|
| 706 |
# Moved final commit to the end |
| 707 |
$schema->txn_commit; |
| 708 |
|
| 713 |
return ($num_added, $num_updated, $num_items_added, $num_items_replaced, $num_items_errored, $num_ignored); |
709 |
return ($num_added, $num_updated, $num_items_added, $num_items_replaced, $num_items_errored, $num_ignored); |
| 714 |
} |
710 |
} |
| 715 |
|
711 |
|
| 716 |
- |
|
|