Версия 17.7.0#

Что нового:

  • Исправлено выполнение Calcite-запросов с большим количеством значений в операторе IN: построение выражения больше не приводит к ошибке StackOverflowError в крупных списках аргументов.

  • CDC автоматически очищает поврежденные файлы состояния, чтобы после сбоя восстановить обработку без ручного удаления некорректного файла состояния (state-файла).

  • Снепшот можно размещать сразу по нескольким физическим путям с помощью extraSnapshotPaths. Дополнительно исправлено восстановление, когда путь индексов совпадает с одним из путей хранения.

  • Добавлены метрики пула TCP-соединений CommunicationSpi. Они позволяют отслеживать количество активных соединений и состояние пула соединений при разборе перегрузок и очередей.

  • Добавлена метрика количества обнаруженных взаимных блокировок транзакций. Метрика упрощает мониторинг роста deadlock-событий и помогает быстрее выявлять проблемные транзакционные сценарии.

  • Добавлена опциональная поддержка транзакций для SQL-запросов Calcite и ScanQuery. Запросы можно объединять с операциями типа «ключ-значение» в одной транзакции: они видят собственные незафиксированные изменения и скрывают их от других транзакций до фиксации. Режим включается с помощью TransactionConfiguration.setTxAwareQueriesEnabled(true). Поддержка IndexQuery в состав текущей реализации не вошла.

  • В плагин для работы с кеш-дампами ignite-dump-reader добавлен режим восстановления только отсутствующих кешей. Он сохраняет уже созданные приложением кеши, создает недостающие конфигурации из дампов и восстанавливает данные без перезаписи структуры существующих кешей. Записи с просроченным временем восстанавливаются с сохранением срока жизни, остальные данные загружаются пакетами.

  • Улучшена штатная остановка DataGrid: унифицированы поставочные start- и stop-скрипты, увеличено время ожидания корректного завершения узла, а перед вынужденным kill -9 активные записи JFR завершаются с помощью jcmd. Это снижает риск поврежденных JFR-файлов и ручной очистки после остановки.

  • Добавлены рекомендации по диагностике и ограничению роста RMI-/JMX-потоков от систем мониторинга. Описаны признаки накопления idle- и timeout-потоков, проверка потребления native-памяти и подбор ограничений соединений и времени их жизни без потери данных мониторинга.

  • В плагине безопасности добавлена настройка RMI-порта защищенного JMX-сервера. Фиксированный порт можно задать с помощью SecuredJmxServerConfiguration, что упрощает настройку межсетевых экранов и подключение систем мониторинга.

  • Повышена устойчивость SQL-индексов и B+ дерева: устранено повреждение дерева при конкурентных удалениях, добавлена защита при смене класса ключа и проверка типа поля аффинити-индекса. Документация дополнена настройкой строгой проверки SQL-схемы с помощью SqlConfiguration.validationEnabled.

  • На Grafana-дашборд добавлены метрики выполнения ComputeJob: активные, ожидающие, запущенные, завершенные, отмененные и отклоненные задания, а также время ожидания и выполнения. Метрики используют существующий MBean вычислительных заданий и не требуют доработки ядра DataGrid.

  • Шаблоны Zabbix переведены на Batch-JMX: несколько метрик теперь собираются одним пакетным запросом. Обновлены discovery-правила, макросы и важность триггеров, что уменьшает нагрузку мониторинга на DataGrid и риск отказов из-за большого количества JMX-обращений.

  • Исправлена очистка транзакционного контекста после явных commit() или rollback(). Завершенная или асинхронно откатившаяся транзакция больше не остается привязанной к потоку и не блокирует последующие неявные транзакции.

  • Повышена надежность ignite-dump-reader.sh и кеш-дампов: в дампе сохраняются данные, которые были загружены с помощью DataStreamer до перезапуска узла, кеши с nodeFilter корректно обрабатываются, а метаданные проверяются общим механизмом валидации снепшотов.

  • Уточнено поведение SQL-операции MERGE и очищена диагностика H2: корректный запрос с полем KEY больше не создает избыточное предупреждение парсера. Ограничения и рекомендуемый синтаксис MERGE зафиксированы в документации.

  • Подготовлены и проверены рекомендации по запуску толстого клиента DataGrid в Kubernetes с помощью Istio/Envoy egress. Описаны размещение клиентских сертификатов, сетевые настройки и тестовые сценарии подключения. При присоединении узлов DataGrid сохраняет их сертификаты для последующей проверки.

  • Расширено обнаружение потерянных партиций между остановкой и повторным запуском кластера. DataGrid сохраняет необходимое состояние и выявляет потерю данных после периода неактивности, вывод команды control.sh --cache distribution стал удобнее для диагностики.

  • Подготовлены тестовые шаблоны Zabbix для сбора метрик DataGrid с помощью http-metric-exporter. Доступны варианты для HTTP-агента и Zabbix-агента, которые позволяют проверить сбор метрик кеша без JMX-подключений к каждому MBean.

  • SQL-запросам теперь можно назначать пользовательский initiatorId. Метка передается тонким клиентом на сервер, отображается в представлениях активных и исторических запросов и добавляется в журнал, упрощая поиск медленных и проблемных запросов конкретного приложения.

  • Ускорена массовая обработка прикладных данных в распределенных кешах. Операции UPDATE и DELETE в Calcite выполняются на узлах хранения данных: каждый узел обрабатывает свою локальную часть записей, а инициатор получает суммарное количество изменений. Для эксплуатационных сценариев с помощью JDBC/SQLline добавлен режим local=true, который позволяет направлять запрос к данным конкретного узла.

  • Исключена необходимость указывать настройки realm в конфигурации толстых клиентов DataGrid.

  • Если пользователю необходимо сменить пароль, это явно описано в тексте ошибки.