Feature: Allow QueuePoller to be interrupted from another thread

Abierto
#2,855 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
38/100
Tipo de issue
Nueva funcionalidad
Claridad
Bastante claro
Estado de actividad
Estancado
Stack tecnológico
aws, ruby
Área
backend, cloud

Línea de trabajo

Comienza localizando la implementación de QueuePoller y el punto de entrada del polling que espera las solicitudes SQS o ejecuta el callback de polling. Rastrea cómo se coordinan el polling y la ejecución del callback entre los hilos. Se considera completado cuando una llamada de detención aborta un polling pendiente, espera a que termine un callback activo y evita nuevas solicitudes de polling.

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

Descripción

feature-request
Describe the feature

There should be a way to cleanly stop/interrupt QueuePoller from another thread. It should immediately abort pending poll requests, but if the poll callback is executing, it should wait for that to complete before returning.

Use Case

I would to write code like Signal.trap("INT") { poller.stop }, so that I may use Ctrl+C to interrupt a daemon script that is polling SQS with QueuePoller.

Proposed Solution

The QueuePoller could have a method stop that can be invoked from any thread. If a call to poll is awaiting an SQS poll request, the request will be immediately aborted and poll will return normally. If poll is executing the callback when stop is invoked, then it will wait until the callback returns and then poll will return without making further poll requests.

Other Information

No response

Acknowledgements
  • I may be able to implement this feature request
  • This feature might incur a breaking change
SDK version used

3.1.0

Environment details (OS name and version, etc.)

macOS

Lenguaje dominante
Ruby
Estrellas
3.7k
Forks
1.2k
Merge medio
2 d 3 h
PR fusionados (30 d)
28

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 aws/aws-sdk-ruby

Todos los issues de aws/aws-sdk-ruby

Issues similares

Más issues de Ruby

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.