Skip to content

Commit

Permalink
Merge pull request #283 from xujianhai666/feat-urlencoder
Browse files Browse the repository at this point in the history
feat(registry/zk):url encode zkpath
  • Loading branch information
hxmhlt committed Dec 19, 2019
2 parents 9c83f5e + c0839f0 commit 5a50da7
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 6 deletions.
16 changes: 10 additions & 6 deletions registry/zookeeper/registry.go
Original file line number Diff line number Diff line change
Expand Up @@ -261,6 +261,10 @@ func (r *zkRegistry) Register(conf common.URL) error {
return nil
}

func (r *zkRegistry) service(c common.URL) string {
return url.QueryEscape(c.Service())
}

func (r *zkRegistry) register(c common.URL) error {
var (
err error
Expand Down Expand Up @@ -296,7 +300,7 @@ func (r *zkRegistry) register(c common.URL) error {
return perrors.Errorf("conf{Path:%s, Methods:%s}", c.Path, c.Methods)
}
// 先创建服务下面的provider node
dubboPath = fmt.Sprintf("/dubbo/%s/%s", c.Service(), common.DubboNodes[common.PROVIDER])
dubboPath = fmt.Sprintf("/dubbo/%s/%s", r.service(c), common.DubboNodes[common.PROVIDER])
r.cltLock.Lock()
err = r.client.Create(dubboPath)
r.cltLock.Unlock()
Expand Down Expand Up @@ -330,19 +334,19 @@ func (r *zkRegistry) register(c common.URL) error {
encodedURL = url.QueryEscape(rawURL)

// Print your own registration service providers.
dubboPath = fmt.Sprintf("/dubbo/%s/%s", c.Service(), (common.RoleType(common.PROVIDER)).String())
dubboPath = fmt.Sprintf("/dubbo/%s/%s", r.service(c), (common.RoleType(common.PROVIDER)).String())
logger.Debugf("provider path:%s, url:%s", dubboPath, rawURL)

case common.CONSUMER:
dubboPath = fmt.Sprintf("/dubbo/%s/%s", c.Service(), common.DubboNodes[common.CONSUMER])
dubboPath = fmt.Sprintf("/dubbo/%s/%s", r.service(c), common.DubboNodes[common.CONSUMER])
r.cltLock.Lock()
err = r.client.Create(dubboPath)
r.cltLock.Unlock()
if err != nil {
logger.Errorf("zkClient.create(path{%s}) = error{%v}", dubboPath, perrors.WithStack(err))
return perrors.WithStack(err)
}
dubboPath = fmt.Sprintf("/dubbo/%s/%s", c.Service(), common.DubboNodes[common.PROVIDER])
dubboPath = fmt.Sprintf("/dubbo/%s/%s", r.service(c), common.DubboNodes[common.PROVIDER])
r.cltLock.Lock()
err = r.client.Create(dubboPath)
r.cltLock.Unlock()
Expand All @@ -359,7 +363,7 @@ func (r *zkRegistry) register(c common.URL) error {
rawURL = fmt.Sprintf("consumer://%s%s?%s", localIP, c.Path, params.Encode())
encodedURL = url.QueryEscape(rawURL)

dubboPath = fmt.Sprintf("/dubbo/%s/%s", c.Service(), (common.RoleType(common.CONSUMER)).String())
dubboPath = fmt.Sprintf("/dubbo/%s/%s", r.service(c), (common.RoleType(common.CONSUMER)).String())
logger.Debugf("consumer path:%s, url:%s", dubboPath, rawURL)

default:
Expand Down Expand Up @@ -479,7 +483,7 @@ func (r *zkRegistry) getListener(conf *common.URL) (*RegistryConfigurationListen
//Interested register to dataconfig.
r.dataListener.AddInterestedURL(conf)
for _, v := range strings.Split(conf.GetParam(constant.CATEGORY_KEY, constant.DEFAULT_CATEGORY), ",") {
go r.listener.ListenServiceEvent(fmt.Sprintf("/dubbo/%s/"+v, conf.Service()), r.dataListener)
go r.listener.ListenServiceEvent(fmt.Sprintf("/dubbo/%s/"+v, url.QueryEscape(conf.Service())), r.dataListener)
}

return zkListener, nil
Expand Down
7 changes: 7 additions & 0 deletions remoting/zookeeper/listener_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
package zookeeper

import (
"net/url"
"sync"
"testing"
"time"
Expand Down Expand Up @@ -122,3 +123,9 @@ func (m *mockDataListener) DataChange(eventType remoting.Event) bool {
}
return true
}

func TestZkPath(t *testing.T) {
zkPath := "io.grpc.examples.helloworld.GreeterGrpc$IGreeter"
zkPath = url.QueryEscape(zkPath)
assert.Equal(t, zkPath, "io.grpc.examples.helloworld.GreeterGrpc%24IGreeter")
}

0 comments on commit 5a50da7

Please sign in to comment.