Skip to content

Commit 5f74b10

Browse files
committed
fix(session-replay): Drain queued pause on prep failure
1 parent 25764a8 commit 5f74b10

1 file changed

Lines changed: 17 additions & 16 deletions

File tree

Sources/Swift/Integrations/SessionReplay/SentrySessionReplay.swift

Lines changed: 17 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -565,24 +565,25 @@ import UIKit
565565
guard let (segmentStart, segmentEnd) = segmentBounds else { return }
566566

567567
if !prepareSegment(from: segmentStart, until: segmentEnd, completion: { [weak self] in
568-
guard let self = self else { return }
569-
self.lock.lock()
570-
if self.pendingSegmentEnd == segmentEnd {
571-
self.pendingSegmentEnd = nil
572-
}
573-
let pauseSegmentEnd = self.pendingPauseSegmentEnd
574-
self.pendingPauseSegmentEnd = nil
575-
self.lock.unlock()
576-
577-
if let pauseSegmentEnd = pauseSegmentEnd {
578-
self.prepareSegmentUntil(date: pauseSegmentEnd)
579-
}
568+
self?.finishPendingSegment(segmentEnd)
580569
}) {
581-
lock.synchronized {
582-
if pendingSegmentEnd == segmentEnd {
583-
pendingSegmentEnd = nil
584-
}
570+
finishPendingSegment(segmentEnd)
571+
}
572+
}
573+
574+
private func finishPendingSegment(_ segmentEnd: Date) {
575+
let pauseSegmentEnd = lock.synchronized { () -> Date? in
576+
if pendingSegmentEnd == segmentEnd {
577+
pendingSegmentEnd = nil
585578
}
579+
580+
let pauseSegmentEnd = pendingPauseSegmentEnd
581+
pendingPauseSegmentEnd = nil
582+
return pauseSegmentEnd
583+
}
584+
585+
if let pauseSegmentEnd = pauseSegmentEnd {
586+
prepareSegmentUntil(date: pauseSegmentEnd)
586587
}
587588
}
588589

0 commit comments

Comments
 (0)