diff options
author | ivan <ivan> | 2004-09-05 09:41:35 +0000 |
---|---|---|
committer | ivan <ivan> | 2004-09-05 09:41:35 +0000 |
commit | 1555a620f8f05ba8f3bccba6ec5f559752bbef5d (patch) | |
tree | 466974bd84640f45277ed7ade2d04ae22112b568 | |
parent | 0c2698a4bccee998a62c5a12d61dd594453f3f21 (diff) |
acquire a database lock to prevent race conditions in duplicate checking
-rw-r--r-- | FS/FS/svc_acct.pm | 7 |
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; |