futriix/CHANGELOG.md

92 lines
9.7 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

> [!CAUTION]
> **ALPHA VERSION**<br><br>**Категорически не использовать в продакшене, так как это тестовая версия!!!**
# Изменения (по состоянию на 26.11.2025)
> [!NOTE]
**Улучшения и/или добавление функционала**
> * Сервер-приложений "falcot" был переименован в futriix, оболочка сервера приложений интегрирована в клиент субд futriix
> * Добавлена поддержка авторизации по протоколу "JWT" через хранимые процедуры
> * Добавлена поддержка выгрузка данных из субд в формате ".csv"
> * Операции с транзакциями были переименованы в лаконичный вид "begin", "commit", "rollaback"
> * Сокращено общее количество файлов с исходным кодом проекта с 19 до 14 за счёт объединения модулей имеющие сходный функционал
> * Добавлена поддержка WAL, timestamp
> * Добавлена поддержка протокола "Raft" в самом простом, базовом варианте (нет split-brain, нет кросс-датацентровых heartbeat)
> * Удален режим "Standalone" - в mod.rs изменен вывод режима работы только на "cluster"
> * Добавлена проверка кластера в sharding.rs - команды шардинга теперь требуют наличия как минимум 3 узлов
> * Добавлена команда cluster.rebalance в lua_shell.rs для выполнения полной ребалансировки
> * Расширен функционал команды "cluster.rebalance" таким образом, чтобы при её выполнении происходит ребалансировка не только созданных ранее шардов, но и созданных узлов в кластере. Расширена ребалансировка в sharding.rs - добавлена функция rebalance_nodes() для ребалансировки узлов кластера
> * Обновлен конфигурационный файл - удалены упоминания standalone режима
> [!IMPORTANT]
**Исправленные баги**
> * В Транзакциях - В методе "execute_command" для "CommitTransaction" отсутствует проверка на существование транзакции перед выполнением команд.
> * В Хранимых процедурах - В методе "CreateProcedure" процедуры сохраняются в общей хэш-таблице, но не в отдельной коллекции для лучшего управления.
> * В Индексах - В методе "create_document" проверка уникальности индексов выполняется после вставки документа, что может привести к нарушению уникальности.
> * В сервере приложений исправлена ошибка "соединение сброшено", при попытки открытия любого файла с поддерживаемым в сервере-приложений MIME-типом
> [!IMPORTANT]
> **Исправленные баги**
> * В транзакциях добавлена проверка существования перед коммитом
> * Хранимые процедуры теперь сохраняются в коллекции _procedures
> * Логика проверки индексов исправлена для предотвращения нарушений уникальности
> * Исправлены две ошибки в базовых компонентах СУБД (CRUD, транзакции, индексы):
> * Неправильная логика проверки уникальности в методе create_document
> * Ошибка в обработке процедур в execute_command
> * Исправлены три ошибки в компонентах шардирования(некорректная обработка Raft состояния), репликации и выгрузкой данных в формате "CSV"(неправильный расчет прогресса и обработка ошибок)
> [!NOTE]
**Улучшения и/или добавление функционала**
> * Заменён логотип проекта на новый
> [!IMPORTANT]
**Исправленные баги**
> * Исправлена ошибка условия (изменено значение с 2-х узлов на 3 узла) в реализации протокола Raft, согласно которому минимальное возможное количество узлов для запуска кластера составляло 2 узла
> * Произведён рефакторинг утилиты тестирования "integration_tests.rs"
> * Написан скрипт "urjenc.lua" производящий трансляцию URL в формате JSON в формат http
# Изменения (по состоянию на 04.12.2025)
> [!IMPORTANT]
**Исправленные баги**
> * Исправлена ошибка в методе query_documents: Не было реализации фильтрации документов.
> * Добавлен метод filter_documents для фильтрации по JSON фильтру
> * Исправлена ошибка в методе update_indexes: Неправильная работа с DashMap (отсутствовало value_mut())
> * Исправлен доступ к изменяемым записям DashMap
> * Исправлена ошибка в триггерах: Не было хранилища триггеров в Database
> * Добавлено поле triggers в структуру Database
> * Исправлена ошибка в транзакциях: Не было проверки существования триггеров перед выполнением
> * Добавлена проверка и выполнение триггеров в CRUD операциях
> [!IMPORTANT]
> * Исправлена ошибка в Raft логике: Не было таймера выборов для followers
> * Добавлен таймер выборов в run_replication_loop
> * Исправлена ошибка в проверке кластера: Жестко закодировано требование 3 узлов
> * Исправлена ошибка Добавлена конфигурация min_nodes_for_cluster
> * Исправлена ошибка в репликации: Не было проверки сформированности кластера перед репликацией
> * Добавлены проверки в replicate_command и send_heartbeat
> * Исправлена ошибка в миграции шардов: Не было проверки существования узлов
> * Добавлена проверка существования исходного и целевого узлов
> [!IMPORTANT]
> * Исправлена ошибка парсинга CSV: Неправильная обработка типов данных
> * Улучшен метод parse_field_value для правильного определения типов
> * Исправлена ошибка экспорта: Не было обработки вложенных JSON структур
> * Добавлен метод value_to_string для преобразования любых JSON значений
> * Исправлена ошибка в работе с путями: Использовались абсолютные пути из конфигурации
> * Добавлено использование относительных путей с созданием директорий
# Изменения (по состоянию на 12.12.2025)
> [!NOTE]
**Улучшения и/или добавление функционала**
> * Все вызовы функции println!() в серверных модулях были заменены на вызовы log_to_file() для записи в файл "futriix.log"
> * Вызовы функции eprintln!() для ошибок в серверных модулях также были заменены на log_to_file()
> * HTTP запросы теперь логируются в файл вместо вывода в консоль
> * Статистика HTTP сервера-приложений периодически записывается в лог каждые 60 секунд
> * Информация о старте сервера-приложений, создании директорий и инициализации компонентов теперь сохраняется в лог
# Изменения (по состоянию на 22.12.2025)
> [!IMPORTANT]
**Исправленные баги**
> * Исправлена ошибка цветового вывода служебных сообщений в терминале, теперь в любом терминале любой популярной графической оболочки Unix-like системы служебные сообщения при запуске futriix будут отображаться одинаково.