diff --git a/deps/rabbit/src/rabbit_classic_queue_index_v2.erl b/deps/rabbit/src/rabbit_classic_queue_index_v2.erl index 7d6fa3de8ae..dff425d60a7 100644 --- a/deps/rabbit/src/rabbit_classic_queue_index_v2.erl +++ b/deps/rabbit/src/rabbit_classic_queue_index_v2.erl @@ -310,7 +310,8 @@ recover_segments(State, _, StoreState, _, []) -> recover_segments(State0, ContainsCheckFun, StoreState0, CountersRef, [Segment|Tail]) -> SegmentEntryCount = segment_entry_count(), SegmentFile = segment_file(Segment, State0), - {ok, Fd} = file:open(SegmentFile, [read, read_ahead, write, raw, binary]), + {ok, Fd} = rabbit_file:open_eventually(SegmentFile, + [read, read_ahead, write, raw, binary]), case file:read(Fd, ?HEADER_SIZE) of {ok, < maybe_close_fd(OldFd), - case file:open(segment_file(Segment, State), [read, raw, binary]) of + case rabbit_file:open_eventually(segment_file(Segment, State), [read, raw, binary]) of {ok, Fd} -> case file:read(Fd, ?HEADER_SIZE) of {ok, < %% try again up to 3 times. {error, eacces} -> timer:sleep(10), - open_eventually(File, Modes, N - 1) + open_eventually(File, Modes, N - 1); + %% Other errors we return immediately. + Error -> + Error end.