问题
项目中有关于初始化etcd连接的函数,但是发现当输入错误的IP PORT信息后err返回nil,依旧可以初始化成功?
ep := "localhost:237979"
client, err := clientv3.New(clientv3.Config{Endpoints: []string{ep},DialTimeout: 5 * time.Second,
}
if err != nil {fmt.printf("Failed to connect to etcd: %v", err)
}
原因
clientv3.New 在创建客户端时,不会立即验证端点的有效性或是否可连接,而是将验证推迟到实际使用客户端(比如执行 Put、Get 等操作)时。err 为 nil 并不一定意味着端点是正确的,
而是说明 clientv3.New 在初始化时没有检测到明显的配置错误。真正的连接问题可能在后续操作中暴露出来。
解决
- 检测IP PORT格式
- 在初始化后立即测试客户端是否能正常工作