Current section

Files

Jump to
ra src ra_file.erl
Raw

src/ra_file.erl

%% This Source Code Form is subject to the terms of the Mozilla Public
%% License, v. 2.0. If a copy of the MPL was not distributed with this
%% file, You can obtain one at https://mozilla.org/MPL/2.0/.
%%
%% Copyright (c) 2017-2025 Broadcom. All Rights Reserved. The term Broadcom refers to Broadcom Inc. and/or its subsidiaries.
%%
%% @hidden
-module(ra_file).
-include("ra.hrl").
-define(RETRY_ON_ERROR(Op),
case Op of
{error, E} when E =:= eagain orelse E =:= eacces ->
?DEBUG("Error `~p` during file operation, retrying once in 20ms...", [E]),
timer:sleep(20),
case Op of
{error, eagain} = Err ->
?DEBUG("Error `~p` again during file operation", [E]),
Err;
Res ->
Res
end;
Res ->
Res
end).
-export([
sync/1,
rename/2
]).
sync(Fd) ->
?RETRY_ON_ERROR(file:sync(Fd)).
rename(Src, Dst) ->
?RETRY_ON_ERROR(prim_file:rename(Src, Dst)).