Implement stopProvidingItem cancellation
まだ誰も着手していません。
評価
- 難易度
- 4/5
- 見積もり時間
- 3〜5日
- 初心者へのやさしさ
- 45/100
- issue の種類
- バグ
- 明瞭さ
- おおむね明確
- 活発さ
- 静か
- 技術スタック
- ios, swift
- 領域
- mobile-dev
調査の方向性
FileProviderAdapter.stopProvidingItem(at:) から開始し、実行中の URLSessionTask、Workflow、WorkflowScheduler permits、DownloadTaskRecord がどのように追跡されているかを確認します。WebDAV-onTaskCreation パスと SDK ベースのプロバイダを比較し、以前の startProvidingItem が存在しない場合のキャンセルも含めます。キャンセルが安全で、クリーンアップと permit の解放が行われ、完了が通知されれば完了です。
索引モデルが issue の本文から書いたものです。
説明
FileProviderAdapter.stopProvidingItem(at:) is a #warning("TODO") no-op. iOS calls it when the last claim on a file is released, which includes re-tapping a file that is still downloading in Files.app. Because we ignore it, the in-flight URLSessionTask keeps running, its WorkflowScheduler download permit is never released, and no completion is signaled back. fileproviderd and the extension then disagree about the item's state until the extension is respawned, and the user sees "Couldn't communicate with a helper application."
Confirmed on device (iOS 26.5): stopProvidingItem logged, followed by roughly six minutes of silence from the extension, then a respawn. With maxParallelDownloads: 2, two of these are enough to stall every later download in the vault until the vault is locked and unlocked.
This is separate from #449 and predates it. #467 fixed the resume-before-register ordering and deliberately left this out of scope.
A fix needs to map the item identifier to the in-flight URLSessionTask, cancel it, tear down the Workflow and release the scheduler permit, remove the DownloadTaskRecord, and signal completion. Two things to be careful about: stopProvidingItem does not imply a prior startProvidingItem for the same URL, since fileproviderd can release a queued claim before content is ever materialized, so cancellation has to tolerate having nothing to cancel. And onTaskCreation is only invoked by the WebDAV provider in cloud-access-swift, so a task handle exists for WebDAV but not for the SDK-backed providers, which need a different cancellation path or none at all.
- 主要言語
- Swift
- スター
- 295
- フォーク
- 42
- 平均マージ
- 1時間 43分
- マージ済み PR(30日)
- 1
環境構築
- Dockerfile・Docker Compose ファイルなし
- プルリクエストのテンプレートなし
- コントリビューションガイドを読む
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
cryptomator/ios のほかの issue
-
state:has-workaround
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
cryptomator/ios#1 · コメント 1 件 ·
-
難易度 4/5 3〜5日 初心者へのやさしさ 38/100
cryptomator/ios#484 · コメント 1 件 ·
-
難易度 4/5 3〜5日 初心者へのやさしさ 48/100
cryptomator/ios#482 ·
-
Shortcuts: "Save File" action fails with "The file is invalid" when saving camera/converted imageオープン
難易度 3/5 半日 初心者へのやさしさ 70/100
cryptomator/ios#476 · コメント 1 件 ·
-
misc:hub
難易度 5/5 1週間以上 初心者へのやさしさ 35/100
cryptomator/ios#474 ·
cryptomator/ios の issue をすべて見る
似ている issue
-
bug
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 68/100
ls1intum/artemis-ios#571 ·
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 68/100
ml-explore/mlx-swift-lm#791 ·
メンテナーはふだん 2 日以内に返信
-
Tell Siri what's on screen (iOS 27 App Entity annotations)対応中かも @alexandrereol が今日担当しました。 オープンenhancement
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
alexandrereol/ethmensa#32 ·
メンテナーはふだん 1 日以内に返信
-
a: plugins d: docs/ fyi-macos P2 platform-ios platform-macos team-ios
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
メンテナーはふだん 1 日以内に返信