Skip to content

Commit

Permalink
Fix to handle errors correctly
Browse files Browse the repository at this point in the history
  • Loading branch information
mocchira committed Feb 12, 2014
1 parent d95e0ee commit 63a1dbb
Showing 1 changed file with 8 additions and 3 deletions.
11 changes: 8 additions & 3 deletions src/leo_gateway_http_commons.erl
Expand Up @@ -350,11 +350,17 @@ move_large_object(#metadata{dsize = Size}, DstKey,
ReadHandler) -> ReadHandler) ->
{ok, WriteHandler} = leo_gateway_large_object_handler:start_link(DstKey, ChunkedSize), {ok, WriteHandler} = leo_gateway_large_object_handler:start_link(DstKey, ChunkedSize),
try try
move_large_object_1(leo_gateway_large_object_handler:get_chunked(ReadHandler), case move_large_object_1(leo_gateway_large_object_handler:get_chunked(ReadHandler),
#req_large_obj{handler = WriteHandler, #req_large_obj{handler = WriteHandler,
key = DstKey, key = DstKey,
length = Size, length = Size,
chunked_size = ChunkedSize}, ReadHandler) chunked_size = ChunkedSize}, ReadHandler) of
{error, Cause} ->
ok = leo_gateway_large_object_handler:rollback(WriteHandler),
{error, Cause};
Other ->
Other
end
after after
catch leo_gateway_large_object_handler:stop(WriteHandler) catch leo_gateway_large_object_handler:stop(WriteHandler)
end. end.
Expand All @@ -375,7 +381,6 @@ move_large_object_1({ok, Data},
move_large_object_1({error, Cause}, move_large_object_1({error, Cause},
#req_large_obj{key = Key, #req_large_obj{key = Key,
handler = WriteHandler}, _) -> handler = WriteHandler}, _) ->
ok = leo_gateway_large_object_handler:rollback(WriteHandler),
?error("move_large_object_1/3", "key:~s, cause:~p", [binary_to_list(Key), Cause]), ?error("move_large_object_1/3", "key:~s, cause:~p", [binary_to_list(Key), Cause]),
{error, ?ERROR_FAIL_RETRIEVE_OBJ}; {error, ?ERROR_FAIL_RETRIEVE_OBJ};
move_large_object_1(done, #req_large_obj{handler = WriteHandler, move_large_object_1(done, #req_large_obj{handler = WriteHandler,
Expand Down

0 comments on commit 63a1dbb

Please sign in to comment.