Changeset 640

Show
Ignore:
Timestamp:
01/05/07 05:46:11 (3 years ago)
Author:
bradfitz
Message:

remove last dbh from Domain

Location:
trunk/server/lib/MogileFS
Files:
3 modified

Legend:

Unmodified
Added
Removed
  • trunk/server/lib/MogileFS/Domain.pm

    r633 r640  
    104104    my ($pkg, $name) = @_; 
    105105 
    106     my $dbh = Mgd::get_dbh(); 
    107  
    108     if (my $dmid = MogileFS::Domain->id_of_name($name)) { 
    109         throw("dup"); 
    110     } 
    111  
    112     # get the max domain id 
    113     my $maxid = $dbh->selectrow_array('SELECT MAX(dmid) FROM domain') || 0; 
    114     $dbh->do('INSERT INTO domain (dmid, namespace) VALUES (?, ?)', 
    115              undef, $maxid + 1, $name); 
    116     throw("db") if $dbh->err; 
     106    # throws 'dup': 
     107    my $dmid = Mgd::get_store()->create_domain($name) 
     108        or die "create domain didn't return a dmid"; 
    117109 
    118110    # return the domain id we created 
    119111    MogileFS::Domain->invalidate_cache; 
    120     return MogileFS::Domain->of_dmid($maxid+1); 
     112    return MogileFS::Domain->of_dmid($dmid); 
    121113} 
    122114 
  • trunk/server/lib/MogileFS/Store.pm

    r639 r640  
    389389} 
    390390 
     391# creates a new domain, given a domain namespace string.  return the dmid on success, 
     392# throw 'dup' on duplicate name. 
     393sub create_domain { 
     394    my ($self, $name) = @_; 
     395    die "UNIMPLEMENTED"; 
     396} 
     397 
    3913981; 
    392399 
  • trunk/server/lib/MogileFS/Store/MySQL.pm

    r635 r640  
    216216} 
    217217 
     218# creates a new domain, given a domain namespace string.  return the dmid on success, 
     219# throw 'dup' on duplicate name. 
     220sub create_domain { 
     221    my ($self, $name) = @_; 
     222    my $dbh = $self->dbh; 
     223 
     224    # get the max domain id 
     225    my $maxid = $dbh->selectrow_array('SELECT MAX(dmid) FROM domain') || 0; 
     226    my $rv = eval { 
     227        $dbh->do('INSERT INTO domain (dmid, namespace) VALUES (?, ?)', 
     228                 undef, $maxid + 1, $name); 
     229    }; 
     230    if ($self->was_duplicate_error) { 
     231        throw("dup"); 
     232    } 
     233    return $maxid+1 if $rv; 
     234    die "failed to make domain";  # FIXME: the above is racy. 
     235} 
    218236 
    2192371;