diff --git a/cluster/directory/static_directory.go b/cluster/directory/static_directory.go index 28683b60baa8e628198332dc584b4c11297776d9..0d23a569495e276d9a9864c48529fe996bf1fedf 100644 --- a/cluster/directory/static_directory.go +++ b/cluster/directory/static_directory.go @@ -63,11 +63,12 @@ func (dir *staticDirectory) List(invocation protocol.Invocation) []protocol.Invo localRouters := dir.routers logger.Debug("========", len(localRouters)) - if len(localRouters) > 0 { - for _, router := range localRouters { - if reflect.ValueOf(router.Url()).IsNil() || router.Url().GetParamBool(constant.RUNTIME_KEY, false) { - invokers = router.Route(invokers, *dir.ConsumerUrl, invocation) - } + if len(localRouters) == 0 { + return invokers + } + for _, router := range localRouters { + if reflect.ValueOf(router.Url()).IsNil() || router.Url().GetParamBool(constant.RUNTIME_KEY, false) { + return router.Route(invokers, *dir.ConsumerUrl, invocation) } } return invokers diff --git a/cluster/router_chain.go b/cluster/router_chain.go index 61799a803055a471c93a891852eb70bb1fa9f734..bd3cf5f453da64e04ba128c95667361d925c94fc 100644 --- a/cluster/router_chain.go +++ b/cluster/router_chain.go @@ -35,7 +35,7 @@ func NewRouterChain(url common.URL) *RouterChain { func (r RouterChain) AddRouters(routers []Router) { r.routers = append(r.routers, routers...) - sort.Slice(r.routers, func(i, j int) bool { + sort.SliceStable(r.routers, func(i, j int) bool { return routers[i].Priority() < routers[j].Priority() }) }