https://bugzilla.wikimedia.org/show_bug.cgi?id=13921

Tim Starling <[email protected]> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Assignee|[email protected]     |[email protected]

--- Comment #20 from Tim Starling <[email protected]> ---
What makes this tricky is the use of the $commit=false parameter to
doDeleteArticleReal() by FileDeleteForm to attempt to roll back everything when
a FileBackend operation fails. Of course, you can't unpurge Squid or unsend an
IRC log line, but at least it does make an effort. 

Moving things like squid purges and links updates to a DeferredUpdates job
would be easy if it wasn't for this. You can't unqueue a DeferredUpdates job at
present. Maybe you could clear the queue or somehow identify invalid jobs, but
it would be pretty messy and heuristic. The use of onTransactionIdle() would
suffer similar problems.

Ideally, WikiPage::doDeleteArticleReal() would be split up into a pre-commit
function and a post-commit function, and FileDeleteForm would call the
post-commit function after the file operations are successful.

WikiPage::doDeleteArticleReal() itself would continue to do both halves, for
backwards compatibility, which would be fairly convenient in the short term
since ApiDelete and maintenance/deleteBatch.php could continue to call it. But
in the long term, those two callers would be best served by a new entry point
that treated file and non-file deletions equivalently.

Assigning to Rob Lanphier for delegation.

-- 
You are receiving this mail because:
You are on the CC list for the bug.
_______________________________________________
Wikibugs-l mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/wikibugs-l

Reply via email to