in xray/segment.go [403:435]
func (seg *Segment) CloseAndStream(err error) {
// If SDK is disabled then return
if SdkDisabled() {
return
}
if seg.parent != nil {
logger.Debugf("Ending subsegment named: %s", seg.Name)
seg.Lock()
seg.EndTime = float64(time.Now().UnixNano()) / float64(time.Second)
seg.InProgress = false
seg.Emitted = true
seg.Unlock()
if seg.parent.RemoveSubsegment(seg) {
logger.Debugf("Removing subsegment named: %s", seg.Name)
}
}
seg.Lock()
defer seg.Unlock()
if err != nil {
seg.addError(err)
}
// If segment is dummy we return
if seg.Dummy {
return
}
seg.beforeEmitSubsegment(seg.parent)
seg.emit()
}