diff --git a/trunk/server/lib/MogileFS/Worker/Delete.pm b/trunk/server/lib/MogileFS/Worker/Delete.pm
index d04c993..1f5a3d3 100644
--- a/trunk/server/lib/MogileFS/Worker/Delete.pm
+++ b/trunk/server/lib/MogileFS/Worker/Delete.pm
@@ -98,7 +98,17 @@ sub process_tempfiles {
# now expunged (or soon to be) rows from tempfile
my (@devfids, @fidids);
foreach my $row (@$tempfiles) {
- push @fidids, $row->[0];
+
+ # If FID is still loadable, we've arrived here due to a bug or race
+ # condition elsewhere. Remove the tempfile row but don't delete the
+ # file!
+ my $fidid = $row->[0];
+ my $fid = MogileFS::FID->new($fidid);
+ if ($fid->exists) {
+ $sto->dbh->do("DELETE FROM tempfile WHERE fid = ?", {}, $fidid);
+ next;
+ }
+ push @fidids, $fidid;
# sanity check the string column.
my $devids = $row->[1];
--
1.5.3.8