Schedule filter cache cleanup in a finally block

This ensures that the job is still rescheduled in the event that it was
rejected from the threadpool, or an exception occured while cleaning