AdguardTeam/AdGuardHome · error
searching user by login %q: %w
Error message
searching user by login %q: %w
What it means
A session cookie resolved to a valid session, but loading the user by login from the users storage failed. The wrapped error indicates the user store (JSON/DB) backend error, not a missing user.
Source
Thrown at internal/home/authhttp.go:537
) (u *aghuser.User, err error) {
t, err := sessionTokenFromHex(val)
if err != nil {
// Don't wrap the error because it's informative enough as is.
return nil, err
}
s, err := mw.sessions.FindByToken(ctx, t)
if err != nil {
return nil, fmt.Errorf("searching session by token: %w", err)
}
if s == nil {
return nil, nil
}
u, err = mw.users.ByLogin(ctx, s.UserLogin)
if err != nil {
return nil, fmt.Errorf("searching user by login %q: %w", s.UserLogin, err)
}
return u, nil
}
// sessionTokenFromHex converts a hexadecimal string into a session token.
func sessionTokenFromHex(val string) (token aghuser.SessionToken, err error) {
sess, err := hex.DecodeString(val)
if err != nil {
return token, fmt.Errorf("decoding value: %w", err)
}
l := aghuser.SessionTokenLength
err = validate.Equal("token length", l, len(sess))
if err != nil {
// Don't wrap the error because it's informative enough as is.
return token, errView on GitHub (pinned to b41aefbe51)
Solutions
- Inspect the wrapped error to identify the storage failure
- Check/repair the users storage file in the working directory
- Ensure single instance and correct file permissions
- As a last resort, recreate the users store (users will need re-provisioning)
Defensive patterns
Strategy: try-catch
Try / catch
// On user-store errors, force re-login rather than retrying
if err != nil { clearSessionCookie(w); redirect to login } Prevention
- Keep the users storage file consistent and backed up
- Pin API/tool versions matching the server build
When it happens
Trigger: userFromCookie with a session whose s.UserLogin lookup via Users.ByLogin returns an error (I/O, parse, or consistency failure).
Common situations: Users file corrupted or being rewritten concurrently, schema mismatch after downgrade, permission issues on data dir.
Related errors
- searching session by token: %w
- loading sessions: %w
- deleting sessions: %w
- storing session: %w
- adding client %q at index %d: %w
AI-assisted analysis of AdguardTeam/AdGuardHome@b41aefbe51 (2026-08-27).
Data as JSON: /api/errors/2e7d23f2d92208da.
Report an issue: GitHub.