[freeside-commits] branch master updated. 67cb1a2d4882c8f04728f828cc13de1a543a2bb3

Mark Wells mark at 420.am
Wed Apr 17 16:22:12 PDT 2013


The branch, master has been updated
       via  67cb1a2d4882c8f04728f828cc13de1a543a2bb3 (commit)
       via  5d2551a955964d8af6fec48ee85647567e942b0c (commit)
      from  9fbee73725ce02023c76179d573048cf4177903b (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 67cb1a2d4882c8f04728f828cc13de1a543a2bb3
Author: Mark Wells <mark at freeside.biz>
Date:   Wed Apr 17 16:22:01 2013 -0700

    fix transaction state when exiting a queue job, #22524

diff --git a/FS/bin/freeside-queued b/FS/bin/freeside-queued
index 2fd8025..dcc6ac4 100644
--- a/FS/bin/freeside-queued
+++ b/FS/bin/freeside-queued
@@ -212,8 +212,10 @@ while (1) {
       # don't put @args in the log, may expose passwords
       $log->info('starting job ('.$ljob->job.')');
       warn 'running "&'. $ljob->job. '('. join(', ', @args). ")\n" if $DEBUG;
+      local $FS::UID::AutoCommit = 0; # so that we can clean up failures
       eval $eval; #throw away return value?  suppose so
       if ( $@ ) {
+        dbh->rollback;
         my %hash = $ljob->hash;
         $hash{'statustext'} = $@;
         if ( $hash{'statustext'} =~ /\/misc\/queued_report/ ) { #use return?
@@ -225,8 +227,10 @@ while (1) {
         my $fjob = new FS::queue( \%hash );
         my $error = $fjob->replace($ljob);
         die $error if $error;
+        dbh->commit; # for the status change only
       } else {
         $ljob->delete;
+        dbh->commit; # for the job itself
       }
 
       if ( UNIVERSAL::can(dbh, 'sprintProfile') ) {

commit 5d2551a955964d8af6fec48ee85647567e942b0c
Author: Mark Wells <mark at freeside.biz>
Date:   Wed Apr 17 16:21:58 2013 -0700

    dummy export module for testing

diff --git a/FS/FS/part_export/test.pm b/FS/FS/part_export/test.pm
new file mode 100644
index 0000000..126897c
--- /dev/null
+++ b/FS/FS/part_export/test.pm
@@ -0,0 +1,75 @@
+package FS::part_export::test;
+
+use strict;
+use vars qw(%options %info);
+use Tie::IxHash;
+use base qw(FS::part_export);
+
+tie %options, 'Tie::IxHash',
+  'result'  => { label    => 'Result',
+                 type     => 'select',
+                 options  => [ 'success', 'failure', 'exception' ],
+                 default  => 'success',
+               },
+  'errormsg'=> { label    => 'Error message',
+                 default  => 'Test export' },
+  'insert'  => { label    => 'Insert', type => 'checkbox', default => 1, },
+  'delete'  => { label    => 'Delete', type => 'checkbox', default => 1, },
+  'replace' => { label    => 'Replace',type => 'checkbox', default => 1, },
+  'suspend' => { label    => 'Suspend',type => 'checkbox', default => 1, },
+  'unsuspend'=>{ label => 'Unsuspend', type => 'checkbox', default => 1, },
+;
+
+%info = (
+  'svc'     => [ qw(svc_acct svc_broadband svc_phone svc_domain) ],
+  'desc'    => 'Test export for development',
+  'options' => \%options,
+  'notes'   => <<END,
+<P>Test export.  Do not use this in production systems.</P>
+<P>This export either always succeeds, always fails (returning an error),
+or always dies, according to the "Result" option.  It does nothing else; the
+purpose is purely to simulate success or failure within an export module.</P>
+<P>The checkbox options can be used to turn the export off for certain
+actions, if this is needed.</P>
+END
+);
+
+sub export_insert {
+  my $self = shift;
+  $self->run(@_) if $self->option('insert');
+}
+
+sub export_delete {
+  my $self = shift;
+  $self->run(@_) if $self->option('delete');
+}
+
+sub export_replace {
+  my $self = shift;
+  $self->run(@_) if $self->option('replace');
+}
+
+sub export_suspend {
+  my $self = shift;
+  $self->run(@_) if $self->option('suspend');
+}
+
+sub export_unsuspend {
+  my $self = shift;
+  $self->run(@_) if $self->option('unsuspend');
+}
+
+sub run {
+  my $self = shift;
+  my $svc_x = shift;
+  my $result = $self->option('result');
+  if ( $result eq 'failure' ) {
+    return $self->option('errormsg');
+  } elsif ( $result eq 'exception' ) {
+    die $self->option('errormsg');
+  } else {
+    return '';
+  }
+}
+
+1;

-----------------------------------------------------------------------

Summary of changes:
 FS/FS/part_export/test.pm |   75 +++++++++++++++++++++++++++++++++++++++++++++
 FS/bin/freeside-queued    |    4 ++
 2 files changed, 79 insertions(+), 0 deletions(-)
 create mode 100644 FS/FS/part_export/test.pm




More information about the freeside-commits mailing list