Обратите внимание - у вас во дворе снова встал экспедитор Семен и привез кубов пять гудрона.
Вам нужно синхронизировать одно узкое место - запись в writer. Можно в той же транзакции с записью вызвать и, собственно, функцию. А вы захватили в лок еще и всякое.