<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Postgres on Osman Goni Nahid</title><link>https://osmangoninahid.github.io/tags/postgres/</link><description>Recent content in Postgres on Osman Goni Nahid</description><generator>Hugo</generator><language>en-US</language><lastBuildDate>Sat, 19 Sep 2026 00:00:00 +0400</lastBuildDate><atom:link href="https://osmangoninahid.github.io/tags/postgres/index.xml" rel="self" type="application/rss+xml"/><item><title>Ghost folders, a delete race, and a pool deadlock</title><link>https://osmangoninahid.github.io/kb-file-delete-race-and-pool-deadlock/</link><pubDate>Sat, 19 Sep 2026 00:00:00 +0400</pubDate><guid>https://osmangoninahid.github.io/kb-file-delete-race-and-pool-deadlock/</guid><description>&lt;p&gt;A teammate on our platform team shipped a fix I read closely, because it packs three concurrency lessons into one day of commits. The feature is a knowledge base: users upload files into folders, we extract text from each file, and we index that text into a vector store for search. It worked, but three things were wrong once real traffic hit it: deleting a file left empty folders behind, a delete racing an extraction could resurrect a folder with no database row, and a bulk upload could deadlock the database connection pool.&lt;/p&gt;</description></item></channel></rss>