`TASK_STOPPED` usage events can be emitted for tasks that were never actually running
tcdowney opened this issue · 0 comments
Issue
There is an issue where TASK_STOPPED
app usage events can be created for a task that was never actually running.
Context
TASK_STARTED
usage events are created when a task transitions from PENDING
to RUNNING
and is successfully scheduled on Diego. TASK_STOPPED
usage events should be created when a RUNNING
task eventually reaches a final state (e.g. SUCCEEDED
or FAILED
). Currently if a task is PENDING
and transitions directly to FAILED
it will result in a TASK_STOPPED
usage event being created with no corresponding TASK_STARTED
event. This can confuse users or systems that are tracking app usage events.
Steps to Reproduce
cf push
an appbosh ssh
on to the diego-api VMsudo su -
andmonit stop bbs
cf run-task APP_NAME --command "echo hello" --name my-pending-task
- Wait for the
cf run-task
command to fail (may take several minutes` cf curl /v3/app_usage_events
and see that there is aTASK_STOPPED
app usage event for themy-pending-task
task, but noTASK_STARTED
event
Expected result
There should be no app usage events for this task because it was never scheduled and run on the platform.
Current result
This causes confusion to end users who are tracking these usage events.
Possible Fix
Only create TASK_STOPPED
events if there is an existing TASK_STARTED
event.
Other issue -- @sethboyles has also reproduced an issue where duplicate TASK_STOPPED
events can be created if a CANCELING
task is rapidly canceled multiple times in quick succession. This can occasionally result in extra events and we should see if we can address that as well.