Changeset 640
- Timestamp:
- 01/05/07 05:46:11 (3 years ago)
- Location:
- trunk/server/lib/MogileFS
- Files:
-
- 3 modified
Legend:
- Unmodified
- Added
- Removed
-
trunk/server/lib/MogileFS/Domain.pm
r633 r640 104 104 my ($pkg, $name) = @_; 105 105 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"; 117 109 118 110 # return the domain id we created 119 111 MogileFS::Domain->invalidate_cache; 120 return MogileFS::Domain->of_dmid($ maxid+1);112 return MogileFS::Domain->of_dmid($dmid); 121 113 } 122 114 -
trunk/server/lib/MogileFS/Store.pm
r639 r640 389 389 } 390 390 391 # creates a new domain, given a domain namespace string. return the dmid on success, 392 # throw 'dup' on duplicate name. 393 sub create_domain { 394 my ($self, $name) = @_; 395 die "UNIMPLEMENTED"; 396 } 397 391 398 1; 392 399 -
trunk/server/lib/MogileFS/Store/MySQL.pm
r635 r640 216 216 } 217 217 218 # creates a new domain, given a domain namespace string. return the dmid on success, 219 # throw 'dup' on duplicate name. 220 sub 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 } 218 236 219 237 1;
