ReCounters.java returns a counter without retries from create()
Les mainteneurs répondent en général sous 1 jour
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 1/5
- Temps estimé
- Moins d'une heure
- Accessibilité débutants
- 85/100
Piste de recherche
La modification se situe dans create dans src/main/java/co/stateful/retry/ReCounters.java, qui renvoie actuellement this.origin.create(name) sans enveloppe. Compare-la avec get, qui enveloppe déjà son résultat dans ReCounter, et enveloppe le résultat de create de la même façon. C'est terminé lorsque set et incrementAndGet sur un compteur nouvellement créé réessaient sur IOException, comme le font les compteurs obtenus via get. La consigne ne nomme aucun fichier de test ; vérifie donc s'il existe déjà un test de réessai que tu peux étendre.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
ReCounters.create("hits") returns the original counter without a ReCounter wrapper. Consequently, new ReSttc(sttc).counters().create("hits").set(10L) propagates the first IOException from set, even if a second attempt would succeed. The same counter obtained through get("hits") has retry protection. This contradicts ReSttc's promise to retry requests and also affects incrementAndGet on a newly created counter.
In src/main/java/co/stateful/retry/ReCounters.java, lines 58–60:
public Counter create(final String name) throws IOException {
return this.origin.create(name);
}
The annotation on create retries creation itself; it cannot intercept later method calls on the returned original counter. get already wraps its result in ReCounter on line 79, whose set and incrementAndGet methods carry @RetryOnFailure.
Wrap the result of create in the same decorator:
public Counter create(final String name) throws IOException {
return new ReCounter(this.origin.create(name));
}
This one-line change gives counters returned by both entry points the same retry behavior.
- Langage dominant
- Java
- Étoiles
- 10
- Forks
- 3
- Merge moyen
- 4 h 22 min
- PR mergées (30 j)
- 9
Préparer son environnement
Ce projet ne fournit ni conteneur de développement, ni Dockerfile, ni guide de contribution : l'installation est à votre charge. Commencez par son README, et consultez notre guide de la première contribution pour les étapes générales.
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 sttc/java-sdk
-
bug
Difficulté 2/5 1-3 heures Accessibilité débutants 82/100
sttc/java-sdk#145 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour
-
MkCounter.name() returns the class name instead of the counter name, and MkCounters drops the namePeut-être pris @yegor256 l’a pris il y a 9 jours. Ouvertebug
sttc/java-sdk#142 · 1 commentaire · 1 personne assignée ·
Les mainteneurs répondent en général sous 1 jour
-
Dependency DashboardOuvertewontfix
Difficulté 1/5 Moins d'une heure Accessibilité débutants 35/100
Les mainteneurs répondent en général sous 1 jour
Toutes les issues de sttc/java-sdk
Issues similaires
-
Run the CLI with JBangOuverteenhancement XS
Difficulté 2/5 1-3 heures Accessibilité débutants 68/100
nikolas-charalambidis/facepalm-maven-plugin#237 ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 62/100
Les mainteneurs répondent en général sous 1 jour
-
bug
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
dekobon/big-code-analysis#1913 ·
Les mainteneurs répondent en général sous 1 jour
-
bug
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
Les mainteneurs répondent en général sous 1 jour
-
bug:unconfirmed
Difficulté 2/5 1-3 heures Accessibilité débutants 68/100
UniversalMediaServer/UniversalMediaServer#6473 ·
Les mainteneurs répondent en général sous 1 jour