From c98308adc6f1b98bddd8d3b89f404c3e7ffc0bd4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?B=C5=82az=CC=87ej=20Pankowski?= <86720177+pblazej@users.noreply.github.com> Date: Wed, 22 Oct 2025 09:43:59 +0200 Subject: [PATCH 1/4] Disable parallel for now --- .github/workflows/ci.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 67f1fdc48..8e7a989cb 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -141,7 +141,7 @@ jobs: -enableThreadSanitizer ${{ matrix.tsan == true && 'YES' || 'NO' }} \ APPLICATION_EXTENSION_API_ONLY=${{ matrix.extension-api-only == true && 'YES' || 'NO' }} \ -only-testing:$test \ - -parallel-testing-enabled YES \ + -parallel-testing-enabled NO \ | xcbeautify --renderer github-actions then echo "::error::Test failed: $test" From 66320f363044bb5fcf83e4fe44ea77536ff7a8d7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?B=C5=82az=CC=87ej=20Pankowski?= <86720177+pblazej@users.noreply.github.com> Date: Wed, 22 Oct 2025 10:11:28 +0200 Subject: [PATCH 2/4] Timeouts --- .github/workflows/ci.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 8e7a989cb..a537ee678 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -17,7 +17,7 @@ concurrency: env: TEST_TARGETS: "LiveKitCoreTests LiveKitObjCTests" - TEST_TIMEOUT_MINUTES: 10 + TEST_TIMEOUT_MINUTES: 15 TEST_RETRY_ATTEMPTS: 3 jobs: @@ -90,7 +90,7 @@ jobs: platform: "tvOS Simulator,name=Apple TV,OS=26.0" runs-on: ${{ matrix.os }} - timeout-minutes: 35 + timeout-minutes: 60 defaults: run: shell: bash From 892c3f34af63266116f2d971f429d17d9e937840 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?B=C5=82az=CC=87ej=20Pankowski?= <86720177+pblazej@users.noreply.github.com> Date: Wed, 22 Oct 2025 10:55:26 +0200 Subject: [PATCH 3/4] Leak sleep --- Tests/LiveKitTestSupport/Assertions.swift | 1 + 1 file changed, 1 insertion(+) diff --git a/Tests/LiveKitTestSupport/Assertions.swift b/Tests/LiveKitTestSupport/Assertions.swift index edcd68608..7546a949e 100644 --- a/Tests/LiveKitTestSupport/Assertions.swift +++ b/Tests/LiveKitTestSupport/Assertions.swift @@ -28,6 +28,7 @@ public func XCTAssertThrowsErrorAsync(_ expression: @autoclosure () async throws public extension LKTestCase { func noLeaks(of instance: AnyObject & Sendable, file: StaticString = #filePath, line: UInt = #line) { addTeardownBlock { [weak instance] in + try await Task.sleep(nanoseconds: NSEC_PER_SEC) XCTAssertNil(instance, "Leaked object: \(String(describing: instance))", file: file, line: line) } } From a6ef5891a0cbd1ce1600f188002609e137e6d6ae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?B=C5=82az=CC=87ej=20Pankowski?= <86720177+pblazej@users.noreply.github.com> Date: Wed, 22 Oct 2025 12:04:47 +0200 Subject: [PATCH 4/4] Audio file sync close --- Sources/LiveKit/Support/AudioMixRecorder.swift | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/Sources/LiveKit/Support/AudioMixRecorder.swift b/Sources/LiveKit/Support/AudioMixRecorder.swift index 46f8c6771..70e94f7e0 100644 --- a/Sources/LiveKit/Support/AudioMixRecorder.swift +++ b/Sources/LiveKit/Support/AudioMixRecorder.swift @@ -161,7 +161,10 @@ public class AudioMixRecorder: Loggable, @unchecked Sendable { source.stop() } audioEngine.stop() - audioFile = nil + + writeQueue.sync { + audioFile = nil + } } // MARK: - Source