From 918f8bf54a4aeffc3c0ef4ad1fa31ce93bbc1346 Mon Sep 17 00:00:00 2001 From: "Damien F. Katz" Date: Wed, 23 Jun 2010 18:59:42 +0000 Subject: 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 --- src/couchdb/couch_file.erl | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'src/couchdb/couch_file.erl') 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, <>, false} = gen_server:call(Fd, {pread, Pos, Len}, infinity), -- cgit v1.2.3