in accumulator/invocation.go [66:89]
func (inc *Invocation) MaybeCreateProxyTxn(status string, endTime time.Time) ([]byte, error) {
if !inc.NeedProxyTransaction() {
return nil, nil
}
txn, err := sjson.SetBytes(inc.AgentPayload, "transaction.result", status)
if err != nil {
return nil, err
}
// Transaction duration cannot be known in partial transaction payload. Estimate
// the duration based on the time provided. Time can be based on the runtimeDone
// log record or function deadline.
duration := endTime.Sub(inc.Timestamp)
txn, err = sjson.SetBytes(txn, "transaction.duration", duration.Milliseconds())
if err != nil {
return nil, err
}
if status != "success" {
txn, err = sjson.SetBytes(txn, "transaction.outcome", "failure")
if err != nil {
return nil, err
}
}
return txn, nil
}