summaryrefslogtreecommitdiff
path: root/src/couchdb/couch_file.erl
diff options
context:
space:
mode:
authorDamien F. Katz <damien@apache.org>2010-06-23 18:59:42 +0000
committerDamien F. Katz <damien@apache.org>2010-06-23 18:59:42 +0000
commit918f8bf54a4aeffc3c0ef4ad1fa31ce93bbc1346 (patch)
tree5eee278fccc23e7ab893e8cf0b356db839d15677 /src/couchdb/couch_file.erl
parentf5fad72d00f5f3f0b38473898bb3683683a6cc49 (diff)
Make file deletions async to avoid pauses during compaction and db deletion. Fixes COUCHDB-780.
git-svn-id: https://svn.apache.org/repos/asf/couchdb/trunk@957303 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'src/couchdb/couch_file.erl')
-rw-r--r--src/couchdb/couch_file.erl10
1 files changed, 10 insertions, 0 deletions
diff --git a/src/couchdb/couch_file.erl b/src/couchdb/couch_file.erl
index 59074b65..fe524e24 100644
--- a/src/couchdb/couch_file.erl
+++ b/src/couchdb/couch_file.erl
@@ -28,6 +28,7 @@
-export([pread_binary/2, read_header/1, truncate/2, upgrade_old_header/2]).
-export([append_term_md5/2,append_binary_md5/2]).
-export([init/1, terminate/2, handle_call/3, handle_cast/2, code_change/3, handle_info/2]).
+-export([delete/1]).
%%----------------------------------------------------------------------
%% Args: Valid Options are [create] and [create,overwrite].
@@ -169,6 +170,15 @@ close(Fd) ->
erlang:demonitor(MRef, [flush])
end.
+delete(Filepath) ->
+ case file:rename(Filepath, Filepath ++ ".delete") of
+ ok ->
+ spawn(file, delete, [Filepath ++ ".delete"]),
+ ok;
+ Error ->
+ Error
+ end.
+
% 09 UPGRADE CODE
old_pread(Fd, Pos, Len) ->
{ok, <<RawBin:Len/binary>>, false} = gen_server:call(Fd, {pread, Pos, Len}, infinity),