juicedata/juicefs · error

connect to addr

Error message

connect to addr %s: %s

What it means

Returned by newKVMeta when creating the underlying KV client fails; it wraps the driver-specific connection error (bad address, unreachable cluster, TLS problems) so the caller sees which address failed to connect.

Solutions

  1. Verify the KV cluster endpoints are reachable and credentials are correct
  2. Check TLS/CA configuration if the cluster uses encrypted connections
Defensive patterns

Strategy: retry

When it happens

Trigger: Thrown at pkg/meta/tkv.go:118 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of juicedata/juicefs@c9a67b23e8 (2026-09-06). Data as JSON: /api/errors/11f29da115f2e869. Report an issue: GitHub.

Appendix: source

Thrown at pkg/meta/tkv.go:118

}

var _ Meta = (*kvMeta)(nil)
var _ engine = (*kvMeta)(nil)

var drivers = make(map[string]func(string) (tkvClient, error))

func newTkvClient(driver, addr string) (tkvClient, error) {
	fn, ok := drivers[driver]
	if !ok {
		return nil, fmt.Errorf("unsupported driver %s", driver)
	}
	return fn(addr)
}

func newKVMeta(driver, addr string, conf *Config) (Meta, error) {
	client, err := newTkvClient(driver, addr)
	if err != nil {
		return nil, fmt.Errorf("connect to addr %s: %s", addr, err)
	}
	// TODO: ping server and check latency > Millisecond
	// logger.Warnf("The latency to database is too high: %s", time.Since(start))
	m := &kvMeta{
		baseMeta: newBaseMeta(addr, conf),
		client:   client,
	}
	m.en = m
	return m, nil
}

func (m *kvMeta) Shutdown() error {
	m.of.close()
	return m.client.close()
}

func (m *kvMeta) Name() string {
	return m.client.name()

View on GitHub (pinned to c9a67b23e8)