futriix/CHANGELOG.md

9.7 KiB
Raw Permalink Blame History

Caution

ALPHA VERSION

Категорически не использовать в продакшене, так как это тестовая версия!!!

Изменения (по состоянию на 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 будут отображаться одинаково.