Skip to content

Latest commit

 

History

History
34 lines (20 loc) · 2.07 KB

README.md

File metadata and controls

34 lines (20 loc) · 2.07 KB

Para este ejercicio, revisar:

ejercicio

Estamos a cargo del backend de una empresa que copia el modelo de Bizum: permite hacer transferencias de dinero entre usuarios.

El código está escrito en python y se encuentra en el directorio backend.

Nuestro backend está escrito en sqlite y además no usa multithreading, así que su comportamiento debería ser fácil de analizar. Tenemos una cobertura de tests unitarios decente:

python3 -m unittest discover backend

Pese a que todo parece sencillo y normal, observamos de vez en cuando un comportamiento raro: hay quejas de usuarios que mandan dinero que nunca llega a su destino. El dinero sí que desaparece de la cuenta del usuario que lo envía y nos acusan de robárselo.

Hemos observado que el número de quejas de este tipo está muy correlado con los apagones de luz. Nuestro CTO decidió ahorrar costes, y nuestro server de backend está hospedado en un datacenter que regularmente sufre interrupciones en el suministro eléctrico.

Nuestro CTO también decidió ahorrar al contratar programadores, y la verdad es que ninguno sabe mucho de SQL pero a uno le suena que había un concepto llamado transacción que igual tenía que ver con el comportamiento observado.

Creemos que el problema se encuentra en la función savings_backend.transfer(conn, user_a, user_b, transfer_amount)

pregunta 1

¿Qué crees que está pasando?

pregunta 2

¿Cómo reescribirías la función savings_backend.transfer(conn, user_a, user_b, transfer_amount) para eliminar el bug sin tener que cambiar a un datacenter bueno?

Asegúrate de que sigue pasando los tests unitarios con python3 -m unittest discover backend