diff options
| author | Matthias Radestock <matthias@lshift.net> | 2010-04-29 18:37:44 +0100 |
|---|---|---|
| committer | Matthias Radestock <matthias@lshift.net> | 2010-04-29 18:37:44 +0100 |
| commit | 60994623b0706d4ecf70794a9933b63e79388cfa (patch) | |
| tree | 8f84b14f8ad1d1b7e4b88cc9cc8c04eb8e9e3729 /src | |
| parent | c9b044843fb1bda99111c90da5346da98f909dcb (diff) | |
| download | rabbitmq-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.erl | 7 |
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), |
