The Application object in pkg/scheduler/objects/application.go has inconsistent locking in several places:
- getPlaceholderAllocations() accesses the allocations map unlocked which might cause issues.
- Usages of clearStateTimer() also should be checked.
- HandleApplicationEvent() and OnStateChange() assume the lock is held. However, timeoutStateTimer() calls HandleApplicationEvent() with no lock held.
We should look for any other potential issues here as well.