diff --git a/apps/iot/src/http_handler/device_handler.erl b/apps/iot/src/http_handler/device_handler.erl index 0cf7567..50d2290 100644 --- a/apps/iot/src/http_handler/device_handler.erl +++ b/apps/iot/src/http_handler/device_handler.erl @@ -99,10 +99,10 @@ test(HostUUID, DeviceUUID) when is_binary(HostUUID), is_binary(DeviceUUID) -> lager:debug("[device_handler] host_id: ~p, will query_edge_status uuid: ~p", [HostUUID, DeviceUUID]), case iot_host:get_pid(HostUUID) of undefined -> - {ok, 200, iot_util:json_error(404, <<"query_edge_status failed">>)}; + {ok, <<"host not found">>}; HostPid when is_pid(HostPid) -> Ref = make_ref(), - {ok, {TaskPid, _}} = iot_device_poll_task:start_monitor(), + {ok, {TaskPid, MRef}} = iot_device_poll_task:start_monitor(), iot_device_poll_task:poll_task(TaskPid, Ref, HostPid, self(), DeviceUUID, Timeout), receive {poll_task_reply, Ref, {ok, EdgeStatus}} -> @@ -110,9 +110,10 @@ test(HostUUID, DeviceUUID) when is_binary(HostUUID), is_binary(DeviceUUID) -> {ok, 200, iot_util:json_data(#{<<"edge_status">> => EdgeStatus})}; {poll_task_reply, Ref, {error, Reason}} -> lager:debug("[device_handler] query_edge_status device: ~p, get error: ~p", [DeviceUUID, Reason]), - {ok, 200, iot_util:json_error(404, <<"query_edge_status failed">>)} + {ok, 200, iot_util:json_error(404, <<"query_edge_status failed">>)}; + {'DOWN', MRef, process, TaskPid, Reason} -> + {ok, <<"task pid down with reason:">>, Reason} after Timeout * 1000 -> - lager:debug("[device_handler] query_edge_status device: ~p, timeout", [DeviceUUID]), - {ok, 200, iot_util:json_error(404, <<"query_edge_status timeout">>)} + {ok, 200, <<"query_edge_status timeout">>} end end.