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 /FS | |
| parent | 0c2698a4bccee998a62c5a12d61dd594453f3f21 (diff) | |
acquire a database lock to prevent race conditions in duplicate checking
Diffstat (limited to 'FS')
| -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; | 
