ttms and other "download time" metrics can be -1
- Dominant language
- C++
- Stars
- 2k
- Forks
- 874
- Avg merge
- 6d 15h
- Merged PRs (30d)
- 46
Description
Under certain conditions, it seems the milestone used for e.g. ttms (and a few others) are not set properly. This seems to primarily happen for 302's, but also for some 403's. The relevant code snippets are:
```
LogAccess::marshal_transfer_time_ms(char *buf)
{
if (buf) {
marshal_int(buf, m_http_sm->milestones.difference_msec(TS_MILESTONE_SM_START, TS_MILESTONE_SM_FINISH));
}
```
And, milestones.difference_msec does
```
if (milestones[ms_end] == 0) {
return -1;
}
return ink_hrtime_to_msec(milestones[ms_end] - milestones[ms_start]);
```
So, in this case, TS_MILESTONE_SM_FINISH must not have been set to a value at all, i.e. it looks like the SM never finished (which clearly can not be the case).
What's surprising is that this primarily seems to happen on parent proxies, and not on the child proxies.
Contributor guide
Assessment
This issue has not been assessed yet.