Make chunked upload jobs robust in face of exceptions.
If an exception occurs when creating the new image page during
PublishStashedFile (for example, if ExternalStorage servers
become overloaded), the job is aborted, but the current
transaction is not aborted. Then the next job comes along, does
$dbw->begin(), which implicitly commits the current open
transactions, causing database corruption (entries in page table
with page_latest = 0).
This patch ensures that if some unknown exception occurs during
the job, that the database gets rolled back to a known good state.
I also plan to make a separate patch to make the recordUpload
code handle exceptions properly. Nonetheless, I think its
important that the general job code be as robust as possible.
Bug: 32551
Change-Id: Icb5e06e81700e5dcf0d4e739c7b2bb3221e718b8