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()
 	})
 }