cache the actual_complete result during scheduling

So the worker does not spend time wasting on re-checking actual_complete()

There is an alternative solution for the problem, which is to make sure the
scheduler only schedule the same task once, but it is a bit late so I will
think it through tomorrow.