Skip to content

contrib/registry/nacos/v2: panic: duplicate metrics collector registration attempted #3680

@LanceAdd

Description

@LanceAdd

Go version

go version go1.22.4 darwin/amd64

GoFrame version

2.7.2

Can this bug be reproduced with the latest release?

Option Yes

What did you do?

load remote config from nacos

serverConfig := constant.ServerConfig{
		IpAddr: "172.16.23.99",
		Port:   8848,
	}
	clientConfig := constant.ClientConfig{
		CacheDir:    "/tmp/nacos",
		LogDir:      "/tmp/nacos",
		NamespaceId: "c1e15245-03c1-4cba-9c40-ddc59e4d4167",
	}
	configParam := vo.ConfigParam{
		DataId: "sso.yml",
		Group:  "test",
	}

	adapter, err := nacos.New(ctx, nacos.Config{
		ServerConfigs: []constant.ServerConfig{serverConfig},
		ClientConfig:  clientConfig,
		ConfigParam:   configParam,
	})
	if err != nil {
		g.Log().Fatalf(ctx, `%+v`, err)
	}
	g.Cfg().SetAdapter(adapter)

Register with Nacos

	gsvc.SetRegistry(nacos.New("172.16.23.99:8848",
		constant.WithNamespaceId("c1e15245-03c1-4cba-9c40-ddc59e4d4167"),
		constant.WithUsername("nacos"),
		constant.WithPassword("nacos"),
	).SetGroupName("test"))

When I get the configuration file from Nacos and then register the service with Nacos, I get the following error

panic: duplicate metrics collector registration attempted

goroutine 1 [running]:
github.com/prometheus/client_golang/prometheus.(*Registry).MustRegister(0xc0000b9db0, {0xc0004a0300, 0x2, 0x2})
        /Users/shanyujie/go/pkg/mod/github.com/prometheus/client_golang@v1.12.2/prometheus/registry.go:403 +0x116
github.com/prometheus/client_golang/prometheus.MustRegister({0xc0004a0300, 0x2, 0x2})
        /Users/shanyujie/go/pkg/mod/github.com/prometheus/client_golang@v1.12.2/prometheus/registry.go:178 +0x3f
github.com/nacos-group/nacos-sdk-go/v2/common/monitor.init.0()
        /Users/shanyujie/go/pkg/mod/github.com/nacos-group/nacos-sdk-go/v2@v2.2.5/common/monitor/monitor.go:34 +0xc5
Exiting.

sso.yml

server:
  address: "0.0.0.0:50001"
  openapiPath: "/api.json"
  swaggerPath: "/doc.html"
  accessLogEnabled: true
  errorLogEnabled: true
  pprofEnabled: false
  logPath: "./log"
  dumpRouterMap: true

What did you see happen?

panic: duplicate metrics collector registration attempted

goroutine 1 [running]:
github.com/prometheus/client_golang/prometheus.(*Registry).MustRegister(0xc0000b9db0, {0xc0004a0300, 0x2, 0x2})
        /Users/shanyujie/go/pkg/mod/github.com/prometheus/client_golang@v1.12.2/prometheus/registry.go:403 +0x116
github.com/prometheus/client_golang/prometheus.MustRegister({0xc0004a0300, 0x2, 0x2})
        /Users/shanyujie/go/pkg/mod/github.com/prometheus/client_golang@v1.12.2/prometheus/registry.go:178 +0x3f
github.com/nacos-group/nacos-sdk-go/v2/common/monitor.init.0()
        /Users/shanyujie/go/pkg/mod/github.com/nacos-group/nacos-sdk-go/v2@v2.2.5/common/monitor/monitor.go:34 +0xc5
Exiting.

What did you expect to see?

It's okay to just register the service or just get the configuration file, but it can be problematic when both are present

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugIt is confirmed a bug, but don't worry, we'll handle it.doneThis issue is done, which may be release in next version.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions