Front-end behaves poorly when receiving HTTP 429 (Too Many Requests)

Abierto
#6,365 1 comentario 0 reacciones 0 asignados Ver en GitHub

Los mantenedores suelen responder en 1 día

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
4/5
Tiempo estimado
3-5 días
Aptitud para principiantes
35/100
Tipo de issue
Error
Claridad
Bastante claro
Estado de actividad
Activo
Stack tecnológico
angular, typescript
Área
frontend

Línea de trabajo

The payload names no source files. Start by finding the existing HttpInterceptor implementations in the Angular app and how they handle error responses, then check where a 429 is currently treated as a hard failure. The expected behavior is a retry that honors Retry-After (falling back to X-Rate-Limit) and eventually completes the page's requests. Done means a test shows a 429 being retried with the delay and the page finishing, and the maintainers have agreed on where the backoff logic belongs.

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

Descripción

bug error handling needs analysis performance / caching

Describe the bug

To deal with aggressive bots, we tried adding a request-rate-limiting module (mod-evasive) to our Apache HTTPD. DSpace's behavior was worse and we backed out the change. It appears that DSpace's front end code treats HTTP 429 as a hard error and gives up, resulting in incomplete pages or perpetual marching-dots.

We were using v7.6.

To Reproduce

Steps to reproduce the behavior:

  1. Set up a rate limiting module in HTTPD, such as mod_evasive. Set a fairly low limit.
  2. Go to a page that makes a large number of requests.

Expected behavior

DSpace should back off and retry when it receives a 429 response, using the related headers (Retry-After, X-Rate-Limit) to set the backoff interval.

I note that we already have several HttpInterceptor implementations. This is a suggested method of adding backoff-and-retry, to ensure that all requests are handled and in the same way.

Lenguaje dominante
TypeScript
Estrellas
180
Forks
577
Merge medio
1 d 23 h
PR fusionados (30 d)
95

Preparar el entorno

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 DSpace/dspace-angular

Todos los issues de DSpace/dspace-angular

Issues similares

Más issues de TypeScript

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.