diff --git a/README.md b/README.md index e52bb6333dcf0c0e531cbb2c10ff8a2747599550..9af43d8d7e1cdddee1c241e148e0cf3038f2484a 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # Apache Dubbo-go [涓枃](./README_CN.md) # -[](https://travis-ci.com/apache/dubbo-go) +[](https://travis-ci.org/apache/dubbo-go) [](https://codecov.io/gh/apache/dubbo-go) --- diff --git a/README_CN.md b/README_CN.md index c05bbb4020c5e536f33252c8a6e37253079ae23c..0993828a71e39b49edbccb40a8a9ec68d725889e 100644 --- a/README_CN.md +++ b/README_CN.md @@ -1,6 +1,6 @@ # Apache Dubbo-go [English](./README.md) # -[](https://travis-ci.com/apache/dubbo-go) +[](https://travis-ci.org/apache/dubbo-go) [](https://codecov.io/gh/apache/dubbo-go) --- diff --git a/config/reference_config.go b/config/reference_config.go index 229954563cb916ffec004e87e80090d728185a9b..e0c93b3e54248e886982dbf49e13a42a063eee77 100644 --- a/config/reference_config.go +++ b/config/reference_config.go @@ -92,7 +92,7 @@ func (refconfig *ReferenceConfig) Refer() { refconfig.urls = append(refconfig.urls, &serviceUrl) } else { if serviceUrl.Path == "" { - serviceUrl.Path = refconfig.InterfaceName + "/" + serviceUrl.Path = "/" + refconfig.InterfaceName } // merge url need to do newUrl := common.MergeUrl(serviceUrl, url) diff --git a/examples/dubbo/go-client/app/client.go b/examples/dubbo/go-client/app/client.go index e65d93c59754975854f3e456e12c38562b4ab3bb..6167fbc8e7b0743f807775d1c414110159d01449 100644 --- a/examples/dubbo/go-client/app/client.go +++ b/examples/dubbo/go-client/app/client.go @@ -27,11 +27,11 @@ import ( ) import ( - "github.com/apache/dubbo-go/common/logger" - hessian "github.com/dubbogo/hessian2" + "github.com/dubbogo/hessian2" ) import ( + "github.com/apache/dubbo-go/common/logger" _ "github.com/apache/dubbo-go/common/proxy/proxy_factory" "github.com/apache/dubbo-go/config" _ "github.com/apache/dubbo-go/protocol/dubbo" @@ -102,6 +102,13 @@ func main() { println("response result: %v", user) } + println("\n\n\nstart to test dubbo - getErr") + user = &User{} + err = conMap["com.ikurento.user.UserProvider"].GetRPCService().(*UserProvider).GetErr(context.TODO(), []interface{}{"A003"}, user) + if err != nil { + println("getErr - error: %v", err) + } + println("\n\n\nstart to test dubbo illegal method") err = conMap["com.ikurento.user.UserProvider"].GetRPCService().(*UserProvider).GetUser1(context.TODO(), []interface{}{"A003"}, user) if err != nil { diff --git a/examples/dubbo/go-client/app/user.go b/examples/dubbo/go-client/app/user.go index 81a7adb2af0a8afac4aec8c164db35f0b4d77b82..ee56e23ba33e3875f58d17024747fb212cd5e1ad 100644 --- a/examples/dubbo/go-client/app/user.go +++ b/examples/dubbo/go-client/app/user.go @@ -94,6 +94,7 @@ func (User) JavaClassName() string { type UserProvider struct { GetUsers func(req []interface{}) ([]interface{}, error) + GetErr func(ctx context.Context, req []interface{}, rsp *User) error GetUser func(ctx context.Context, req []interface{}, rsp *User) error GetUser0 func(id string, name string) (User, error) GetUser1 func(ctx context.Context, req []interface{}, rsp *User) error diff --git a/examples/dubbo/go-server/app/user.go b/examples/dubbo/go-server/app/user.go index 9ba663104240d5ee5ead9fcda841b9beab335a49..c55b040eed5580ee842c20fb7ef5186b940aab82 100644 --- a/examples/dubbo/go-server/app/user.go +++ b/examples/dubbo/go-server/app/user.go @@ -145,6 +145,10 @@ func (u *UserProvider) GetUser(ctx context.Context, req []interface{}, rsp *User return err } +func (u *UserProvider) GetErr(ctx context.Context, req []interface{}, rsp *User) error { + return perrors.New("exception") +} + func (u *UserProvider) GetUser0(id string, name string) (User, error) { var err error diff --git a/examples/dubbo/go-server/profiles/dev/server.yml b/examples/dubbo/go-server/profiles/dev/server.yml index 06f3c9f885a917b71baea178d172f8782e174218..619f2ddca6a0164e222f4a08669beb79dc077914 100644 --- a/examples/dubbo/go-server/profiles/dev/server.yml +++ b/examples/dubbo/go-server/profiles/dev/server.yml @@ -42,7 +42,7 @@ services: protocols: - name: "dubbo" - ip : "127.0.0.1" + # ip : "127.0.0.1" port : 20000 #- name: "jsonrpc" # ip: "127.0.0.1" diff --git a/examples/dubbo/go-server/profiles/release/server.yml b/examples/dubbo/go-server/profiles/release/server.yml index 64587aa1adb9afac3b32c0e74779566ba88cbc7c..c4d98eb746d7c5418dce6d0dca2fe89da137d680 100644 --- a/examples/dubbo/go-server/profiles/release/server.yml +++ b/examples/dubbo/go-server/profiles/release/server.yml @@ -42,7 +42,7 @@ services: protocols: - name: "dubbo" - ip : "127.0.0.1" + # ip : "127.0.0.1" port : 20000 #- name: "jsonrpc" # ip: "127.0.0.1" diff --git a/examples/dubbo/go-server/profiles/test/server.yml b/examples/dubbo/go-server/profiles/test/server.yml index 64587aa1adb9afac3b32c0e74779566ba88cbc7c..c4d98eb746d7c5418dce6d0dca2fe89da137d680 100644 --- a/examples/dubbo/go-server/profiles/test/server.yml +++ b/examples/dubbo/go-server/profiles/test/server.yml @@ -42,7 +42,7 @@ services: protocols: - name: "dubbo" - ip : "127.0.0.1" + # ip : "127.0.0.1" port : 20000 #- name: "jsonrpc" # ip: "127.0.0.1" diff --git a/examples/dubbo/java-client/src/main/java/com/ikurento/user/Consumer.java b/examples/dubbo/java-client/src/main/java/com/ikurento/user/Consumer.java index b410813c74a7432cbbe1f2e7627faba9ebb17e70..0e4a9267715b27ebc6f1bd5174d579461072f276 100644 --- a/examples/dubbo/java-client/src/main/java/com/ikurento/user/Consumer.java +++ b/examples/dubbo/java-client/src/main/java/com/ikurento/user/Consumer.java @@ -51,7 +51,16 @@ public class Consumer { System.out.println("[" + new SimpleDateFormat("HH:mm:ss").format(new Date()) + "] " + " UserInfo, Id:" + user2.getId() + ", name:" + user2.getName() + ", sex:" + user2.getSex().toString() + ", age:" + user2.getAge() + ", time:" + user2.getTime().toString()); + + User user9 = userProvider.GetUser1("A003"); + } catch (Exception e) { + System.out.println("*************exception***********"); + e.printStackTrace(); + } + try { + userProvider.GetErr("A003"); } catch (Exception e) { + System.out.println("*************exception***********"); e.printStackTrace(); } } diff --git a/examples/dubbo/java-client/src/main/java/com/ikurento/user/UserProvider.java b/examples/dubbo/java-client/src/main/java/com/ikurento/user/UserProvider.java index d5bce8105673a24d78ddd3a636788d1ccf8e57a6..036f46332105710ffcc53465b487ada860c25172 100644 --- a/examples/dubbo/java-client/src/main/java/com/ikurento/user/UserProvider.java +++ b/examples/dubbo/java-client/src/main/java/com/ikurento/user/UserProvider.java @@ -20,6 +20,8 @@ import java.util.List; public interface UserProvider { User GetUser(String userId); + User GetErr(String userId) throws Exception; + User GetUser1(String userId); List<User> GetUsers(List<String> userIdList); User GetUser0(String userId, String name); diff --git a/examples/dubbo/java-server/src/main/java/com/ikurento/user/UserProvider.java b/examples/dubbo/java-server/src/main/java/com/ikurento/user/UserProvider.java index b75740bbcd26a6438d22f7d3bf08fa5e316f7aa7..bb1d9a9d42444b1782d919c6a62ac2fc60e509b1 100644 --- a/examples/dubbo/java-server/src/main/java/com/ikurento/user/UserProvider.java +++ b/examples/dubbo/java-server/src/main/java/com/ikurento/user/UserProvider.java @@ -14,6 +14,8 @@ public interface UserProvider { User GetUser0(String userId, String name); + User GetErr(String userId) throws Exception; + Map<String, User> GetUserMap(List<String> userIdList); User getUser(int usercode); diff --git a/examples/dubbo/java-server/src/main/java/com/ikurento/user/UserProviderAnotherImpl.java b/examples/dubbo/java-server/src/main/java/com/ikurento/user/UserProviderAnotherImpl.java index f0d7faf3df40c3d422407ddf4d2f2c501e1efdf7..9eaf989a8204be5a7b0065b23dfec88eff837854 100644 --- a/examples/dubbo/java-server/src/main/java/com/ikurento/user/UserProviderAnotherImpl.java +++ b/examples/dubbo/java-server/src/main/java/com/ikurento/user/UserProviderAnotherImpl.java @@ -35,7 +35,9 @@ public class UserProviderAnotherImpl implements UserProvider { public User GetUser0(String userId, String name) { return new User(userId, name, 48); } - + public User GetErr(String userId) throws Exception { + throw new Exception("exception"); + } public List<User> GetUsers(ArrayList<String> userIdList) { Iterator it = userIdList.iterator(); List<User> userList = new ArrayList<User>(); diff --git a/examples/dubbo/java-server/src/main/java/com/ikurento/user/UserProviderImpl.java b/examples/dubbo/java-server/src/main/java/com/ikurento/user/UserProviderImpl.java index 1311bd807d59d8336f4ada1296d3a05abd31a548..f8875651096ef719182eb0eeffb779de16425702 100644 --- a/examples/dubbo/java-server/src/main/java/com/ikurento/user/UserProviderImpl.java +++ b/examples/dubbo/java-server/src/main/java/com/ikurento/user/UserProviderImpl.java @@ -32,6 +32,9 @@ public class UserProviderImpl implements UserProvider { public User GetUser(String userId) { return new User(userId, "zhangsan", 18); } + public User GetErr(String userId) throws Exception { + throw new Exception("exception"); + } public User GetUser0(String userId, String name) { return new User(userId, name, 18); } diff --git a/examples/jsonrpc/go-client/app/client.go b/examples/jsonrpc/go-client/app/client.go index dcefd9762425afca996c5caf8217e5b921ac74fa..30a4ed1692d650a2580c008dde6f834e2c29b81e 100644 --- a/examples/jsonrpc/go-client/app/client.go +++ b/examples/jsonrpc/go-client/app/client.go @@ -28,9 +28,6 @@ import ( import ( "github.com/apache/dubbo-go/common/logger" -) - -import ( _ "github.com/apache/dubbo-go/common/proxy/proxy_factory" "github.com/apache/dubbo-go/config" _ "github.com/apache/dubbo-go/protocol/jsonrpc" diff --git a/filter/impl/echo_filter.go b/filter/impl/echo_filter.go index d2a00108bf2c842057af23dab4d4f09fbb2b0ed7..5eb5a37fa500bd8c180d879240d1c1e367df31ce 100644 --- a/filter/impl/echo_filter.go +++ b/filter/impl/echo_filter.go @@ -17,13 +17,10 @@ package impl -import ( - "github.com/apache/dubbo-go/common/logger" -) - import ( "github.com/apache/dubbo-go/common/constant" "github.com/apache/dubbo-go/common/extension" + "github.com/apache/dubbo-go/common/logger" "github.com/apache/dubbo-go/filter" "github.com/apache/dubbo-go/protocol" ) diff --git a/go.mod b/go.mod index f13826387f3c537a1b0e4ea05cb9e9c2231a893d..66757f22f3d92c7c6c4ef8287756f7a1cd959ed0 100644 --- a/go.mod +++ b/go.mod @@ -2,7 +2,7 @@ module github.com/apache/dubbo-go require ( github.com/dubbogo/getty v0.0.0-20190523180329-bdf5e640ea53 - github.com/dubbogo/hessian2 v0.0.0-20190526221400-d5610bbd0a41 + github.com/dubbogo/hessian2 v0.0.0-20190604191323-5290af08fb56 github.com/pkg/errors v0.8.1 github.com/samuel/go-zookeeper v0.0.0-20180130194729-c4fab1ac1bec github.com/stretchr/testify v1.3.0 diff --git a/go.sum b/go.sum index 3da2865342a319a4351757706f31a313afe850ed..db094a9133b7aa65f0eaeb9274499fbc3141b081 100644 --- a/go.sum +++ b/go.sum @@ -6,8 +6,8 @@ github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSs github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/dubbogo/getty v0.0.0-20190523180329-bdf5e640ea53 h1:bniSNoC4xnAbrx4estwc9F0qkWnh6ZDsAS0y9d7mPos= github.com/dubbogo/getty v0.0.0-20190523180329-bdf5e640ea53/go.mod h1:cRMSuoCmwc5lULFFnYZTxyCfZhObmRTNbS7XRnPNHSo= -github.com/dubbogo/hessian2 v0.0.0-20190526221400-d5610bbd0a41 h1:lNtW7+aN8oBdCoEuny0rOqOkL5duI4Cu3+G8vqibX48= -github.com/dubbogo/hessian2 v0.0.0-20190526221400-d5610bbd0a41/go.mod h1:XFGDn4oSZX26zkcfhkM/fCJrOqwQJxk/xgWW1KMJBKM= +github.com/dubbogo/hessian2 v0.0.0-20190604191323-5290af08fb56 h1:5ZhIvx1pqtpRSfUzcc6jkF9pFsx/DcwymDuuaM3jFuw= +github.com/dubbogo/hessian2 v0.0.0-20190604191323-5290af08fb56/go.mod h1:XFGDn4oSZX26zkcfhkM/fCJrOqwQJxk/xgWW1KMJBKM= github.com/golang/snappy v0.0.1 h1:Qgr9rKW7uDUkrbSmQeiDsGa8SjGyCOGtuasMWwvp2P4= github.com/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/gorilla/websocket v1.4.0 h1:WDFjx/TMzVgy9VdMMQi2K2Emtwi2QcUQsztZ/zLaH/Q= diff --git a/protocol/dubbo/client_test.go b/protocol/dubbo/client_test.go index 1183bd00d212f0c49ed8ec70fabaa34e6e24701c..0a02739a86d9ed6bffc0b209152ac789faee87f3 100644 --- a/protocol/dubbo/client_test.go +++ b/protocol/dubbo/client_test.go @@ -22,13 +22,17 @@ import ( "sync" "testing" "time" +) - hessian "github.com/dubbogo/hessian2" +import ( + "github.com/dubbogo/hessian2" + perrors "github.com/pkg/errors" + "github.com/stretchr/testify/assert" +) +import ( "github.com/apache/dubbo-go/common" "github.com/apache/dubbo-go/protocol" - perrors "github.com/pkg/errors" - "github.com/stretchr/testify/assert" ) type ( @@ -80,7 +84,7 @@ func TestClient_Call(t *testing.T) { user = &User{} err = c.Call("127.0.0.1:20000", url, "GetUser1", []interface{}{"1", "username"}, user) - assert.EqualError(t, err, "java exception:error") + assert.EqualError(t, err, "got exception: error") user2 := []interface{}{} err = c.Call("127.0.0.1:20000", url, "GetUser2", []interface{}{"1", "username"}, &user2) diff --git a/protocol/dubbo/listener.go b/protocol/dubbo/listener.go index 59ffd3e1e554e2be9a9dfef25f31d1e06211d938..84be5818825f1abf1d92c21473733a5e4d6137fb 100644 --- a/protocol/dubbo/listener.go +++ b/protocol/dubbo/listener.go @@ -211,7 +211,7 @@ func (h *RpcServerHandler) OnMessage(session getty.Session, pkg interface{}) { constant.VERSION_KEY: p.Service.Version, })) if err := result.Error(); err != nil { - p.Header.ResponseStatus = hessian.Response_SERVER_ERROR + p.Header.ResponseStatus = hessian.Response_OK p.Body = err h.reply(session, p, hessian.PackageResponse) return @@ -260,15 +260,15 @@ func (h *RpcServerHandler) callService(req *DubboPackage, ctx context.Context) { defer func() { if e := recover(); e != nil { - req.Header.ResponseStatus = hessian.Response_BAD_REQUEST + req.Header.ResponseStatus = hessian.Response_SERVER_ERROR if err, ok := e.(error); ok { logger.Errorf("callService panic: %#v", err) - req.Body = e.(error) + req.Body = perrors.WithStack(err) } else if err, ok := e.(string); ok { logger.Errorf("callService panic: %#v", perrors.New(err)) req.Body = perrors.New(err) } else { - logger.Errorf("callService panic: %#v", e) + logger.Errorf("callService panic: %#v, this is impossible.", e) req.Body = e } } @@ -277,7 +277,7 @@ func (h *RpcServerHandler) callService(req *DubboPackage, ctx context.Context) { svcIf := req.Body.(map[string]interface{})["service"] if svcIf == nil { logger.Errorf("service not found!") - req.Header.ResponseStatus = hessian.Response_SERVICE_NOT_FOUND + req.Header.ResponseStatus = hessian.Response_BAD_REQUEST req.Body = perrors.New("service not found") return } @@ -285,7 +285,7 @@ func (h *RpcServerHandler) callService(req *DubboPackage, ctx context.Context) { method := svc.Method()[req.Service.Method] if method == nil { logger.Errorf("method not found!") - req.Header.ResponseStatus = hessian.Response_SERVICE_NOT_FOUND + req.Header.ResponseStatus = hessian.Response_BAD_REQUEST req.Body = perrors.New("method not found") return } @@ -322,8 +322,8 @@ func (h *RpcServerHandler) callService(req *DubboPackage, ctx context.Context) { retErr = returnValues[1].Interface() } if retErr != nil { - req.Header.ResponseStatus = hessian.Response_SERVER_ERROR - req.Body = retErr.(error) + req.Header.ResponseStatus = hessian.Response_OK + req.Body = perrors.WithStack(retErr.(error)) } else { req.Body = replyv.Interface() } diff --git a/registry/directory/directory.go b/registry/directory/directory.go index 1003baf5df7bb659200bb12e118e9113577051af..32841be5f68b07b1f87d2080834de83debb53893 100644 --- a/registry/directory/directory.go +++ b/registry/directory/directory.go @@ -23,7 +23,6 @@ import ( ) import ( - "github.com/apache/dubbo-go/common/logger" perrors "github.com/pkg/errors" ) @@ -32,6 +31,7 @@ import ( "github.com/apache/dubbo-go/common" "github.com/apache/dubbo-go/common/constant" "github.com/apache/dubbo-go/common/extension" + "github.com/apache/dubbo-go/common/logger" "github.com/apache/dubbo-go/protocol" "github.com/apache/dubbo-go/protocol/protocolwrapper" "github.com/apache/dubbo-go/registry" diff --git a/registry/protocol/protocol.go b/registry/protocol/protocol.go index e318bd097cc0122f3e0ecf4db222da0edef64c46..ff33b5fe6e063257c12035f3262e0daae874363e 100644 --- a/registry/protocol/protocol.go +++ b/registry/protocol/protocol.go @@ -21,14 +21,11 @@ import ( "sync" ) -import ( - "github.com/apache/dubbo-go/common/logger" -) - import ( "github.com/apache/dubbo-go/common" "github.com/apache/dubbo-go/common/constant" "github.com/apache/dubbo-go/common/extension" + "github.com/apache/dubbo-go/common/logger" "github.com/apache/dubbo-go/protocol" "github.com/apache/dubbo-go/protocol/protocolwrapper" "github.com/apache/dubbo-go/registry" diff --git a/registry/zookeeper/listener.go b/registry/zookeeper/listener.go index d2cebde2ad7eabd9554069a969a390f193552d6c..711b876ef2bb2339423a56423155441ae54657f3 100644 --- a/registry/zookeeper/listener.go +++ b/registry/zookeeper/listener.go @@ -26,13 +26,13 @@ import ( ) import ( - "github.com/apache/dubbo-go/common/logger" perrors "github.com/pkg/errors" "github.com/samuel/go-zookeeper/zk" ) import ( "github.com/apache/dubbo-go/common" + "github.com/apache/dubbo-go/common/logger" "github.com/apache/dubbo-go/registry" )