Версия 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 и сообщает об ошибке конфигурации.