diff --git a/include/dubboerl.hrl b/include/dubboerl.hrl
index 7c8b1af..deb3d5a 100644
--- a/include/dubboerl.hrl
+++ b/include/dubboerl.hrl
@@ -24,7 +24,7 @@
 
 -record(dubbo_url, {
     scheme :: binary() ,
-    user_info :: binary(),
+    user_info :: binary() | undefined,
     host:: binary(),
     port::integer(),
     path:: binary(),
diff --git a/samples/dubbo-sample-service/src/main/java/org/apache/dubbo/erlang/sample/service/AppListMain.java b/samples/dubbo-sample-service/src/main/java/org/apache/dubbo/erlang/sample/service/AppListMain.java
index 81ee14e..1a1f7c1 100644
--- a/samples/dubbo-sample-service/src/main/java/org/apache/dubbo/erlang/sample/service/AppListMain.java
+++ b/samples/dubbo-sample-service/src/main/java/org/apache/dubbo/erlang/sample/service/AppListMain.java
@@ -20,6 +20,8 @@
 import org.springframework.context.support.ClassPathXmlApplicationContext;
 
 import java.io.IOException;
+import java.lang.management.ManagementFactory;
+import java.lang.management.RuntimeMXBean;
 
 public class AppListMain {
 
@@ -28,6 +30,9 @@
         ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(
                 new String[] { "applicationProvider.xml" });
         context.start();
+        RuntimeMXBean runtimeMXBean = ManagementFactory.getRuntimeMXBean();
+        System.out.println(runtimeMXBean.getName());
+        System.out.println("current process pid "+ Integer.valueOf(runtimeMXBean.getName().split("@")[0]));
 
         System.out.println("按任意键退出");
         System.in.read();
diff --git a/samples/dubbo-sample-service/src/main/resources/applicationConsumer.xml b/samples/dubbo-sample-service/src/main/resources/applicationConsumer.xml
index 296bc83..d83a62c 100644
--- a/samples/dubbo-sample-service/src/main/resources/applicationConsumer.xml
+++ b/samples/dubbo-sample-service/src/main/resources/applicationConsumer.xml
@@ -21,7 +21,7 @@
        xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
        xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd">
     <dubbo:application name="hello-world"/><!-- 注册地址 -->
-    <dubbo:registry address="zookeeper://127.0.0.1:2181"/>
+    <dubbo:registry address="zookeeper://127.0.0.1:2181" check="false" />
     <dubbo:protocol name="dubbo" port="20880"/>
 
     <dubbo:reference  id="userInterface" interface="org.apache.dubbo.erlang.sample.service.facade.UserOperator" retries="0" />
diff --git a/src/dubbo_cluster_failfast.erl b/src/dubbo_cluster_failfast.erl
index 48809f8..e6f6e8b 100644
--- a/src/dubbo_cluster_failfast.erl
+++ b/src/dubbo_cluster_failfast.erl
@@ -19,7 +19,7 @@
 
 -include("dubbo.hrl").
 %% API
--export([invoke/2, do_response/2]).
+-export([invoke/2, on_response/2]).
 
 
 invoke(#dubbo_rpc_invocation{className = Interface, loadbalance = LoadBalance} = Invocation, Acc) ->
@@ -53,5 +53,5 @@
     Connection = LoadBalance:select(ConnectionList),
     Connection.
 
-do_response(Invocation, Result) ->
+on_response(Invocation, Result) ->
     {ok, Invocation, Result}.
diff --git a/src/dubbo_codec.erl b/src/dubbo_codec.erl
index c3e241f..9a6cdbe 100644
--- a/src/dubbo_codec.erl
+++ b/src/dubbo_codec.erl
@@ -46,8 +46,8 @@
                    false -> Header2
                end,
     Header22 = case Request#dubbo_request.is_event of
-                   true -> Header21 bor 32;
-                   false -> Header21
+                   false -> Header21;
+                   true -> Header21 bor 32
                end,
     RequestId = Request#dubbo_request.mid,
     Header = <<?DUBBO_MEGIC:16, Header22:8, RequestState:8, RequestId:64, DataLen:32>>,
@@ -82,8 +82,8 @@
                    false -> Header2
                end,
     Header22 = case Response#dubbo_response.is_event of
-                   true -> Header21 bor 32;
-                   false -> Header21
+                   false -> Header21;
+                   true -> Header21 bor 32
                end,
     RequestId = Response#dubbo_response.mid,
     Header = <<?DUBBO_MEGIC:16, Header22:8, ResponseState:8, RequestId:64, DataLen:32>>,
diff --git a/src/dubbo_common_fun.erl b/src/dubbo_common_fun.erl
index e0db828..fff65bb 100644
--- a/src/dubbo_common_fun.erl
+++ b/src/dubbo_common_fun.erl
@@ -94,13 +94,9 @@
     list_to_binary(Value).
 format_path(<< ?URL_PATH_SEPARATOR:8,Rest/binary>>) ->
     Rest;
-format_path([?URL_PATH_SEPARATOR|Rest]) ->
-    Rest;
 format_path(Value) ->
     Value.
 
-format_parameter(undefined) ->
-    "";
 format_parameter(Parameter) when is_map(Parameter) ->
     KeyValues = maps:to_list(Parameter),
     format_parameter(KeyValues);
diff --git a/src/dubbo_directory.erl b/src/dubbo_directory.erl
index cec107b..0bfe487 100644
--- a/src/dubbo_directory.erl
+++ b/src/dubbo_directory.erl
@@ -86,14 +86,14 @@
 
 refresh_invoker(UrlList) ->
     case pick_interface(UrlList) of
-        {error, Reason} ->
+        {error, _Reason} ->
             fail;
         {<<"empty">>, Interface,_} ->
             OldProviderHosts = dubbo_provider_consumer_reg_table:get_interface_provider_node(Interface),
             dubbo_provider_consumer_reg_table:clean_invalid_provider(OldProviderHosts),
             todo_destroy;
-        {Schame, Interface, LoadBalance} ->
-            ProtocolModule = binary_to_existing_atom(<<<<"dubbo_protocol_">>/binary, Schame/binary>>, latin1),
+        {Scheme, Interface, LoadBalance} ->
+            ProtocolModule = binary_to_existing_atom(<<<<"dubbo_protocol_">>/binary, Scheme/binary>>, latin1),
 
             logger:info("[DUBBO] refresh invoker for interface ~p loadbalance ~p protocol ~p", [Interface, LoadBalance, ProtocolModule]),
             OldProviderHosts = dubbo_provider_consumer_reg_table:get_interface_provider_node(Interface),
@@ -107,12 +107,8 @@
                     NewHostConnections = dubbo_provider_consumer_reg_table:query_node_connections(NewHosts),
                     dubbo_provider_consumer_reg_table:update_consumer_connections(Interface, NewHostConnections)
                 end, NewProviderHosts),
-
-
-%%            dubbo_provider_consumer_reg_table:update_connection_info(#interface_info{interface = Interface,loadbalance = LoadBalance})
             dubbo_provider_consumer_reg_table:update_interface_info(#interface_info{interface = Interface, loadbalance = LoadBalance, protocol = ProtocolModule})
     end.
-%%    OldProviderHosts =
 
 refresh_invoker([], Acc) ->
     Acc;
@@ -154,7 +150,7 @@
     {stop, Reason :: term(), Reply :: term(), NewState :: #state{}} |
     {stop, Reason :: term(), NewState :: #state{}}).
 handle_call({subscribe, RegistryName, SubcribeUrl}, _From, State) ->
-    NotifyFun = fun dubbo_directory:notify/1,
+    NotifyFun = fun dubbo_directory:notify/2,
     apply(RegistryName, subscribe, [SubcribeUrl, NotifyFun]),
     {reply, ok, State};
 handle_call(_Request, _From, State) ->
diff --git a/src/dubbo_extension.erl b/src/dubbo_extension.erl
index e6f4394..4a92338 100644
--- a/src/dubbo_extension.erl
+++ b/src/dubbo_extension.erl
@@ -3,7 +3,7 @@
 %% contributor license agreements.  See the NOTICE file distributed with
 %% this work for additional information regarding copyright ownership.
 %% The ASF licenses this file to You under the Apache License, Version 2.0
-%% (the "License"); you may not use this file except in compliance with
+%% (the "License"); you may not use this file e34rg 56yujxcept in compliance with
 %% the License.  You may obtain a copy of the License at
 %%
 %%     http://www.apache.org/licenses/LICENSE-2.0
@@ -121,15 +121,6 @@
             do_invoke(Rest, HookName, Fun, [Args2], NewAcc2)
     end.
 
-
-%% @doc retrieve the lists of registered functions for an hook.
--spec find(HookName :: atom()) -> {ok, [{atom(), atom()}]} | error.
-find(HookName) ->
-    case find_hooks(HookName) of
-        no_hook -> error;
-        Hooks -> {ok, Hooks}
-    end.
-
 %% @hidden
 start_link() ->
     _ = init_tabs(),
diff --git a/src/dubbo_invoker.erl b/src/dubbo_invoker.erl
index 9981f2d..e9bbc4d 100644
--- a/src/dubbo_invoker.erl
+++ b/src/dubbo_invoker.erl
@@ -84,7 +84,7 @@
     end.
 
 invoke_response(Invocation, Result) ->
-    Result2 = dubbo_extension:invoke_foldr(filter, do_response, [Invocation], Result),
+    Result2 = dubbo_extension:invoke_foldr(filter, on_response, [Invocation], Result),
     gen_server:cast(Invocation#dubbo_rpc_invocation.source_pid, {response_process, Invocation#dubbo_rpc_invocation.call_ref, Invocation#dubbo_rpc_invocation.attachments, Result2}),
     ok.
 
diff --git a/src/dubbo_node_config_util.erl b/src/dubbo_node_config_util.erl
index 59fef4b..b2e82c1 100644
--- a/src/dubbo_node_config_util.erl
+++ b/src/dubbo_node_config_util.erl
@@ -46,8 +46,6 @@
     Config#provider_config{methods = MethodList};
 parse_parameter(<<"side">>, Value, Config) ->
     Config#provider_config{side = Value};
-parse_parameter(<<"interface">>, Value, Config) ->
-    Config#provider_config{interface = Value};
 parse_parameter(_, _, Config) ->
     Config.
 
diff --git a/src/dubbo_protocol_dubbo.erl b/src/dubbo_protocol_dubbo.erl
index ae76035..21470a5 100644
--- a/src/dubbo_protocol_dubbo.erl
+++ b/src/dubbo_protocol_dubbo.erl
@@ -37,7 +37,6 @@
 do_refer(UrlInfo) ->
     case dubbo_node_config_util:parse_provider_info(UrlInfo) of
         {ok, ProviderConfig} ->
-%%            OldHostList = dubbo_provider_consumer_reg_table:get_interface_provider_node(ProviderConfig#provider_config.interface),
             case getClients(ProviderConfig) of
                 {ok, ConnectionInfoList} ->
                     dubbo_provider_consumer_reg_table:update_node_conections(ProviderConfig#provider_config.interface, ConnectionInfoList),
diff --git a/src/dubbo_service_config.erl b/src/dubbo_service_config.erl
index d59f38d..3fb2a89 100644
--- a/src/dubbo_service_config.erl
+++ b/src/dubbo_service_config.erl
@@ -63,15 +63,6 @@
     Para.
 
 get_export_info(ProviderInfo) ->
-    %%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=90956&register=true&release=2.7.1&side=provider&timestamp=1562725983984
     Para = [
         {"anyhost", "true"},
         {"application", ProviderInfo#provider_config.application},
diff --git a/src/dubbo_time_util.erl b/src/dubbo_time_util.erl
index ea013cb..1e54c3d 100644
--- a/src/dubbo_time_util.erl
+++ b/src/dubbo_time_util.erl
@@ -34,7 +34,7 @@
     io_lib:format("~4..0w-~2..0w-~2..0w ~2..0w:~2..0w:~2..0w", [Year, Month, Day, Hour, Min, Second]).
 
 get_cur_date() ->
-    {{Year, Month, Day}, {Hour, Min, Second}} = calendar:now_to_local_time(os:timestamp()),
+    {{Year, Month, Day}, {_Hour, _Min, _Second}} = calendar:now_to_local_time(os:timestamp()),
     io_lib:format("~4..0w-~2..0w-~2..0w", [Year, Month, Day]).
 
 get_cur_time({{Year, Month, Day}, {Hour, Min, Second}}) ->
diff --git a/src/dubboerl_app.erl b/src/dubboerl_app.erl
index d27b690..225da69 100644
--- a/src/dubboerl_app.erl
+++ b/src/dubboerl_app.erl
@@ -47,14 +47,25 @@
     dubbo_extension:register(protocol, dubbo_protocol_dubbo, 10),
     dubbo_extension:register(protocol_wapper, dubbo_protocol_registry, 10),
     dubbo_extension:register(filter, application:get_env(dubboerl, cluster, dubbo_cluster_failfast), 1),
+    init_filter_hooks(),
     ok.
+
+init_filter_hooks() ->
+    FilterList = application:get_env(dubboerl, filter, []),
+    lists:mapfoldl(
+        fun(Filter,Acc) ->
+            dubbo_extension:register(filter, Filter, Acc),
+            Acc +1
+        end,100,FilterList
+    ),
+    ok.
+
 env_init() ->
     ets:new(?PROVIDER_IMPL_TABLE, [public, named_table]),
     ets:new(?SERVICE_EXPORT_TABLE, [public, named_table]),
     dubbo_traffic_control:init(),
     dubbo_type_register:init(),
     register_type_list().
-%%    type_decoding:init().
 
 
 register_type_list() ->
diff --git a/test/dubbo_common_fun_tests.erl b/test/dubbo_common_fun_tests.erl
index 9e74ab4..ce38852 100644
--- a/test/dubbo_common_fun_tests.erl
+++ b/test/dubbo_common_fun_tests.erl
@@ -35,4 +35,9 @@
 
 list_dup_test() ->
     R = dubbo_lists_util:del_duplicate([a, b, a]),
-    ?assertEqual(length(R), 2).
\ No newline at end of file
+    ?assertEqual(length(R), 2).
+
+
+ip_v4_test()->
+    Result = dubbo_network_tools:local_ipv4(),
+    ?assertEqual(true,is_list(Result)).
\ No newline at end of file
diff --git a/test/dubbo_extension_tests.erl b/test/dubbo_extension_tests.erl
new file mode 100644
index 0000000..04d5726
--- /dev/null
+++ b/test/dubbo_extension_tests.erl
@@ -0,0 +1,35 @@
+%%------------------------------------------------------------------------------
+%% Licensed to the Apache Software Foundation (ASF) under one or more
+%% contributor license agreements.  See the NOTICE file distributed with
+%% this work for additional information regarding copyright ownership.
+%% The ASF licenses this file to You under the Apache License, Version 2.0
+%% (the "License"); you may not use this file except in compliance with
+%% the License.  You may obtain a copy of the License at
+%%
+%%     http://www.apache.org/licenses/LICENSE-2.0
+%%
+%% Unless required by applicable law or agreed to in writing, software
+%% distributed under the License is distributed on an "AS IS" BASIS,
+%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+%% See the License for the specific language governing permissions and
+%% limitations under the License.
+%%------------------------------------------------------------------------------
+-module(dubbo_extension_tests).
+
+
+-include_lib("eunit/include/eunit.hrl").
+-include("dubbo.hrl").
+
+invoker_test()->
+    {ok,_Pid} = dubbo_extension:start_link(),
+
+    ok = dubbo_extension:register(filter, dubbo_filter_test1, 100),
+    Invocation = #dubbo_rpc_invocation{},
+    Ref = make_ref(),
+    {ok,Ref} = dubbo_extension:invoke(filter, invoke, [Invocation], {ok, Ref}, []),
+    ok.
+
+%%on_response_test() ->
+
+
+
diff --git a/test/dubbo_filter_test1.erl b/test/dubbo_filter_test1.erl
new file mode 100644
index 0000000..d333bf6
--- /dev/null
+++ b/test/dubbo_filter_test1.erl
@@ -0,0 +1,29 @@
+%%------------------------------------------------------------------------------
+%% Licensed to the Apache Software Foundation (ASF) under one or more
+%% contributor license agreements.  See the NOTICE file distributed with
+%% this work for additional information regarding copyright ownership.
+%% The ASF licenses this file to You under the Apache License, Version 2.0
+%% (the "License"); you may not use this file except in compliance with
+%% the License.  You may obtain a copy of the License at
+%%
+%%     http://www.apache.org/licenses/LICENSE-2.0
+%%
+%% Unless required by applicable law or agreed to in writing, software
+%% distributed under the License is distributed on an "AS IS" BASIS,
+%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+%% See the License for the specific language governing permissions and
+%% limitations under the License.
+%%------------------------------------------------------------------------------
+-module(dubbo_filter_test1).
+-behaviour(dubbo_filter).
+
+%% API
+-export([invoke/2, on_response/2]).
+
+invoke(Invocation, Acc) ->
+    io:format(user,"test filter invoke sucess~n",[]),
+    {ok, Invocation, Acc}.
+
+on_response(Invocation, Result) ->
+    io:format(user,"test filter on_response sucess~n",[]),
+    {ok, Invocation, Result}.
\ No newline at end of file
