summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMatthias Radestock <matthias@lshift.net>2010-04-29 18:37:44 +0100
committerMatthias Radestock <matthias@lshift.net>2010-04-29 18:37:44 +0100
commit60994623b0706d4ecf70794a9933b63e79388cfa (patch)
tree8f84b14f8ad1d1b7e4b88cc9cc8c04eb8e9e3729 /src
parentc9b044843fb1bda99111c90da5346da98f909dcb (diff)
downloadrabbitmq-server-git-60994623b0706d4ecf70794a9933b63e79388cfa.tar.gz
made logic in fhc:close1 less obscure
the previous code was working ok, but only because handles were soft-closed at most once
Diffstat (limited to 'src')
-rw-r--r--src/file_handle_cache.erl7
1 files changed, 4 insertions, 3 deletions
diff --git a/src/file_handle_cache.erl b/src/file_handle_cache.erl
index 93a75ac024..b65a05a791 100644
--- a/src/file_handle_cache.erl
+++ b/src/file_handle_cache.erl
@@ -582,7 +582,7 @@ close1(Ref, Handle, SoftOrHard) ->
Handle2 =
case Hdl of
closed ->
- ok;
+ Handle1;
_ ->
ok = case IsDirty of
true -> file:sync(Hdl);
@@ -605,7 +605,8 @@ close1(Ref, Handle, SoftOrHard) ->
?SERVER, {close, self(), Oldest}),
Tree1
end),
- Handle1 #handle { trusted_offset = Offset,
+ Handle1 #handle { hdl = closed,
+ trusted_offset = Offset,
is_dirty = false }
end,
case SoftOrHard of
@@ -624,7 +625,7 @@ close1(Ref, Handle, SoftOrHard) ->
has_writer = HasWriter1 })
end,
ok;
- soft -> {ok, Handle2 #handle { hdl = closed }}
+ soft -> {ok, Handle2}
end;
{Error, Handle1} ->
put_handle(Ref, Handle1),