Tencent/WeKnora · error
redis lock key and token are required
Error message
redis lock key and token are required
What it means
Argument guard raised by redislock.Release when key or token is an empty string — both are required to identify the lock and prove ownership; the release script is never executed. Programming-error guard.
Source
Thrown at internal/common/redislock/token_lock.go:118
}
return ctx.Err()
case <-timer.C:
}
}
}
// Release deletes the lock only if token still owns it.
func Release(
ctx context.Context,
client redis.UniversalClient,
key string,
token string,
) (bool, error) {
if client == nil {
return false, errors.New("redis client is required")
}
if key == "" || token == "" {
return false, errors.New("redis lock key and token are required")
}
released, err := releaseScript.Run(ctx, client, []string{key}, token).Int64()
if err != nil {
return false, fmt.Errorf("release redis lock %q: %w", key, err)
}
return released != 0, nil
}
// Renew extends the lease only if token still owns the lock.
func Renew(
ctx context.Context,
client redis.UniversalClient,
key string,
token string,
lease time.Duration,
) (bool, error) {
if err := validateOperation(client, key, token, lease); err != nil {
return false, errView on GitHub (pinned to 988cbb0330)
Solutions
- Pass the same non-empty key and owner token used at Acquire time
- Check the lock handle/struct initialization so key and token are not lost
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at internal/common/redislock/token_lock.go:118 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of Tencent/WeKnora@988cbb0330 (2026-09-02).
Data as JSON: /api/errors/4c19edf481cb69ca.
Report an issue: GitHub.