Кулешов разгоняет IT | AI

@akuleshov7_live · ai · Russian · active

Subscribers 4.1K tracking since 13 Nov
Reach per post (ERR) 110.6%4.5K avg views
Posting 1.3/day last 6 hours ago
Reactions per 1K views 22.1 😁 🔥 ❤
edited

Кейс для тренировки мозга, пока вы окончательно не отупели с ИИ. У вас есть три датацентра, между которыми распределён кластер PostgreSQL. В двух реплики, в третьем -- мастер. В JDBC URL перечислены все три адреса и стоит targetServerType=primary о котором я писал раньше: то есть драйвер всегда должен самостоятельно найти мастер. Теперь вы теряете один ДЦ (или вы теряете мастер и одна из реплик перебалансировалась и становится мастером). Мастер у вас есть, и он доступен. Казалось бы, стандартный железобетонный механизм, какие могут возникнуть проблемы? Подвох -- в переборе адресов и поиске мастера. В pgJDBC (и вероятно у других драйверов) connectTimeout не обновляется при переходе к следующему хосту. И в итоге, если у вас вот такого рода подключение, pg-C оказался мастером, а pg-B недоступен то драйвер просто не дойдет до primary и не сможет подключиться к базе: jdbc:postgresql://pg-A,pg-B,pg-C?targetServerType=primary&connectTimeout=10 > ДЦ A, реплика. Подключились, проверили роль. Потратили 50 мс. Идём дальше. > ДЦ B, недоступен. Ждём подключения 9950 мс. > ДЦ C, живой мастер. На TCP-подключение остаётся… (!) 1 мс. Буквально минимум, заданный в коде при исчерпании бюджета: remaining <= 0 ? 1 : (int) Math.min(remaining, Integer.MAX_VALUE); Драйвер до мастера доходит, он даже живой, но даёт ему настолько мало времени, что соединение может не установиться даже с исправным сервером. Получается, недоступная реплика перед мастером в списке адресов может сорвать подключение к живому мастеру. И, если это накладывается у вас на массовую потерю PODов и рестарты вашего бэкенда, то некоторые PODы имеют шанс не стартовать из-за проб. В очередной раз удивляюсь, какие неожиданные вещи могут происходить иногда в очень и очень обыденной функциональности. Морали у этой истории как и всегда не будет никакой. Оставляю на откуп читателя.

Views over time

02K4K29 Oct 14:5513 Nov 01:364.1K29 Oct 14:55: 0 views13 Nov 01:36: 4,100 views
Snapshots we took after posting.
WhenViews
29 Oct 2026, 14:550
13 Nov 2026, 01:364.1K

Who shared this post

Posts in other channels we index that link to this one. (Forwards with a hidden source can't be traced.)

Nobody yet.