redb 4.0.1: транзакции, изоляция кластеров и SQL-коннектор по канону Camel
Через неделю после мажора 4.0 вышла 4.0.1. Первые внедрения четвёртой версии принесли много обратной связи, и этот выпуск её отрабатывает: больших новых функций немного, зато заметно выросла надёжность под нагрузкой и в транзакциях. Все четыре продукта снова на одном номере, 77 пакетов.
redb.Core
Всё, что redb делает внутри общей транзакции .NET (TransactionScope), теперь фиксируется или откатывается вместе с ней, на MSSQL, PostgreSQL и SQLite.
Ленивые загрузки идут по соединению того, кто читает, без скрытых соединений.
Кэш Props держит нагрузку, а объекты по списку идентификаторов загружаются одним запросом.
Нативное расширение SQLite сверяет свою версию при старте и называет устаревший файл, если он попался.
redb.Route
Единица работы стала предсказуемой: сначала фиксируется база, потом брокеры, а повтор оборачивает транзакцию целиком. Необработанный сбой везде остаётся сбоем, обработка ошибок ведёт себя как в Apache Camel.
SQL-коннектор прошёл полное ревью: пакетная запись с откатом при первой ошибке, точки сохранения для частичной записи, строгое отображение результатов в классы, параметры в синтаксисе Camel.
Сбойный файл больше не тормозит всю пачку у файловых консюмеров, появился отложенный опрос.
LLM-агенты учитывают побочные эффекты инструментов, сохраняют рассуждения модели, считают бюджет и стоимость.
На обмене появилась личность вызывающего, общая для всех входящих транспортов.
redb.Tsak
Несколько кластеров на одной базе полностью изолированы: координация, состояние, очередь недоставленных, аудит и планировщик у каждого свои.
Модуль, который не смог стартовать, откатывается на работавшую версию, а перезагрузка одного пакета не задевает соседние модули контекста.
Дашборд снова обновляется сам и отправляет действия на узел нужного кластера.
redb.Identity
API управления больше не считает вызов доверенным только потому, что он пришёл изнутри процесса.
Одно DPoP-доказательство нельзя использовать дважды даже при одновременных запросах.
Транзакции маршрутов идут в общей транзакции, а недоступность базы больше не вызывает бесконечных повторов.
Что учесть при обновлении
Tsak: если на одной базе живут несколько кластеров, перед обновлением остановите все узлы этой базы.
Route: параметры в SQL-запросах переходят на синтаксис Camel, а единица работы и обработка ошибок стали строже. Это стоит проверить на своих маршрутах.
Pro по-прежнему бесплатен и не требует ключа. Полные списки изменений на redb.ru/releases, исходники на GitHub.
Если было полезно, ⭐ на GitHub поможет другим это найти.