This is an automated email from the ASF dual-hosted git repository.

dlive pushed a commit to branch 0.4.0
in repository https://gitbox.apache.org/repos/asf/dubbo-erlang.git


The following commit(s) were added to refs/heads/0.4.0 by this push:
     new a6785db  optimize register result check
a6785db is described below

commit a6785db690953ac393fdfbf0e19fe06ed0fae842
Author: DLive <xsxgm...@163.com>
AuthorDate: Tue Aug 20 19:04:19 2019 +0800

    optimize register result check
---
 src/dubbo_protocol_registry.erl  | 18 ++++++++++++------
 src/dubbo_registry_zookeeper.erl | 40 ++++++++++++++++++++++++++++++----------
 2 files changed, 42 insertions(+), 16 deletions(-)

diff --git a/src/dubbo_protocol_registry.erl b/src/dubbo_protocol_registry.erl
index dd1c0f8..91b718d 100644
--- a/src/dubbo_protocol_registry.erl
+++ b/src/dubbo_protocol_registry.erl
@@ -31,21 +31,28 @@ refer(Url, Acc) ->
     {ok, RegistryName} = dubbo_registry:setup_register(RegistryUrlInfo),
 
     ConsumerUrl = gen_consumer_url(UrlInfo),
-    dubbo_registry:register(RegistryName, ConsumerUrl),
-
+    case dubbo_registry:register(RegistryName, ConsumerUrl) of
+        {ok,Result}->
+            logger:info("registry ~p register success 
~p",[RegistryName,Result]);
+        {error,Reason1} ->
+            logger:warning("registry ~p register fail ~p 
~p",[RegistryName,Reason1,ConsumerUrl])
+    end,
     dubbo_directory:subscribe(RegistryName, ConsumerUrl),
     {ok,Acc}.
 
 export(Invoker, Acc) ->
     {ok, UrlInfo} = dubbo_common_fun:parse_url(Invoker#invoker.url),
-    %% url = 
registry://127.0.0.1:2181/org.apache.dubbo.registry.RegistryService?application=hello-world&dubbo=2.0.2&export=dubbo%3A%2F%2F192.168.1.5%3A20880%2Forg.apache.dubbo.erlang.sample.service.facade.UserOperator%3Fanyhost%3Dtrue%26application%3Dhello-world%26bean.name%3Dorg.apache.dubbo.erlang.sample.service.facade.UserOperator%26bind.ip%3D192.168.1.5%26bind.port%3D20880%26default.deprecated%3Dfalse%26default.dynamic%3Dfalse%26default.register%3Dtrue%26deprecated%3Dfalse%26dubbo%3
 [...]
     ProtocolUrl = get_provider_url(UrlInfo),
     {ok, InterfaceKey} = do_local_export(Invoker, ProtocolUrl),
 
     RegistryUrlInfo = gen_registry_urlinfo(UrlInfo),
     {ok, RegistryName} = dubbo_registry:setup_register(RegistryUrlInfo),
-    dubbo_registry:register(RegistryName, ProtocolUrl),
-
+    case dubbo_registry:register(RegistryName, ProtocolUrl) of
+        {ok,Result}->
+            logger:info("registry ~p register success 
~p",[RegistryName,Result]);
+        {error,Reason1} ->
+            logger:warning("registry ~p register fail ~p 
~p",[RegistryName,Reason1,ProtocolUrl])
+    end,
     register_export_info(ProtocolUrl, RegistryName, InterfaceKey),
     {ok, Acc}.
 
@@ -63,7 +70,6 @@ unexport(RegistryModule, Url) ->
     ok.
 
 do_local_export(Invoker, Url) ->
-    %% Url = 
dubbo://127.0.0.1:20880/org.apache.dubbo.erlang.sample.service.facade.UserOperator?anyhost=true&application=hello-world&bean.name=org.apache.dubbo.erlang.sample.service.facade.UserOperator&bind.ip=127.0.0.1&bind.port=20880&default.deprecated=false&default.dynamic=false&default.register=true&deprecated=false&dubbo=2.0.2&dynamic=false&generic=false&interface=org.apache.dubbo.erlang.sample.service.facade.UserOperator&methods=queryUserInfo,queryUserList,genUserId,getUserInfo&pid
 [...]
     {ok, UrlInfo} = dubbo_common_fun:parse_url(Url),
     Protocol = UrlInfo#dubbo_url.scheme,
     ProtocolModule = binary_to_existing_atom(<<<<"dubbo_protocol_">>/binary, 
Protocol/binary>>, latin1),
diff --git a/src/dubbo_registry_zookeeper.erl b/src/dubbo_registry_zookeeper.erl
index cdef3d9..52152fc 100644
--- a/src/dubbo_registry_zookeeper.erl
+++ b/src/dubbo_registry_zookeeper.erl
@@ -33,7 +33,7 @@
     code_change/3]).
 
 -define(SERVER, ?MODULE).
-
+-define(CALL_TIMEOUT,20000).
 -record(state, {zk_pid, provider_notify_fun}).
 
 %%%===================================================================
@@ -89,11 +89,11 @@ init([]) ->
     {stop, Reason :: term(), Reply :: term(), NewState :: #state{}} |
     {stop, Reason :: term(), NewState :: #state{}}).
 handle_call({do_register, Url}, _From, State) ->
-    do_register(State#state.zk_pid, Url),
-    {reply, ok, State};
+    Result = do_register(State#state.zk_pid, Url),
+    {reply, Result, State};
 handle_call({do_unregister, Url}, _From, State) ->
-    do_unregister(State#state.zk_pid, Url),
-    {reply, ok, State};
+    Result = do_unregister(State#state.zk_pid, Url),
+    {reply, Result, State};
 handle_call({subscribe_provider, InterfaceName, NotifyFun}, _From, 
#state{zk_pid = ZkPid} = State) ->
     logger:debug("subscribe provider ~p notify fun ~p", [InterfaceName, 
NotifyFun]),
     NewState = State#state{provider_notify_fun = NotifyFun},
@@ -177,13 +177,33 @@ start(_Url) ->
     dubbo_registry_sup:start_child(?MODULE, {?MODULE, start_link, []}, 
?MODULE),
     ok.
 
+-spec(register(binary()) -> {ok, Result :: binary()} | {error, any()}).
 register(Url) ->
-    gen_server:call(?SERVER, {do_register, Url}, 10000),
-    ok.
+    try gen_server:call(?SERVER, {do_register, Url}, ?CALL_TIMEOUT) of
+        Result ->
+            Result
+    catch
+        exit:{timeout, _} ->
+            {error, timeout};
+        exit:{badrpc, _} ->
+            {error, badrpc};
+        _:Reason ->
+            {error, Reason}
+    end.
 
+-spec(unregister(binary()) -> {ok, Result :: binary()} | {error, any()}).
 unregister(Url) ->
-    gen_server:call(?SERVER, {do_unregister, Url}, 10000),
-    ok.
+    try gen_server:call(?SERVER, {do_unregister, Url}, ?CALL_TIMEOUT) of
+        Result ->
+            Result
+    catch
+        exit:{timeout, _} ->
+            {error, timeout};
+        exit:{badrpc, _} ->
+            {error, badrpc};
+        _:Reason ->
+            {error, Reason}
+    end.
 
 do_register(Pid, Url) ->
     case dubbo_common_fun:parse_url(Url) of
@@ -333,6 +353,6 @@ check_and_create_path(Pid, RootPath, [{Item, CreateType} | 
Rst]) ->
             create_path(Pid, CheckPath, CreateType),
             check_and_create_path(Pid, CheckPath, Rst);
         {error, R1} ->
-            logger:debug("check_and_create_path unexist ~p", [R1]),
+            logger:error("check_and_create_path error ~p", [R1]),
             check_and_create_path(Pid, CheckPath, Rst)
     end.
\ No newline at end of file

Reply via email to