You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@dubbo.apache.org by xu...@apache.org on 2026/06/17 05:41:16 UTC

(dubbo-go) branch develop updated: fix(loadbalance): prevent panic in consistent hash toKey for non-string args (#3430)

This is an automated email from the ASF dual-hosted git repository.

Alanxtl pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/dubbo-go.git


The following commit(s) were added to refs/heads/develop by this push:
     new 93fe03a49 fix(loadbalance): prevent panic in consistent hash toKey for non-string args (#3430)
93fe03a49 is described below

commit 93fe03a4962bb4f3e02e172141dd538df33be951
Author: aias00 <li...@apache.org>
AuthorDate: Wed Jun 17 13:41:10 2026 +0800

    fix(loadbalance): prevent panic in consistent hash toKey for non-string args (#3430)
    
    The hard type assertion args[i].(string) panics for any non-string
    argument (int, struct, etc.), while Java Dubbo uses toString() which
    never fails. Replace with fmt.Fprint(&sb, args[i]) which safely
    converts any type to its string representation.
---
 cluster/loadbalance/consistenthashing/selector.go | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/cluster/loadbalance/consistenthashing/selector.go b/cluster/loadbalance/consistenthashing/selector.go
index 4ea278fd3..86808a85e 100644
--- a/cluster/loadbalance/consistenthashing/selector.go
+++ b/cluster/loadbalance/consistenthashing/selector.go
@@ -85,7 +85,7 @@ func (c *selector) toKey(args []any) string {
 	var sb strings.Builder
 	for i := range c.argumentIndex {
 		if i >= 0 && i < len(args) {
-			_, _ = fmt.Fprint(&sb, args[i].(string))
+			_, _ = fmt.Fprint(&sb, args[i])
 		}
 	}
 	return sb.String()