Версия 18.0.0#
Что нового:
Добавлена и расширена проверка DataGrid с современными сборщиками мусора. Исправлена проблема
free listпри работе на JDK 17 с ShenandoahGC без утверждений. Для ZGC проведены функциональные и нагрузочные проверки, проверена конфигурация JRE 17, исправлена ложная диагностика долгих GC-пауз и актуализированы рекомендации и шаблоны мониторинга.Расширена совместимость DataGrid с современными JDK: CI переведен на JDK 17, исправлены тестовые наборы, benchmark-сценарии и зависимости инструментов сборки, а генератор сериализаторов исправлен для формата имен классов JDK 21. Дополнительно устранена проблема
free listпри использовании ShenandoahGC.Интеграция DataGrid со Spring обновлена до версии 6.2.19, внесены связанные изменения совместимости с актуальным Spring/Jakarta-стеком, включая конфигурацию REST/Jetty и примеры Spring-интеграции.
Собрана методика диагностики долгих транзакций: поиск и фильтрация с помощью скрипта
control, проверка блокировки PME, просмотр транзакционных метрик и адресное завершение поxid. Документация теперь связывает раздел транзакций с актуальными средствами мониторинга и командой отмены.Обновлен набор сторонних библиотек DataGrid, включая Jackson, Log4j 2, ZooKeeper/Curator, Jetty и Servlet API, Commons Lang/Text, LZ4/Zstd, Calcite, Lucene и HSQLDB. Удалена устаревшая зависимость Commons Lang 2.x. Обновления сокращают использование старых и потенциально уязвимых версий без изменения прикладного API DataGrid.
Добавлена возможность конфигурации репликации с помощью Kafka с интеграцией с SecMan.
Для управления Rolling Upgrade добавлены команды
control.sh rolling-upgrade enable/disable. Также во время Rolling Upgrade разрешено выполнение распределенных внутренних процессов, чтобы служебные операции не блокировались самим режимом обновления.Документация метрик кеша дополнена показателями безопасности мультиЦОД:
IsCacheAffinityConfigurationMdcSafeотражает, гарантирует ли аффинити наличие копии каждой партиции в каждом ЦОД, аIsCachePartitionDistributionSafe— сохраняется ли эта гарантия при текущем распределении партиций.Управляющие запросы
control.shпереведены на Management Thread Pool. Административные команды продолжают обрабатываться, даже если пул клиентских операций занят пользовательской нагрузкой.Добавлено расширенное описание выпускаемых функциональностей в составе релиза.
Добавлены системные SQL-представления
CACHE_LOCKSиCACHE_EXPLICIT_LOCKSдля диагностики активных блокировок кеша. С помощью SQL можно увидеть удерживаемые и ожидающие явные/транзакционные-блокировки, ключи, узлов-участников, владельца, флаги и идентификаторы транзакций. ПредставлениеTRANSACTIONSдополнено полемORIGINATING_XID, чтобы сопоставлять части распределенной транзакции между узлами.Расширена диагностика распределенных H2 SQL-запросов:
map-фазы регистрируются среди выполняющихся запросов, в системном представленииSQL_QUERIESдоступен признакMAP_QUERY, а журналы содержат сведения об исходном узле и идентификаторахmap-запроса. Документация системного представления обновлена.Подтверждена совместимость работы DataGrid на SberJava.
SQL-запросы теперь всегда выполняются постранично: возможность отключить ленивый (lazy) режим удалена из JDBC, ODBC и API тонкого клиента. Это предотвращает загрузку всего набора результатов в память и снижает риск избыточного потребления памяти и длительных GC-пауз. Для управления объемом данных одной выборки используется
pageSize.Улучшена функциональность кеш-дампов:
DumpReaderумеет читать только выбранные кеши, дамп можно создавать только с конфигурациями кешей или с включением энергонезависимых структур данных, а проверка дампа корректно работает вне исходного узла. Дополнительно исправлены ошибки создания дампа со структурами данных volatile-памяти и несколькими путями хранения, улучшены диагностические логиDumpReaderза счет имен кеш-групп, а Dump Reader API переведен из экспериментального в стабильный публичный API.Повышена стабильность core-компонентов и тестового контура DataGrid: исправлены тесты для Discovery, ребалансировки WAL, развертывания, контрольных точек и мультиЦОД, восстановлена совместимость тестов и вспомогательных процессов с JDK 17. В ходе работ также устранены зависание остановки узла при создании снепшота, утечка Continuous Query после отключения тонкого клиента и ряд проблем конфигурации WAL и внутренних сообщений.
Метрики последней операции создания полного или инкрементального снепшота сохраняются на каждом серверном узле, поэтому результат и состояние операции доступны не только на узле-инициаторе.
Шаблоны для Zabbix теперь предоставляются в форматах JSON, YAML и XML.
Добавлена поддержка оконных функций SQL в движке Calcite:
выполнение оконного реляционного узла (
IgniteWindow/WindowNode) в конвейере выполнения Calcite;оконные агрегаты и функции
ROW_NUMBER,RANK,DENSE_RANK,PERCENT_RANK,CUME_DIST,LAG,LEAD,FIRST_VALUE,LAST_VALUE,NTILE,NTH_VALUE;OVERс фреймамиPARTITION BY,ORDER BY,ROWSиRANGE, включаяbounded-/unbounded-/current-row-варианты иinterval boundsдля сценариев даты и времени;планировочные правила, передача и выведение признаков, сериализация-десериализация RelJson для реляционных выражений для оконных функций.
Ограничение: смещение (offset) для LAG/LEAD должно быть не меньше
1.Добавлен новый шаблон мониторинга кластера с уведомлением о выходе последнего узла из топологии.
Изменены триггеры в соответствии с запросом.
Добавлен единый механизм передачи контекста операции (включая контекст безопасности) между узлами, внутренними пулами потоков и цепочками асинхронных вычислений. Контекстно-зависимые исполнители и futures-запросы сохраняют контекст при переключении потока, а асинхронные транзакционные операции больше не теряют контекст безопасности. Это снижает риск зависаний и ошибок
Failed to obtain a security contextпри выполнении распределенных и фоновых операций.Уточнены интерфейс и документация
control.sh --cache reset_lost_partitions: команда принимает имена кеш-групп, что соответствует фактической модели сброса потерянных партиций.CDC переведен из экспериментального в стабильный API. В руководстве по настройке памяти уточнены рекомендации для
-XX:MaxDirectMemorySize. REST HTTP при запуске проверяет наличие модуляignite-jsonи сообщает об ошибке конфигурации.