Skip to content

Commit 0a94ac7

Browse files
committed
gateway: fall back to parallel fetch if there is no disk cache for large object
1 parent 200362c commit 0a94ac7

File tree

1 file changed

+16
-3
lines changed

1 file changed

+16
-3
lines changed

apps/leo_gateway/src/leo_large_object_get_handler.erl

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@
5656
-record(state, {
5757
key = <<>> :: binary(),
5858
transport_rec :: #transport_record{},
59+
is_disc_cache_active :: boolean(),
5960
iterator :: leo_large_object_commons:iterator()
6061
}).
6162

@@ -75,7 +76,8 @@
7576
-spec(start_link(Args) ->
7677
ok | {error, any()} when Args::tuple()).
7778
start_link({Key, TransportRec}) ->
78-
gen_server:start_link(?MODULE, [Key, TransportRec], []).
79+
IsDiskCacheActive = leo_cache_api:is_disc_cache_active(),
80+
gen_server:start_link(?MODULE, [Key, TransportRec, IsDiskCacheActive], []).
7981

8082

8183
%% @doc Stop this server
@@ -102,14 +104,25 @@ get(Pid, TotalOfChunkedObjs, Req, Meta) ->
102104
%%====================================================================
103105
%% GEN_SERVER CALLBACKS
104106
%%====================================================================
105-
init([Key, TransportRec]) ->
107+
init([Key, TransportRec, IsDiskCacheActive]) ->
106108
State = #state{key = Key,
107-
transport_rec = TransportRec},
109+
transport_rec = TransportRec,
110+
is_disc_cache_active = IsDiskCacheActive},
108111
{ok, State}.
109112

110113
handle_call(stop, _From, State) ->
111114
{stop, normal, ok, State};
112115

116+
handle_call({get, TotalOfChunkedObjs, Req, Meta}, _From,
117+
#state{key = Key, transport_rec = TransportRec, is_disc_cache_active = false} = State) ->
118+
Reply = handle_loop(TotalOfChunkedObjs,
119+
#req_info{key = Key,
120+
chunk_key = Key,
121+
request = Req,
122+
metadata = Meta,
123+
transport_rec = TransportRec}),
124+
{reply, Reply, State};
125+
113126
handle_call({get, TotalOfChunkedObjs, Req, Meta}, _From,
114127
#state{key = Key, transport_rec = TransportRec} = State) ->
115128
Reply = case leo_tran_serializable_cntnr:run(

0 commit comments

Comments
 (0)