Changeset 1322
- Timestamp:
- 10/17/09 08:28:02 (6 weeks ago)
- Location:
- trunk/server/lib/MogileFS
- Files:
-
- 2 modified
-
Store.pm (modified) (1 diff)
-
Worker/Query.pm (modified) (4 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/server/lib/MogileFS/Store.pm
r1317 r1322 1023 1023 sub delete_tempfile_row { 1024 1024 my ($self, $fidid) = @_; 1025 $self->dbh->do("DELETE FROM tempfile WHERE fid=?", undef, $fidid);1025 my $rv = $self->dbh->do("DELETE FROM tempfile WHERE fid=?", undef, $fidid); 1026 1026 $self->condthrow; 1027 return $rv; 1028 } 1029 1030 # Load the specified tempfile, then delete it. If we succeed, we were 1031 # here first; otherwise, someone else beat us here (and we return undef) 1032 sub delete_and_return_tempfile_row { 1033 my ($self, $fidid) = @_; 1034 my $rv = $self->tempfile_row_from_fid($fidid); 1035 my $rows_deleted = $self->delete_tempfile_row($fidid); 1036 return $rv if ($rows_deleted > 0); 1027 1037 } 1028 1038 -
trunk/server/lib/MogileFS/Worker/Query.pm
r1300 r1322 366 366 my $sto = Mgd::get_store(); 367 367 368 # find the temp file we're closing and making real 369 my $trow = $sto->tempfile_row_from_fid($fidid) or 368 # find the temp file we're closing and making real. If another worker 369 # already has it, bail out---the client closed it twice. 370 my $trow = $sto->delete_and_return_tempfile_row($fidid) or 370 371 return $self->err_line("no_temp_file"); 371 372 … … 381 382 my $old_fid = MogileFS::FID->new_from_dmid_and_key($dmid, $key); 382 383 if ($old_fid) { 384 # Fail if a file already exists for this fid. Should never 385 # happen, as it should not be possible to close a file twice. 386 return $self->err_line("fid_exists") 387 unless $old_fid->{fidid} != $fidid; 388 383 389 $old_fid->delete; 384 390 } … … 412 418 # mark it as needing replicating: 413 419 $fid->enqueue_for_replication(from_device => $devid); 414 $sto->delete_tempfile_row($fidid);415 420 416 421 if ($fid->update_devcount) { … … 1546 1551 'no_ip' => "IP required to create host", 1547 1552 'no_port' => "Port required to create host", 1553 'no_temp_file' => "No tempfile or file already closed", 1548 1554 'none_match' => "No keys match that pattern and after-value (if any).", 1549 1555 'plugin_aborted' => "Action aborted by plugin",
