[freeside-commits] branch master updated. 664189df19ccc7bd6d39dea57c63c4d6a021d02f
Mark Wells
mark at 420.am
Tue Apr 29 12:37:57 PDT 2014
The branch, master has been updated
via 664189df19ccc7bd6d39dea57c63c4d6a021d02f (commit)
from cb0c60153102a21028425cf31ba12c8cdf31dca4 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commit 664189df19ccc7bd6d39dea57c63c4d6a021d02f
Author: Mark Wells <mark at freeside.biz>
Date: Tue Apr 29 12:37:52 2014 -0700
make non-blocking location upgrade optional, #28883
diff --git a/FS/FS/cust_main/Location.pm b/FS/FS/cust_main/Location.pm
index 560736d..32590bb 100644
--- a/FS/FS/cust_main/Location.pm
+++ b/FS/FS/cust_main/Location.pm
@@ -126,6 +126,8 @@ sub location_fields { @location_fields }
sub _upgrade_data {
my $class = shift;
+ my %opt = @_;
+
eval "use FS::contact;
use FS::contact_class;
use FS::contact_phone;
@@ -167,12 +169,17 @@ sub _upgrade_data {
my $num_jobs = FS::queue->count('job = \'FS::cust_main::Location::process_upgrade_location\' and status != \'failed\'');
if ( $num_to_upgrade > 0 ) {
warn "Need to migrate $num_to_upgrade customer locations.\n";
- if ( $num_jobs > 0 ) {
- warn "Upgrade already queued.\n";
- } else {
- warn "Scheduling upgrade.\n";
- my $job = FS::queue->new({ job => 'FS::cust_main::Location::process_upgrade_location' });
- $job->insert;
+
+ if ( $opt{queue} ) {
+ if ( $num_jobs > 0 ) {
+ warn "Upgrade already queued.\n";
+ } else {
+ warn "Scheduling upgrade.\n";
+ my $job = FS::queue->new({ job => 'FS::cust_main::Location::process_upgrade_location' });
+ $job->insert;
+ }
+ } else { #do it now
+ process_upgrade_location();
}
}
diff --git a/FS/bin/freeside-upgrade b/FS/bin/freeside-upgrade
index 45d2709..3755a81 100755
--- a/FS/bin/freeside-upgrade
+++ b/FS/bin/freeside-upgrade
@@ -1,7 +1,7 @@
#!/usr/bin/perl -w
use strict;
-use vars qw( $opt_d $opt_s $opt_q $opt_v $opt_r $opt_c );
+use vars qw( $opt_d $opt_s $opt_q $opt_v $opt_r $opt_c $opt_j );
use vars qw( $DEBUG $DRY_RUN );
use Getopt::Std;
use DBIx::DBSchema 0.31; #0.39
@@ -17,7 +17,7 @@ my $start = time;
die "Not running uid freeside!" unless checkeuid();
-getopts("dqrcs");
+getopts("dqrcsj");
$DEBUG = !$opt_q;
#$DEBUG = $opt_v;
@@ -30,6 +30,14 @@ $FS::UID::callback_hack = 1;
my $dbh = adminsuidsetup($user);
$FS::UID::callback_hack = 0;
+# pass command line opts through to upgrade* routines
+my %upgrade_opts = (
+ quiet => $opt_q,
+ verbose => $opt_v,
+ queue => $opt_j,
+ # others?
+);
+
if ( driver_name =~ /^mysql/i ) { #until 0.39 is required above
eval "use DBIx::DBSchema 0.39;";
die $@ if $@;
@@ -102,7 +110,7 @@ if ( $DRY_RUN ) {
or die "Error: ". $dbh->errstr. "\n executing: $statement";
}
- upgrade_schema();
+ upgrade_schema(%upgrade_opts);
dbdef_create($dbh, $dbdef_file);
delete $FS::Schema::dbdef_cache{$dbdef_file}; #force an actual reload
@@ -286,7 +294,7 @@ foreach my $cfst ( @cfst ) {
}
warn "Custom fields data upgrade completed";
-upgrade_config()
+upgrade_config(%upgrade_opts)
unless $DRY_RUN || $opt_s;
$dbh->commit or die $dbh->errstr;
@@ -294,7 +302,7 @@ $dbh->commit or die $dbh->errstr;
warn "Config updates completed in ". (time-$start). " seconds\n"; # if $DEBUG;
$start = time;
-upgrade()
+upgrade(%upgrade_opts)
unless $DRY_RUN || $opt_s;
$dbh->commit or die $dbh->errstr;
@@ -302,7 +310,7 @@ $dbh->commit or die $dbh->errstr;
warn "Table updates completed in ". (time-$start). " seconds\n"; # if $DEBUG;
$start = time;
-upgrade_sqlradius()
+upgrade_sqlradius(%upgrade_opts)
unless $DRY_RUN || $opt_s || $opt_r;
warn "SQL RADIUS updates completed in ". (time-$start). " seconds\n"; # if $DEBUG;
@@ -364,6 +372,11 @@ Also performs other upgrade functions:
[ -s ]: Schema changes only. Useful for Pg/slony slaves where the data
changes will be replicated from the Pg/slony master.
+ [ -j ]: Run certain upgrades asychronously from the job queue. Currently
+ used only for the 2.x -> 3.x cust_location upgrade. This may cause
+ odd behavior before the upgrade is complete, so it's recommended
+ only for very large cust_main tables that take too long to upgrade.
+
=head1 SEE ALSO
=cut
-----------------------------------------------------------------------
Summary of changes:
FS/FS/cust_main/Location.pm | 19 +++++++++++++------
FS/bin/freeside-upgrade | 25 +++++++++++++++++++------
2 files changed, 32 insertions(+), 12 deletions(-)
More information about the freeside-commits
mailing list