lionsoul2014/ip2region · error

parse v6 cache policy: %w

Error message

parse v6 cache policy: %w

What it means

Go service factory: CachePolicyFromName rejected the v6 cache policy string; same accepted names as v4 (file/nocache, vectorindex variants, content/buffercache), any other value wraps this error.

Source

Thrown at binding/golang/main.go:60

	// try to create v4 config
	v4CPolicy, err := service.CachePolicyFromName(v4CachePolicy)
	if err != nil {
		return nil, fmt.Errorf("parse v4 cache policy: %w", err)
	}

	v4DbPath, err := homedir.Expand(v4XdbPath)
	if err != nil {
		return nil, fmt.Errorf("Expand(`%s`): %s", v4XdbPath, err)
	}
	v4Config, err := service.NewV4Config(v4CPolicy, v4DbPath, 1)
	if err != nil {
		return nil, fmt.Errorf("NewV4Config: %w", err)
	}

	// try to create v6 config
	v6Policy, err := service.CachePolicyFromName(v6CachePolicy)
	if err != nil {
		return nil, fmt.Errorf("parse v6 cache policy: %w", err)
	}

	v6DbPath, err := homedir.Expand(v6XdbPath)
	if err != nil {
		return nil, fmt.Errorf("Expand(`%s`): %s", v6XdbPath, err)
	}
	v6Config, err := service.NewV6Config(v6Policy, v6DbPath, 1)
	if err != nil {
		return nil, fmt.Errorf("NewV6Config: %w", err)
	}

	return service.NewIp2Region(v4Config, v6Config)
}

func createSearcher(dbPath string, cachePolicy string) (*xdb.Searcher, error) {
	handle, err := os.OpenFile(dbPath, os.O_RDONLY, 0600)
	if err != nil {
		return nil, fmt.Errorf("open xdb file `%s`: %w", dbPath, err)

View on GitHub (pinned to c1a1fc7d59)

Solutions

  1. Use an accepted v6 cache policy name (file, vectorIndex, content)
  2. Validate the policy at config-load time
  3. Omit v6 config (empty path) if IPv6 lookup is not needed
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at binding/golang/main.go:60 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of lionsoul2014/ip2region@c1a1fc7d59 (2026-09-02). Data as JSON: /api/errors/4d3611066ac39f4b. Report an issue: GitHub.