Encontré un interbloqueo en la extensión sqlite3 ruby y la soluciono aquí: intente con esto y vea si esto soluciona su problema.
https://github.com/dxj19831029/sqlite3-ruby
He abierto una solicitud de extracción, sin respuesta de ellos nunca más.
De todos modos, se espera una excepción ocupada como se describe en sqlite3 sí mismo.
Tenga en cuenta con esta condición: sqlite busy
The presence of a busy handler does not guarantee that it will be invoked when there is
lock contention. If SQLite determines that invoking the busy handler could result in a
deadlock, it will go ahead and return SQLITE_BUSY or SQLITE_IOERR_BLOCKED instead of
invoking the busy handler. Consider a scenario where one process is holding a read lock
that it is trying to promote to a reserved lock and a second process is holding a reserved
lock that it is trying to promote to an exclusive lock. The first process cannot proceed
because it is blocked by the second and the second process cannot proceed because it is
blocked by the first. If both processes invoke the busy handlers, neither will make any
progress. Therefore, SQLite returns SQLITE_BUSY for the first process, hoping that this
will induce the first process to release its read lock and allow the second process to
proceed.
Si cumple esta condición, el tiempo de espera ya no es válida. Para evitarlo, no coloque select inside begin/commit. o use un candado exclusivo para begin/commit.
Espero que esto ayude. bandera :)
qué versión de SQLite? –
Apuesto a que el host del entorno de producción usa NFS para el directorio de inicio del usuario de la aplicación, ¿no? – ybakos