CodeGenieApp / CodeGenieApp/serverless-express
After middleware transiently not completed before lambda ends
- Lingua principale
- JavaScript
- Stelle
- 5.3k
- Fork
- 676
- Metriche di merge delle PR
- Nessuna PR unita negli ultimi 30g
Descrizione
I recently ran into an issue where code that runs after a call to `res.json` in a given route is not guaranteed to be run before a lambda ends.
My use-case is as follows -
1. `PUT /posts/1`
2. handle database update in route
3. return updated record to client using `res.json`
4. as an _after_ middleware, send event specifying something was changed to AWS SQS
In a regular express server, I expect that the code in step 4 would complete successfully. However, I believe that serverless-express is ending the invocation of the lambda before that code has a chance to complete under certain circumstances.
To be a little more clear, here is a set of logs that represents a successful invocation -
```
START RequestId: d884deec-393a-40d2-93b3-f302d8f0c7fa Version: $LATEST
queuing change event
change event successfully queued
END RequestId: d884deec-393a-40d2-93b3-f302d8f0c7fa
```
and here is a set of logs that represents an unsuccessful invocation -
```
START RequestId: 0a1fc1e7-c8a8-40b0-bf80-076ce4c922e6 Version: $LATEST
queuing change event
END RequestId: 0a1fc1e7-c8a8-40b0-bf80-076ce4c922e6
```
As you can see, under some circumstances, the lambda invocation ends _before_ the process has a chance to complete writing to SQS.
Is it possible that this use-case is not well supported in serverless-express? Let me know if more information is needed or if I am obviously doing something wrong.
Guida per i contributori
Apri la guida per i contributori
Direzione di ricerca
Start by reviewing the serverless-express Lambda invocation lifecycle, especially how `res.json` interacts with after middleware and pending asynchronous work. Reproduce the reported route and AWS SQS logging scenario; done means the behavior is reliably handled or its support and limitations are clearly documented.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Valutazione
- Stack tecnologico
- aws, express, javascript, node.js
- Ambito
- api, backend, cloud
- Tipo di issue
- Bug
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Stato di attività
- Ferma
- Chiarezza
- Abbastanza chiara
- Idoneità per principianti
- 25/100