jextract/jni: Propagate CompletableFuture cancellation to Swift tasks
Les mainteneurs répondent en général sous 1 jour
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 4/5
- Temps estimé
- 3-5 jours
- Accessibilité débutants
- 54/100
- Type d'issue
- Fonctionnalité
- Clarté
- Plutôt claire
- Activité
- Active
- Domaine
- mobile-dev
Piste de recherche
Start by tracing the JNI async call and generated thenApply result-conversion stage described in the issue, then review the reference workaround in the linked pull request. Check how cancellation reaches the source future and the Swift task; done means cancelling the returned Java future forwards cancellation to the Swift task so cooperative operations such as Task.sleep can observe it.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
Problem
Cancelling a future returned by a JNI async call currently changes only the Java future's state. The underlying Swift task keeps running. The generated thenApply result-conversion stage also prevents cancellation of the returned future from reaching the source future.
Example
public func waitForWork() async throws -> Int64 {
try await Task.sleep(for: .seconds(60))
return 1
}
A Java caller can cancel the returned future:
var future = MySwiftLibrary.waitForWork();
future.cancel(false);
The Java future is cancelled, but the Swift task continues running. Cancellation of the returned future should also be forwarded to the Swift task, so cancellation-aware operations such as Task.sleep can observe it.
Swift cancellation is cooperative: forwarding cancellation does not interrupt an operating-system thread or wait for the task to finish.
Reference workaround implementation: https://github.com/qoncept/swift-java/pull/10
- Langage dominant
- Swift
- Étoiles
- 1.3k
- Forks
- 129
- Merge moyen
- 7 h 16 min
- PR mergées (30 j)
- 4
Préparer son environnement
- Aucun Dockerfile ni fichier Docker Compose
- Aucun modèle de pull request
- Lire le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de swiftlang/swift-java
-
wrap-java: Optional convenience methods can fail to compile when a parameter shadows the method nameOuverte
Difficulté 2/5 1-3 heures Accessibilité débutants 70/100
swiftlang/swift-java#945 ·
Les mainteneurs répondent en général sous 1 jour
-
android
Difficulté 2/5 1-3 heures Accessibilité débutants 75/100
swiftlang/swift-java#663 · 4 commentaires · 1 réaction ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 3/5 1-2 jours Accessibilité débutants 56/100
swiftlang/swift-java#949 ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 5/5 Plus d'une semaine Accessibilité débutants 35/100
swiftlang/swift-java#948 ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 3/5 1-2 jours Accessibilité débutants 53/100
swiftlang/swift-java#946 ·
Les mainteneurs répondent en général sous 1 jour
Toutes les issues de swiftlang/swift-java
Issues similaires
-
🎉 Add FiletorOuverteaddition
Difficulté 1/5 1-3 heures Accessibilité débutants 78/100
jaywcjlove/awesome-mac#4409 ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 74/100
abue-ammar/tinycast#1851 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour
-
area:ui good first issue priority:p2 type:bug
Difficulté 2/5 1-3 heures Accessibilité débutants 80/100
Les mainteneurs répondent en général sous 1 jour
-
area: build-and-ci possible-duplicate S3: minor
Difficulté 2/5 1-3 heures Accessibilité débutants 67/100
manaflow-ai/cmux#38889 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour
-
agent-ready area:skills
Difficulté 2/5 1-3 heures Accessibilité débutants 82/100
jmbarzee/temporal-architect#616 ·
Les mainteneurs répondent en général sous 1 jour