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.
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:
And, milestones.difference_msec does
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.