plandex-ai/plandex · error

Error updating default plan config

Error message

Error updating default plan config

What it means

The handler's db.WithTx transaction (storing the default plan config via StoreDefaultPlanConfig) returned an error, so the handler replies 500 with 'Error updating default plan config'. The tx wrapper failed either at begin/commit or inside the callback; the underlying cause is in the server log.

Source

Thrown at app/server/handlers/plan_config.go:151

		log.Println("Error decoding request body: ", err)
		http.Error(w, "Error decoding request body", http.StatusBadRequest)
		return
	}

	err = db.WithTx(r.Context(), "update default plan config", func(tx *sqlx.Tx) error {

		err := db.StoreDefaultPlanConfig(auth.User.Id, req.Config, tx)
		if err != nil {
			log.Println("Error storing default plan config: ", err)
			return fmt.Errorf("error storing default plan config: %v", err)
		}

		return nil
	})

	if err != nil {
		log.Println("Error updating default plan config: ", err)
		http.Error(w, "Error updating default plan config", http.StatusInternalServerError)
		return
	}

	log.Println("UpdateDefaultPlanConfigHandler processed successfully")
}

View on GitHub (pinned to e2d772072e)

Solutions

  1. Check the server log line 'Error updating default plan config' for the wrapped root cause (it includes the inner 'error storing default plan config: ...' message)
  2. Verify Postgres is reachable and the connection pool is not exhausted
  3. Retry the request — transient lock/serialization failures resolve on retry
  4. Confirm the plans/schema migrations are up to date with the running server version

Example fix

null
Defensive patterns

Strategy: retry

Validate before calling

null

Type guard

null

Try / catch

const res = await fetch(url, opts);
if (res.status === 500 && (await res.text()).includes('Error updating default plan config')) {
  // transient tx failure: back off and retry a limited number of times
  await new Promise(r => setTimeout(r, 1000));
  // retry...
}

Prevention

When it happens

Trigger: StoreDefaultPlanConfig fails (DB constraint, invalid config serialization), the DB connection drops mid-transaction, or WithTx cannot begin/commit the transaction; also fires when the request context is cancelled mid-write.

Common situations: Postgres down or connection pool exhausted; deadlock or serialization failure under concurrent config updates; context deadline exceeded on slow networks; schema migration mismatch after upgrading the server.

Related errors


AI-assisted analysis of plandex-ai/plandex@e2d772072e (2026-09-05). Data as JSON: /api/errors/d116950c078bb733. Report an issue: GitHub.