When a job is blocked trying to get a file lock, it doesn't provide much feedback to the end user (and the logging doesn't always identify the file involved either).
The logging should be improved, so you at least it is easy to see which logical files are causing blocks.
It should also be routed back up to the workunit status.
A common route for this type of issue, is via super file transactions, where a transaction is involved.
It will try to lock files involved in the transaction, then back out if it can't, pause and retry.
That would be a good focus for improvement, for it to interface with the workunit, or callback, and update the workunit status on a blocked lock, and clear it on success.