A FedWiki row action or API delete answers a failed database read as "Site not found" #310

Open
opened 2026-10-31 01:01:36 +00:00 by cgalo5758 · 0 comments
Owner

What happens

On the FedWiki sites list, the row actions (Archive, Restore, Keep active, Delete) first look up the site by its name. When that lookup fails because the database cannot answer, the member sees the line shown for a site that does not exist: "Site not found". The JSON API's delete (DELETE /api/fedwiki/sites/{domain}) answers the same failure with 404 "Site not found". Neither logs the error.

The API's 404 has a stated meaning: a delete sent without instance and generation is answered 404 once the site is gone, so a client that repeats its delete reads this 404 as "deleted" and stops.

Both handlers already treat a failed lookup of the request itself, a few lines earlier, as an error and log it: "Couldn't update the site. Try again." on the list, 500 from the API.

What should happen

Only a missing row answers "Site not found". Any other error is logged and answered as the failed request lookup is: "Couldn't update the site. Try again." on the list, 500 "Failed to initiate site deletion" from the API. A site that belongs to another organization still answers "Site not found", so the answer does not reveal which names other organizations use.

Where

internal/integrations/fedwiki/web/site_actions.go (beginRowAction), internal/integrations/fedwiki/web/api.go (DeleteSite)

Why it matters

During a database fault a member is told one of their own sites does not exist, an API client can stop retrying a delete that never started, and the log records nothing.

Related: #197, #207, #298.

### What happens On the FedWiki sites list, the row actions (Archive, Restore, Keep active, Delete) first look up the site by its name. When that lookup fails because the database cannot answer, the member sees the line shown for a site that does not exist: "Site not found". The JSON API's delete (`DELETE /api/fedwiki/sites/{domain}`) answers the same failure with 404 "Site not found". Neither logs the error. The API's 404 has a stated meaning: a delete sent without `instance` and `generation` is answered 404 once the site is gone, so a client that repeats its delete reads this 404 as "deleted" and stops. Both handlers already treat a failed lookup of the request itself, a few lines earlier, as an error and log it: "Couldn't update the site. Try again." on the list, 500 from the API. ### What should happen Only a missing row answers "Site not found". Any other error is logged and answered as the failed request lookup is: "Couldn't update the site. Try again." on the list, 500 "Failed to initiate site deletion" from the API. A site that belongs to another organization still answers "Site not found", so the answer does not reveal which names other organizations use. ### Where `internal/integrations/fedwiki/web/site_actions.go` (`beginRowAction`), `internal/integrations/fedwiki/web/api.go` (`DeleteSite`) ### Why it matters During a database fault a member is told one of their own sites does not exist, an API client can stop retrying a delete that never started, and the log records nothing. Related: #197, #207, #298.
cgalo5758 added the
kind
bug
area/fedwikiarea/member-ui
labels 2026-10-31 01:01:36 +00:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: wiki-cafe/member-console#310