summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorivan <ivan>2004-09-05 09:41:35 +0000
committerivan <ivan>2004-09-05 09:41:35 +0000
commit1555a620f8f05ba8f3bccba6ec5f559752bbef5d (patch)
tree466974bd84640f45277ed7ade2d04ae22112b568
parent0c2698a4bccee998a62c5a12d61dd594453f3f21 (diff)
acquire a database lock to prevent race conditions in duplicate checking
-rw-r--r--FS/FS/svc_acct.pm7
1 files changed, 7 insertions, 0 deletions
diff --git a/FS/FS/svc_acct.pm b/FS/FS/svc_acct.pm
index 806e793ea..da3571e62 100644
--- a/FS/FS/svc_acct.pm
+++ b/FS/FS/svc_acct.pm
@@ -251,6 +251,13 @@ sub insert {
#new duplicate username/username@domain/uid checking
+ #this is Pg-specific. what to do for mysql etc?
+ # ( mysql LOCK TABLES certainly isn't equivalent or useful here :/ )
+ warn "$me locking svc_acct table for duplicate search" if $DEBUG;
+ dbh->do("LOCK TABLE svc_acct IN SHARE ROW EXCLUSIVE MODE")
+ or die dbh->errstr;
+ warn "$me acquired svc_acct table lock for duplicate search" if $DEBUG;
+
my $part_svc = qsearchs('part_svc', { 'svcpart' => $self->svcpart } );
unless ( $part_svc ) {
$dbh->rollback if $oldAutoCommit;