Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

version4:熔断器实现的小瑕疵

Abierto
#39 5 comentarios 2 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
5/5
Tiempo estimado
Más de una semana
Aptitud para principiantes
30/100
Tipo de issue
Error
Claridad
Bastante claro
Estado de actividad
Estancado
Stack tecnológico
java

Línea de trabajo

Start with version4/src/main/java/part1/Client/circuitBreaker/CircuitBreaker.java, focusing on recordFailure, recordSuccess, and the HALF_OPEN transitions. Review how requestCount, successCount, HALF_OPEN_SUCCESS_RATE, and the proposed minimum request count interact. Done requires an agreed state-transition policy for failures and early successes before implementation or a PR.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

这个类:CircuitBreaker.java

针对 HALF_OPEN 状态。分析下面两处目前的逻辑:

  1. recordFailure 方法:只要失败了,就要被打回 OPEN 状态。因此接下来的请求必须每个都执行成功,才能回到 CLOSED 状态,那么设置 HALF_OPEN_SUCCESS_RATE 即成功率似乎没有意义?
  2. recordSuccess 方法:如果 requestCount == 1 即第 1 次请求就成功了,那么成功率直接 100%,进而直接就会变成 CLOSED 状态,似乎有点武断。

个人观点:依然是 HALF_OPEN 状态。

  1. 无论接下来的请求成功与否,requestCount++。
  2. 如果失败了,recordFailure 不应该直接回到 OPEN,仅记录失败时间即可。
  3. 如果成功了,recordSuccess 记录 successCount,并且设置一个最小 requestCounnt 数量如 HALF_OPEN_MIN_REQUEST_COUNT,防止第 1 次请求成功就侥幸溜走,但是后续又大量失败造成不必要的压力(虽然依然可以触发熔断)。

PS:提 issue 的时候还未编码实现,只是发现逻辑似乎有点问题。以上是目前个人的直观思路,若分析无误后续会提 PR。

Lenguaje dominante
Java
Estrellas
694
Forks
165
Métricas de merge de PR
Sin PR fusionados en 30 d

Preparar el entorno

Este proyecto no incluye contenedor de desarrollo, Dockerfile ni guía de contribución, así que la configuración corre por tu cuenta: empieza por su README y consulta nuestra guía para la primera contribución para los pasos generales.

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de youngyangyang04/RPC-Java

Todos los issues de youngyangyang04/RPC-Java

Issues similares

Más issues de Java

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.