Prima di valutare il codice alla ricerca del problema, non capisco il perche' di questa "architettura" ...

In particolare non comprendo perche' passare alla funzione un oggetto connection.

Il path del db dovrebbe bastare.

Tenti di aprire una nuova connessione in modo esclusivo e controlli che la cosa possa essere fatta senza errori ...