<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Home on Frane Jelavic</title><link>https://franejelavic.github.io/</link><description>Recent content in Home on Frane Jelavic</description><generator>Hugo</generator><language>en-US</language><lastBuildDate>Mon, 10 Aug 2026 17:00:00 +0200</lastBuildDate><atom:link href="https://franejelavic.github.io/index.xml" rel="self" type="application/rss+xml"/><item><title>Debezium and PostgreSQL in Production: Surviving Database Failover</title><link>https://franejelavic.github.io/writing/debezium-postgresql-production-lessons/</link><pubDate>Mon, 10 Aug 2026 17:00:00 +0200</pubDate><guid>https://franejelavic.github.io/writing/debezium-postgresql-production-lessons/</guid><description>&lt;p&gt;Getting Debezium to stream the first PostgreSQL change into Kafka is straightforward. Keeping that pipeline correct through database failover is where the interesting work begins.&lt;/p&gt;
&lt;p&gt;This post describes a failure mode we addressed while operating Debezium with PostgreSQL 16 and Patroni 3.3.1. After promoting a standby, Debezium needed a logical replication slot from which it could safely continue. Creating a new slot after promotion could start beyond Debezium’s last durable offset and introduce an event gap.
The central lesson was to treat PostgreSQL’s replication slot and Debezium’s Kafka Connect offset as parts of one distributed checkpoint.&lt;/p&gt;</description></item><item><title>About</title><link>https://franejelavic.github.io/about/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://franejelavic.github.io/about/</guid><description>&lt;p&gt;I’m Frane Jelavic. I enjoy learning how complex systems behave in production, particularly around databases, distributed systems, reliability, and performance. This site is where I write down and share what I learn.&lt;/p&gt;</description></item><item><title>Privacy</title><link>https://franejelavic.github.io/privacy/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://franejelavic.github.io/privacy/</guid><description>&lt;p&gt;This site is hosted by &lt;a href="https://docs.github.com/en/site-policy/privacy-policies/github-general-privacy-statement" target="_blank" rel="noopener noreferrer"&gt;GitHub Pages&lt;/a&gt;
, which may process technical information needed to serve the site.&lt;/p&gt;
&lt;p&gt;In production, this site uses &lt;a href="https://www.goatcounter.com/help/privacy" target="_blank" rel="noopener noreferrer"&gt;GoatCounter&lt;/a&gt;
 to understand aggregate visits. The integration does not set cookies or send custom identifying events. The analytics script is not loaded during local development.&lt;/p&gt;</description></item></channel></rss>