Depurando un bloqueo en JDK en 30 minutos con Fray: Un thriller de concurrencia

2025-06-07

Al agregar pruebas de integración para Fray, el autor encontró un bloqueo en el ScheduledThreadPoolExecutor de JDK provocado por un código aparentemente inofensivo. Aprovechando la reproducción determinista y la visualización de programación de Fray, la causa raíz se identificó rápidamente: en el estado SHUTDOWN, FutureTask.get puede bloquearse indefinidamente. Esto se debe a la ejecución entrelazada de los métodos schedule y shutdown, dejando las tareas en un estado de limbo. Fray proporcionó una visión clara de la interleavación de subprocesos, permitiendo la reproducción e informe de este error de concurrencia de JDK.

Leer más
Desarrollo Bloqueo

Un extraño error causado por el mecanismo de caché de Chrome: Un viaje de depuración sinuoso

2025-03-03

Al depurar un visor Parquet, el autor descubrió un fallo al acceder al almacenamiento S3. Tras una investigación, el problema no estaba en el código de la aplicación, sino en el mecanismo de caché de Chrome. Al manejar las solicitudes de rango, Chrome optimiza el caché, pero cuando el servidor devuelve un error 403, Chrome aún devuelve datos parciales, lo que provoca que la aplicación se bloquee. El autor informó del problema al equipo de Chromium, pero el equipo lo consideró una característica, no un error. Finalmente, el autor optó por solucionar el problema en OpenDAL. Esta historia nos recuerda que encontrar el límite de confianza correcto puede acelerar significativamente la depuración.

Leer más