AdguardTeam/AdGuardHome · error

putting data: %w

Error message

putting data: %w

What it means

store() failed on bkt.Put of the encoded session — bbolt reports ErrBucketNotFound, ErrKeyRequired (empty token key), or allocation failures. The transaction is rolled back via errors.WithDeferred.

Source

Thrown at internal/aghuser/sessionstorage.go:367

	if err != nil {
		return fmt.Errorf("starting transaction: %w", err)
	}

	needRollback := true
	defer func() {
		if needRollback {
			err = errors.WithDeferred(err, tx.Rollback())
		}
	}()

	bkt, err := tx.CreateBucketIfNotExists([]byte(bboltBucketSessions))
	if err != nil {
		return fmt.Errorf("creating bucket: %w", err)
	}

	err = bkt.Put(s.Token[:], bboltEncode(s))
	if err != nil {
		return fmt.Errorf("putting data: %w", err)
	}

	needRollback = false
	err = tx.Commit()
	if err != nil {
		return fmt.Errorf("committing transaction: %w", err)
	}

	return nil
}

// FindByToken implements the [SessionStorage] interface for *DefaultSessionStorage.
func (ds *DefaultSessionStorage) FindByToken(ctx context.Context, t SessionToken) (s *Session, err error) {
	ds.mu.Lock()
	defer ds.mu.Unlock()

	s, ok := ds.sessions[t]
	if !ok {

View on GitHub (pinned to b41aefbe51)

Solutions

  1. Check the wrapped error: ErrKeyRequired means the token generation upstream failed
  2. Free disk space / check filesystem
  3. Delete the rebuildable sessions db if corruption is confirmed
Defensive patterns

Strategy: try-catch

Validate before calling

// reject zero tokens before storing
if s.Token == (SessionToken{}) { return errors.Error("empty token") }

Try / catch

if errors.Is(err, bbolt.ErrKeyRequired) { /* fix token generation upstream */ }

Prevention

When it happens

Trigger: Putting a session whose Token is the zero value (empty key), a bucket that vanished mid-transaction, or allocation failure on a full/corrupt db.

Common situations: Corrupted sessions.db; disk full; empty token produced by a broken ID generator.

Related errors


AI-assisted analysis of AdguardTeam/AdGuardHome@b41aefbe51 (2026-08-27). Data as JSON: /api/errors/59a34e434c40ad65. Report an issue: GitHub.