Troubleshooting¶
This page helps you diagnose the most common SpecStar issues in real projects.
Use it when something is failing and you need a practical path from symptom to likely fix.
1. The app starts, but behavior seems inconsistent¶
Symptoms¶
- routes are missing
- model changes do not appear as expected
- the app behaves differently after dynamic reconfiguration
What to check¶
- call
configure()during startup, not after the app is already serving requests - register all models before
apply() - avoid mutating route templates and model registration after startup
See also:
2. A write fails with a conflict¶
Common causes¶
- a
Unique()field already exists on another active resource - you are trying to modify a resource in a disallowed state
- the target revision schema does not match the current schema version
What to check¶
- whether the conflicting value is already in use
- whether the resource is soft-deleted rather than missing
- whether a migration is required before switching or reusing an older revision
See also:
3. Permission denied errors¶
Symptoms¶
- requests return access-denied behavior even though the route exists
- a user can read but not update
- ACL or RBAC rules seem to be ignored
What to check¶
- which permission checker is configured
- whether your current user matches the intended subject or role
- whether the action being blocked is
read,update,delete, or a grouped action - whether a strict default-deny policy is active with no matching allow rule
See also:
4. Search returns nothing¶
Common causes¶
- the field you are searching is not indexed
- the query operator is wrong for the field type
- the resource is soft-deleted and the current query excludes deleted data
What to check¶
- confirm the target field is indexed
- confirm the operator matches the expected value type
- test with a simpler query first, then add more conditions gradually
- if results look truncated rather than missing, pass an explicit
limitor setSPECSTAR_DEFAULT_QUERY_LIMITat startup - use the
/countendpoint when you need the exact total number of matches
See also:
5. Blob or file upload problems¶
Symptoms¶
- uploads fail partway through
- the file metadata exists but the content is not accessible
- large uploads stall or do not finalize
What to check¶
- whether the blob route template is enabled
- whether the selected blob backend is configured correctly
- whether the upload session was finalized successfully
- whether the backend expects proxy upload or direct upload via
single_put
See also:
6. Backup and restore issues¶
Symptoms¶
- imported data does not appear
- duplicate IDs cause load failures
- only part of the dataset is restored
What to check¶
- which
on_duplicatestrategy was used - whether you exported the correct model or the whole environment
- whether the target storage backend was initialized correctly before import
See also:
7. Pydantic model surprises¶
Symptoms¶
- dict input works differently than expected
- validators reject payloads that look valid at first glance
- output shapes differ from your Pydantic model objects
What to check¶
- whether the resource was registered as a Pydantic model
- whether the validation error comes from Pydantic or from an SpecStar domain rule
- whether you are assuming the stored output remains a Pydantic instance internally
See also:
8. Queue or job issues¶
Symptoms¶
- jobs remain pending
- a worker never picks up the task
- retries happen unexpectedly or not at all
What to check¶
- whether the message queue backend is actually running
- whether the consumer has started
- whether the handler raised an exception and moved the job into failure state
See also:
General debugging advice¶
When diagnosing SpecStar issues, start by narrowing the problem to one layer:
- model and validation
- resource lifecycle
- permissions and events
- storage or blob backend
- queue or integration layer
That usually makes the real cause much easier to find.