1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/mirrors-RethinkDB

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
NOTES.md 290 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
Отправлено 09.03.2025 06:50 0fe180a

Версия 2.4.4 (Ночь живущих мертвецов)

Исправления для автозаполнения в Data Explorer, исправления компиляции, а также незначительные изменения.

Изменения, нарушающие API

Отсутствуют.

Изменения

  • Сервер
    • Предотвращение несогласованного доступа к памяти и ошибок шины на Yöntem ARM 32-битной платформе (#7128)
  • Компиляция
    • Замена некорректного URL zlib на рабочий (#7121)
    • Исправление новых ошибок при включении (#7119)
    • Предотвращение использования устаревшей функции fstat64 (#7141)
  • Веб-интерфейс
    • Исправление автозаполнения в Data Explorer (#7111, #7113)
    • Обновление ссылки на документацию ReQL (#7112, #7114)

Контрибьюторы

  • @sg5506844
  • Сам Хьюз (@srh)

Версия 2.4.3 (Ночь живущих мертвецов)

Выпуск для Windows, сборка FreeBSD 13, поддержка цепочек сертификатов, отсутствие жалоб проверки обновлений.

Изменения, нарушающие API

Отсутствуют. Однако изменены некоторые выводы консоли.

Изменения ###* Сервер

  • Корректное завершение при невозможности удаления директории (#4647)

  • Улучшение справочной информации для опции --initial-password (#7064)

  • Добавление информации о машинной архитектуре и версии uname в вывод команды rethinkdb version (#7060)

  • Улучшение общего формата справочной информации (#7095)

  • Обновление версии OpenSSL (если она была скачана и статически связана) до 3.0.7 (#7099)

  • Поддержка цепочек сертификатов в конфигурации TLS (#6969)

  • Корректное генерирование версий (что устраняет раздражающую проверку обновлений) (#7100)

  • Компиляция

    • Успешное выполнение сборки для Windows (#7074, #7075, #7082, #7083)
    • Включение <time.h> в файлах, использующих функцию времени (#7091)
      • и добавление более явных включений для будущей совместимости (#7098)
    • Успешное выполнение сборки для FreeBSD (#7088, #7098)
    • Исключение некоторых случаев использования egrep (#7092)
  • Веб-интерфейс

    • Обновление jQuery до версии 3.6.1 (#6937)### Контрибьюторы ###
  • Марьяно Родригес (@MarianoRD)

  • Хун-те Лин (@hungte)

  • Антони Мроз (@MrBoombastic)

  • unx (@unxcepted)

  • Русел Бессик (@besworks)

  • Сам Хьюз (@srh)

  • Габор Бороц (@gabor-boros)

Особое спасибо Антони Мрозу и unx за успешное выполнение сборки для Windows.

Выпуск 2.4.2 (Ночь живущих мертвецов)

Релиз от 2022-04-24

Релиз для борьбы с битроутом, подготовки к будущему и исправления ошибок.

Совместимость

При переходе с RethinkDB 2.4.x никакой миграции не требуется. Если вы обновляетесь с более старой версии, рекомендуется прочитать заметки о выпуске RethinkDB 2.4.0.

Серверы RethinkDB версии 2.4.x не могут использоваться вместе с серверами RethinkDB версий 2.3.x или более ранними в одном кластере.

Изменения, нарушающие совместимость API

Команда ReQL r.js теперь использует QuickJS вместо V8 для выполнения. Поскольку версия V8 в RethinkDB была старой, это позволит использовать новые возможности JavaScript. Однако производительность и результаты выполнения вашего JavaScript-кода могут отличаться.

Важные изменения

(Номера задач указывают на багтрекер проекта https://github.com/rethinkdb/rethinkdb. Для полного списка изменений запустите команду git log v2.4.1..v2.4.2. )* Сервер

  • Исправлена ошибка переполнения 32-битного типа данных с индексами журнала Raft (#7036)
  • Делает запросы r.http использовать протокол HTTP/1.1 (#7012). Это позволяет обходить невозможность парсинга ответов HTTP/2.
  • Исправлена логика декодирования saslname (#7016)
  • Ограничение на количество потоков до 127 было отменено (#6895)
  • На новых версиях macOS делает ошибки проверки условий приводящими к завершению процесса (#7049)
  • На новых версиях сборок macOS при возникновении ошибок проверки условий корректно генерирует обратные трассировки (#7049)
  • Исправлена утечка памяти порядка O(1) (#7010)
  • Исправлены некоторые предупреждения и ошибки компиляции на новых версиях macOS (#7014)
  • Исправлены некоторые предупреждения компилятора GCC (разные коммиты)
  • Обновлено зависящее от curl библиотечное обеспечение до версии 7.82.0
  • Обновлено зависящее от jemalloc библиотечное обеспечение до версии 5.2.1
  • Обновлено зависящее от libidn библиотечное обеспечение до версии 1.38
  • Обновлено зависящее от OpenSSL библиотечное обеспечение (если скачивается) до версии 3.0.1
  • Устранены проблемы сборки для Apple M1
  • Компиляция
    • Разделены код веб-ресурсов и цепочка зависимостей его сборки в ветку old_admin (#6979)
    • Обновлены параметры создания пакетов для Ubuntu 21.10, 22.04 и Debian Bullseye (#7021)
    • Дополнительные обновления параметров создания пакетов для Debian (коммит da34c2f) * Добавлено требование зависимости установки для include-install (коммит 79c6857)
    • Добавлено явное указание скачанных зависимостей и динамическая связывка для сборки RPM (#7035)
    • Добавлен флаг RDB_NO_BACKTRACE для пользователей musl (#7052)
    • Предложено исправление для расширения совместимости Boost (#6934)
  • Веб-интерфейс

Большое спасибо следующим вкладчикам, чьи патчи вошли в выпуск сервера RethinkDB 2.4.2:

  • Руй Чжэн (@chenrui333)
  • Матиуш Шроетер (@Skywalker13)
  • Юнг-Хао Цзу (@zouyonghao)
  • Задча (@zadsza)
  • Лео Ариас (@elopio)

И много благодарностей следует сказать авторам коммитов, разработчикам альтернативной консоли администратора, отчитывающимся о багах пользователям и другим полезным людям, которые здесь не указаны.


Версия 2.4.1 (Ночь воскрешённых мертвецов)

Выпущена 13 августа 2020 года

Релиз с исправлением ошибок.

Совместимость

При переходе с версий RethinkDB 2.4.x перенос данных не требуется. Если вы обновляетесь с более ранней версии, пожалуйста, прочтите заметки по выпуску RethinkDB 2.4.0.

Серверы RethinkDB 2.4.0 нельзя смешивать с серверами, работающими с версией RethinkDB 2.3.x или ранее в одной и той же группе.

Изменения

(Номера задач указывают на багтрекер https://github.com/rethinkdb/rethinkdb.)

  • Сервер
    • Принудительное очистка кэша при выводе stdout не на TTY (#6819)
    • Исправление проблем стиля кода (#6842)
    • Исправление предупреждений о недостающих определениях присваивания в clang 10.0.0 (коммит 3ca96904)
  • Компиляция
    • Исправление сборки aarch64 в 2.4.x с использованием clang++ (коммит 01683d3e)
    • Исправление ошибок сборки Linux Mint 20 (коммит 328ebfb)
  • Веб-интерфейс
    • Возобновление работы проверки обновлений (#6879)
    • Разрешение дефисов в названиях таблиц и баз данных (#6908)# Версия 2.4.0 (Ночь воскрешённых мертвецов)

Выпущена 19 декабря 2019 года

RethinkDB 2.4 представляет собой новые возможности записи и несколько других улучшений.

Совместимость

Файлы данных с версии RethinkDB 1.16 будут автоматически переноситься. Как и при любом значительном выпуске, рекомендуется сделать резервную копию ваших данных перед выполнением обновления. Если вы обновляетесь с версии 2.2.x или раньше, пожалуйста, прочтите заметки по выпуску RethinkDB 2.3.0.

Серверы RethinkDB 2.4.0 нельзя смешивать с серверами, работающими с версией RethinkDB 2.3.x или более ранней в одной и той же группе.

Официальные драйверы

Кроме JavaScript, официальные драйверы теперь поддерживаются как отдельные проекты. Однако стоит отметить, что есть некоторое взаимодействие между командами управления RethinkDB, такими как rethinkdb dump, и драйвером Python. RethinkDB 2.4 содержит старые копии драйверов для обеспечения работоспособности тестирования с минимальными усилиями. Драйвер JavaScript всё ещё используется в веб-интерфейсе. Тем не менее, веб-ресурсы теперь предварительно генерируются в src/gen/web_assets.cc, делая наличие драйвера в репозитории строго необходимым. Вот ссылки на официальные драйверы:

Важные изменения

(Номера задач указывают на багтрекер https://github.com/rethinkdb/rethinkdb.)* ReQL

  • Добавлены команды set_write_hook и get_write_hook, которые позволяют привязывать к таблицам функции, модифицирующие поведение всех записей. (#5813)
  • Добавлены побитовые операторы для типов чисел: bit_and, bit_not, bit_or, bit_sal (или bit_shl), bit_sar, bit_shr, и bit_xor. (#6534)
  • Разрешено использование дефиса (-) в названиях таблиц. (#5537)
  • Пользователи могут получать права доступа к системным таблицам. (#5692)
  • Команда iso8601 теперь округляет значения, а не обрезает. (#6909)
  • Устранена ошибка обрезки миллисекунд во времени. (#6272)
  • Сервер
    • Устранена ошибка при смене лимита потока изменений inserted. (#6710)
    • Исключено использование DNS-разрешения при поиске адресов сетевых интерфейсов. (#6588)
    • Удалён проверочный механизм обновлений. (#6791)
    • Добавлена экспериментальная поддержка процессора arm64/aarch64. (#6438)
    • Добавлена экспериментальная поддержка платформы Power8/LE. (#6317)
    • Устранена гонка в кэше запросов. (#6564)
    • Исключено квадратичное увеличение размера сегментированного вектора. (#6385)
    • Устранены ошибки big-endian и добавлена поддержка s390x. (#6242)
  • Веб-интерфейс
    • Реализован новый виджет просмотра таблиц для исследования содержимого таблиц. (#6767)
    • Улучшена производительность страницы таблиц при работе с большим количеством баз данных. (#6790)
  • Компиляция
    • Веб-ресурсы теперь предварительно генерируются, что позволяет пользователям macOS компилировать их. (#6770) * Параллельизация сборки пакетов Debian. (#6780)
    • Устранена ошибка запуска внешних процессов. (#5572)
    • Добавлена возможность сборки вместо libressl. (#6671)
  • JavaScript Driver
    • Исключена мутация объекта, переданного в r.connect. (#6575)
  • Python Driver
  • Другие драйверы
    • Изменения опущены, так как они находятся в отдельных репозиториях. # Выпуск 2.3.6 (Фантазия)Выпущен 17 июля 2017 года

Релиз с исправлением ошибок

Примечания

Это первый выпуск RethinkDB с октября 2016 года. Проект RethinkDB присоединился к Linux Foundation. Этот выпуск предоставлен волонтерами команды Open RethinkDB. Исходный код RethinkDB теперь лицензирован под лицензией ASLv2.

Совместимость

На платформах 32-битного размера и на Windows (64 и 32 бита) серверы RethinkDB версии 2.3.6 не должны смешиваться с серверами, работающими с версией RethinkDB 2.3.3 или более ранними версиями в одном кластере. Это может привести к аварийному завершению работы сервера при использовании веб-интерфейса или доступе к системной таблице logs.

На платформах 64-битного размера серверы RethinkDB версии 2.3.6 могут смешиваться со старыми серверами RethinkDB версии 2.3.x в одном кластере. Мы рекомендуем временно использовать кластеры с различными версиями только для целей обновления.

При переходе с версии RethinkDB 2.3.x миграция не требуется. Если вы обновляетесь с более ранней версии, пожалуйста, прочтите примечания к выпуску RethinkDB 2.3.0.

Изменения ###* Сервер

  • Улучшена совместимость веб-интерфейса с Chrome 49 и Edge (#5878, #5426, #5300) — @danielmewes
  • Исправлено аварийное завершение работы, вызванное нежелательными соединениями (#6084) — @danielmewes
  • Исправлено аварийное завершение работы, вызванное восстановлением индексов с активными changefeeds (#6093) — @danielmewes
  • Размеры, передаваемые в sample, теперь ограничены размером массива (#6148) — @AtnNn
  • Исправлено аварийное завершение работы в реализации аргумента interleave в union (#6139) — @AtnNn
  • Исправлено аварийное завершение работы, вызванное eqJoin системных таблиц при использовании uuid как identifierFormat (#6108) — @nighelles
  • Исправлено поведение, которое приводило к неверным результатам при выполнении r.match('') (#6241) — @AtnNn
  • Различные исправления регрессий и улучшения кода от @srh и @VeXocide
  • Исправлен порядок аргументов в красиво отформатированных запросах в таблице задач (#6240) — @AtnNn
  • Упаковка
    • Исправление обнаружения версии glibc в скрипте упаковки RPM (#6229) — @gamename
    • Добавлены пакеты для Ubuntu Yakkety и Zesty (#6364) — @AtnNn---

Выпуск 2.3.5 (Фантазия)

Выпущен 26 августа 2016 года
Исправительный выпуск

Совместимость

На 32-битных платформах и на Windows (64 и 32 бита) серверы RethinkDB версии 2.3.5 не должны смешиваться с серверами, работающими на RethinkDB 2.3.3 или более ранних версиях в одной и той же группе. Такое смешивание может привести к аварийному завершению работы серверов при использовании веб-интерфейса или доступе к системной таблице logs.

На 64-битных платформах серверы RethinkDB версии 2.3.5 могут смешиваться со старыми серверами RethinkDB 2.3.x в одной и той же группе. Мы рекомендуем временно использовать смешанную версию группы только для целей обновления.

При переходе с RethinkDB 2.3.x миграция не требуется. Если вы обновляетесь с более ранней версии, пожалуйста, прочтите заметки выпуска RethinkDB 2.3.0.

release-notes-2.3.0: https://github.com/rethinkdb/rethinkdb/releases/tag/v2.3.0### Исправления ошибок ###

  • Сервер
    • Улучшена эффективность мусорного сборщика на диске для снижения риска чрезмерного увеличения размера файла (#5923)
    • Улучшена задержка запросов на чтение при сильной нагрузке на запись (#6072)
    • Исправлен баг, который мог привести к аварийному завершению работы сервера из-за ошибки дешифрования или прекращению выполнения запросов на чтение таблиц (#6033)
    • Исправлен баг в реализации опции interleave команды union, которая могла привести к генерации результатов в неправильном порядке (#6041)
    • Исправлен баг в обработке пакетов команд fold и многопоточной map, что могло привести к некорректному формированию результатов при применении этих команд к потоку изменений (#6007)
    • Исправлена проблема, которая могла привести к тому, что прокси будут продолжать отображаться в поле connected_to таблицы server_status даже после отключения (#5871)
    • Исправлена детекция недетерминированной конфликтной функции в команде insert (#5842)
    • Улучшено логическое правило выбора лидера в протоколе Raft для предотвращения бесконечных циклов выбора (#6038)
    • Улучшено время ответа при чтении из системной таблицы table_status (#4589)
    • Сервер больше не регистрирует сообщение Отклонён входящий соединение от сервера X, так как уже существует активное соединение при попытке подключиться к самому себе (#5456) * Исправлен баг, который мог привести к аварийному завершению работы сервера с ошибкой Uncaught exception при закрытии защищённого SSL/TLS соединения на определенной стадии подключения (#5904)
    • Исправлен баг в команде merge, который мог привести к сохранению объектов r.literal после применения merge и хранению их в таблице (#5977)
    • На Windows: Исправлен баг в команде r.http, который приводил к проблемам декодирования (#5924)
    • На Windows: Теперь RethinkDB эксклюзивно занимает TCP порты (#6008)
    • На Windows: Больше не выводится сообщение об ошибке в журнал при каждом неудачном попытке подключения (нет номера задачи)
    • Исправлена проблема сборки, которая приводила к невозможности найти системные библиотеки во время выполнения make на OpenSUSE (#2363)
    • JavaScript драйвер
      • Исправлена проверка nonce сервера в процессе рукопожатия соединения (#5916)
      • Аргумент host метода connect теперь является необязательным (#5846)
    • Java драйвер
      • Курсоры теперь реализуют интерфейс Closeable (#5468)
      • Исправлены запросы без ответа, выполняемые через runNoReply (#5938)
      • Исправлен баг в методе reconnect (#5841)
      • Исправлена утечка памяти в объекте Connection, вызванная некорректным освобождением закрытых курсоров (#5980)
    • Python драйвер
    • Тип цикла asyncio теперь доступен при использовании драйвера из файла .egg (#6043)
  • Драйвер для Ruby
    • Устранена проблема округления с объектами времени (#5825)

Участники ##Большое спасибо внешним участникам сообщества RethinkDB за помощь в выпуске RethinkDB 2.3.5.

  • Арве Сельебю (@arve0)
  • Бен Шарп (@bsharpe)
  • Брайан Чавез (@bchavez)
  • Дэн Вайчерт (@DWiechert)
  • Мбейнс (@mbains)
  • Цяньджин2013 (@QianJin2013)
  • Раман Гупта (@rocketraman)

Выпуск 2.3.4 (Fantasy)

Выпущен 2016-06-03

Выпуск с исправлением ошибок

Совместимость

На 32-битных платформах и на Windows (64 и 32 бита) серверы RethinkDB 2.3.4 не должны смешиваться с более старыми серверами RethinkDB 2.3.x в одном кластере. Это может привести к аварийному завершению работы сервера при использовании веб-интерфейса или доступе к системной таблице logs.

На 64-битных платформах серверы RethinkDB 2.3.4 могут смешиваться с более старыми серверами RethinkDB 2.3.x в одном кластере. Мы рекомендуем временно использовать кластеры с различными версиями только для целей обновления.

Перемещение данных не требуется при переходе от RethinkDB 2.3.x. Прочтите заметки о выпуске RethinkDB 2.3.0, если вы обновляетесь с более ранней версии.

Исправление ошибок

  • Сервер
    • Исправлено разделение памяти в реализации changefeed orderBy.limit (#5824)
    • Исправлена несовместимость в протоколе кластера между серверами Windows и Linux/OS X (#5819)
  • Python-драйвер
    • Исправлены различные ошибки в классе соединения для asyncio-циклов событий (#5795, #5816, #5820)## Участники ##

Большое спасибо внешним участникам сообщества RethinkDB за помощь в выпуске RethinkDB 2.3.4.

  • Ультрабаг (@ultrabug)

Выпуск 2.3.3 (Фантазия)

Выпущен 2016-06-01

Выпуск с исправлением ошибок

Совместимость

Серверы RethinkDB 2.3.3 могут смешиваться с более старыми серверами RethinkDB 2.3.x в одном кластере. Мы рекомендуем временно использовать кластеры с различными версиями только для целей обновления.

Перемещение данных не требуется при переходе от RethinkDB 2.3.x. Прочтите заметки о выпуске RethinkDB 2.3.0, если вы обновляетесь с более ранней версии.

Поддержка Windows

RethinkDB 2.3.0 был первым выпуском, включившим нативную совместимость с Windows. В RethinkDB 2.3.3 порт для Windows готов выйти из режима "бета"-тестирования. Теперь мы официально поддерживаем RethinkDB на платформе Windows вместе с нашей существующей поддержкой Linux и Mac OS X. Мы также расширяем наши услуги коммерческой поддержки, чтобы они включали RethinkDB на Windows. Хотя RethinkDB теперь стабилен на Windows, остаются ещё несколько ограничений, которые мы активно работаем над решением. Мы также пока не провели такого же уровня оптимизации производительности для версии Windows, как это было сделано для Linux и OS X.

[windows-tag]: https://github.com/rethinkdb/rethinkdb/issues?q=is%3Aopen+is%3Aissue+label%3Awindows### Исправление ошибок ###

  • Сервер
    • Устранена ошибка в orderBy.limit changefeeds, которая приводила к аварийному завершению сервера с сообщением Guarantee failed: [sub_it != real_added.end()] (#5561)
    • Улучшена производительность системной таблицы table_status, когда кластер находится под высокой нагрузкой (#5586)
    • Устранён конкурентный конфликт в логике соединения кластера, который мог вызывать периодические аварийные завершения с сообщением Guarantee failed: [refcount == 0] (#5783)
    • Устранён переполнение стека при выполнении запросов с очень большим количеством последовательно связанных команд (#5792)
    • Добавлена возможность использования команды fold на потоке changefeed (#5800)
    • Устранена ошибка вычисления времени работы сервера на Windows (#5388)
    • Устранены несовместимости исходного кода с GCC 6.0 (#5757)
  • JavaScript драйвер
    • Класс Connection теперь экспортирован из модуля JavaScript RethinkDB (#5758)
  • Java драйвер
    • Добавлены методы clientPort и clientAddress к классу Connection в Java драйвере (#5571)

Вкладчики

Большое спасибо внешним вкладчикам из сообщества RethinkDB за помощь в выпуске RethinkDB 2.3.3.

  • Гергели Немет (@gergelyke)

Выпуск 2.3.2 (Фантазия)

Выпущен 6 мая 2016 года

Выпуск исправляет ошибки

Совместимость

Серверы RethinkDB 2.3.2 могут быть смешаны с более старыми серверами RethinkDB 2.3.x в одном кластере. Мы рекомендуем использовать смешанный кластер только временно для целей обновления.При переходе с RethinkDB 2.3.x миграция не требуется. Если вы обновляетесь с более ранней версии, пожалуйста, прочитайте заметки о выпуске RethinkDB 2.3.0.

release-notes-2.3.0: https://github.com/rethinkdb/rethinkdb/releases/tag/v2.3.0### Исправление ошибок ###

  • Сервер

    • Устранена проблема с повреждением данных в логике создания вторичного индекса. Проблема могла возникнуть при создании вторичного индекса во время записи данных в таблицу и приводила к ошибке Guarantee failed: [token.has()], когда осуществлялся доступ к индексу (#5715)
    • Устранена проблема повреждения данных в бете Windows, которая могла возникнуть при увеличении размера таблицы более чем до 4 ГБ (#5719)
    • Устранён сбой программы с сообщением Guarantee failed: [num_subs == 0], который мог произойти при попытках одновременного запуска новых changefeeds при выключении сервера (#5708)
    • Устранён сбой программы с сообщением Guarantee failed: [!pair.first.inner.overlaps(region.inner)], который мог произойти при использовании changefeeds во время дешифрования (#5745)
    • Добавлена опция сервера --tls-min-protocol для снижения минимальной требуемой версии протокола TLS. Драйверы, использующие старую версию OpenSSL (например, на OS X), могут потребовать этой опции для подключения к защищенному TLS серверу RethinkDB (#5734)
    • Добавлено ограничение использования команды order_by с ненадёжной функцией предиката (#5548)
    • Устранён сбой сегментации по адресу 0x18, который мог произойти при низкой памяти на Linux (#5348)
    • Устранена проблема переполнения стека при парсинге очень глубоко вложенных объектов (#5601)
    • Улучшено логическое защитное механизм стека для предотвращения превышения лимита карты памяти системы.Эта проблема затрагивала серверы Linux при наличии большого количества одновременно выполняющихся запросов (#5591).
    • Сервер теперь собирается с версией jemalloc 4.1 на Linux (#5712).
    • Улучшено отображаемое сообщение при истечении времени выполнения запроса в Data Explorer (#5113).
    • Улучшено управление и отчётность об ошибках, связанных с OpenSSL (#5551).
    • Добавлена новая опция сервера --cluster-reconnect-timeout для контроля скорости, с которой RethinkDB прекращает попытки восстановления соединения с ранее подключенным сервером (#5701).
    • Устранён конкурентный конфликт при записи в системные таблицы, что могло привести к некорректному результату обновления (#5711).
    • Теперь можно использовать пользовательскую функцию разрешения конфликта для команды insert, чтобы удалить конфликтный документ, вернув null (#5713).
    • Улучшено сообщение об ошибке при открытии changefeed на запросе orderBy.limit с дополнительными преобразованиями (#5721).
    • Устранена несовместимость с Safari, которая могла вызвать нежелательные перезагрузки страниц в веб-интерфейсе (#3983).
  • Драйвер Python

    • Теперь опция ssl драйвера Python поддерживает более старые версии Python от Yöntem 2.7 до текущей (#4815).
    • Добавлен режим REPL, который можно запустить через новый командный вызов python -m rethinkdb (#5147).
    • Добавлена кэшировка токенов аутентификации PBKDF2 для снижения затрат при повторном открытии соединений (#5614). * Переработана логика загрузки скриптов импорта и экспорта данных в драйвер (#4970)
    • Улучшено сообщение об ошибке, которое отображается при попытке подключения к серверу предыдущих версий 2.3.0 (#5678)
    • Исправлена несовместимость с Python 3 в скрипте rethinkdb dump, которая приводила к ошибкам типа "name 'file' is not defined" (#5694)
    • Исправлена несовместимость с Python 3.3 в коде протокола рукопожатия (#5742)

Участники ##Большое спасибо внешним участникам сообщества RethinkDB за помощь в выпуске RethinkDB 2.3.2. В алфавитном порядке:

  • Matt Broadstone (@mbroadst)
  • Saad Abdullah (@saadqc)

Выпуск 2.3.1 (Fantasy)

Выпущен 22 апреля 2016 года

Выпуск с исправлением ошибок

Совместимость

Серверы RethinkDB 2.3.1 могут использоваться вместе с серверами RethinkDB 2.3.0 в одном кластере. Рекомендуется временно использовать кластеры смешанной версии только для целей обновления.

Перемещение данных при переходе от RethinkDB 2.3.0 не требуется. Если вы обновляетесь с более старой версии, пожалуйста, прочтите заметки о выпуске RethinkDB 2.3.0.

Поддерживаемые системы

Теперь мы предоставляем пакеты для Ubuntu 16.04 (Xenial Xerus).

Команда r.http больше не поддерживает получение данных из шифрованных ресурсов https на OS X 10.7 и 10.8 (#5681). Новые выпуски OS X не затронуты этой проблемой.### Исправление ошибок ###

  • Сервер
    • Устранена проблема с ошибкой сегментации, вызванной выполнением пакетного INSERT с несколькими повторяющимися значениями одного и того же первичного ключа (#5683)
    • Устранена незахватываемая ошибка в функции hostname_to_ips, которая могла возникнуть при подключении сервера с недостижимым адресом (#5629)
    • Устранена ошибка запроса при открытии changefeed с опцией squash: true для системной таблицы (#5644)
    • Устранён сбой, который происходил при соединении серверов с одинаковым именем сервера (#5643)
    • Устранена проблема генератора случайных чисел, которая препятствовала правильному перемешиванию начальных имён серверов (#5655)
    • Устранена ошибка, которая приводила к некорректному освобождению памяти после удаления таблицы или её реплик с сервера (#5666)
    • Устранена ошибка, которая приводила к зависанию сервера при использовании команды eqJoin после команды changes (#5696)
    • Устранена проблема, связанная с опцией returnChanges: "always" команды INSERT, которая пропускала некоторые типы ошибок в результате команды changes (#5366)
    • Устранён сбой на OS X 10.7 при использовании .dmg uninstaller (#5671)
    • .dmg uninstaller для OS X теперь подписывается (#5615)
    • Устранён граничный случай обработки ошибок для автоматически сгенерированных первичных ключей при вставке в системную таблицу (#5691)
    • Теперь можно скомпилировать RethinkDB с помощью GCC 5.3 (#5635)
  • JavaScript драйвер * Переименовано опцию username команды r.connect в user. Опция username всё ещё поддерживается для обратной совместимости с существующим кодом (#5659)
    • Улучшено сообщение об ошибке, которое показывается при подключении с помощью драйвера 2.3 к более старому серверу (#5667)
  • Python драйвер
    • Улучшено сообщение об ошибке, которое выводится при попытке подключения к серверу с неверным паролем (#5624)
    • Устранена ошибка «глобальное имя 'options' не определено» в скрипте rethinkdb import (#5637)
    • Устранена несовместимость Python 3 в скрипте rethinkdb restore (#5647)
  • Java драйвер
    • Реализована опция времени ожидания для getNext (#5603)
    • Произошедшая потеря соединения с сервером во время работы changefeed теперь правильно приводит к ошибке (#5660)
    • Драйвер теперь кэширует аутентификационные nonce для ускорения установки соединения (#5614)

Участники ##Большое спасибо внешним участникам сообщества RethinkDB за помощь в выпуске RethinkDB 2.3.1. В алфавитном порядке:

  • Brian Chavez (@bchavez)
  • Neil Hanlon (@NeilHanlon)
  • Jason Soares (@JasonSoares)
  • Magnus Lundgren (@iorlas1)

Выпуск 2.3.0 (Фантазия)

Выпущен 6 апреля 2016 года

RethinkDB 2.3 представляет систему пользователей и прав доступа, шифрование соединений с помощью TLS, бета-версию для Windows и множество улучшений языка запросов ReQL. Улучшения ReQL включают до 10-кратное повышение производительности для распределённых соединений и новую команду fold, которая позволяет реализовать эффективные состоятельные преобразования потока данных.

Чтобы узнать больше деталей, прочитайте пост в блоге.

Совместимость

Файлы данных от версий RethinkDB 1.16 и выше будут автоматически мигрированы. Как и при любом значительном выпуске, рекомендуется сделать резервную копию ваших данных перед обновлением.

Если вы обновляетесь с версий RethinkDB 1.15.x или более ранних, пожалуйста, ознакомьтесь с руководством по миграции данных, чтобы узнать необходимые шаги миграции.

Серверы RethinkDB 2.3.0 не могут быть смешаны с серверами, работающими с версиями RethinkDB 2.2.x или ранее, в одном кластере.

Управление кластерами с паролем ###При миграции кластера из предыдущих версий RethinkDB и наличии установленной auth_key, эта auth_key становится паролем для пользователя "admin". Если auth_key не установлена, во время миграции автоматически создаётся новый пользователь "admin" с пустым паролем.RethinkDB 2.3 добавляет новое ограничение при добавлении сервера в существующий кластер. Если в существующем кластере установлен непустой пароль для пользователя "admin", новый сервер может присоединиться к кластеру только если он также имеет установленный пароль. Это сделано для предотвращения необеспеченных состояний во время процесса присоединения. Можно использовать новую опцию командной строки --initial-password auto для присоединения нового сервера или прокси к кластеру с паролем. Опция --initial-password auto назначает случайный пароль "admin" при запуске, который затем заменяется предварительно настроенным паролем кластера после завершения процесса присоединения.### Изменения, нарушающие совместимость API

  • Команда eqJoin больше не возвращает результаты в порядке первого входного параметра. Вы можете передать новую опцию {ordered: true}, чтобы восстановить прежнее поведение.

  • Операции с географическими многоиндексами теперь могут выдавать повторяющиеся результаты, если несколько ключей индекса одного документа соответствуют запросу. Чтобы восстановить прежнее поведение, вы можете добавить команду .distinct().

  • Отслеживание изменений (changefeeds) для запросов вида orderBy(...).limit(...).filter(...) больше не допустимо. Предыдущие версии RethinkDB позволяли создание таких отслеживаний изменений, но не обеспечивали правильной семантики.

  • Команды r.wait, r.rebalance и r.reconfigure больше нельзя вызывать в глобальной области r. Ранее эти команды по умолчанию применялись к базе данных "test". Теперь они должны явно вызываться либо на объекте базы данных, либо на объекте таблицы. Например: r.db("test").wait(), r.db("test").rebalance() и так далее.

  • Опция {returnChanges: "always"} для команды insert теперь добавляет документы со свойством {error: "..."} в массив changes, если вставка некоторых документов проваливается. Прежде проваленные документы просто пропускались из результата changes.

  • Специальные значения r.minval и r.maxval больше недопустимы как возвращаемые значения вторичных индексных функций.### Устаревшие API ###

  • JavaScript функция each устарела в пользу eachAsync. В будущих выпусках each будет переопределен как псевдоним для eachAsync. Мы рекомендуем преобразовать существующие вызовы формы .each(function(err, row) {}) в эквивалент eachAsync формы .eachAsync(function(row) {}, function(err) {}).

  • Опция auth_key для connect в официальных драйверах устарела в пользу новых опций user и password. На данный момент предоставленное значение auth_key драйверами преобразуется в пароль для пользователя "admin", поэтому существующий код продолжает работать.

Дисконтинуированные пакеты

Мы больше не предоставляем пакеты для старой стабильной дистрибутивной системы Debian 7.x (Wheezy).

При компиляции из исходников минимальная требуемая версия компилятора GCC — 4.7.4.## Новые возможности ##

  • Добавлена поддержка пользовательских аккаунтов, аутентификации пользователей и прав доступа. Пользователи могут быть настроены через системную таблицу "users". Права доступа можно настроить как через новую системную таблицу "permissions", так и с помощью команды grant. (#4519)

  • Подключения драйвера, внутрикластерные и веб-интерфейсы теперь могут быть настроены для использования шифрования TLS. Для подключений драйвера и внутрикластерных соединений сервер дополнительно поддерживает проверку сертификатов. (Только Linux и OS X, #5381)

  • Добавлена бета-поддержка запуска RethinkDB на Windows (только 64-битные системы, начиная с Windows 7). (#1100)

  • Добавлена команда fold, которая позволяет выполнять состоятельные преобразования на отсортированных потоках данных. (#3736)

  • Добавлена поддержка changefeeds для запросов getIntersecting. (#4777)## Улучшения ##

  • Сервер

    • Опция --bind теперь может быть указана отдельно для веб-интерфейса (--bind-http), порта клиента (--bind-driver) и порта кластера (--bind-cluster). (#5467)
    • Серверы RethinkDB теперь выявляют недотранзитивную связность в кластере и генерируют ошибку "non_transitive_error" в системной таблице "current_issues", когда обнаруживают проблему. Кроме того, система таблица "server_status" теперь содержит информацию о соединении каждого сервера в новом поле connected_to. (#4936)
    • Добавлен новый тип проблемы "memory_error" в системной таблице "current_issues", который отображается при запуске процесса RethinkDB с использованием своп-пространства. (только Linux) (#1023)
    • Уменьшено количество сценариев, требующих миграции индексов после обновления RethinkDB. Индексы больше не требуют миграции, если они не используют пользовательскую функцию индекса. (#5175)
    • Добавлена поддержка сборки RethinkDB на Alpine Linux. (#4437)
    • Прокси-серверы теперь выводят свой идентификатор сервера при старте. (#5515)
    • Увеличен максимальный размер запроса с 64 МБ до 128 МБ. (#4529)
    • Увеличен максимальный номер шардов для таблицы с 32 до 64. (#5311)
    • Реализовано опциональное значение --join-delay для лучшей работы в условиях нестабильной сети. (#5319)
    • Добавлена команда командной строки --initial-password для обеспечения безопасности процесса добавления новых серверов в защищённый паролем кластер. (#5490) * Реализован новый протокол взаимодействия клиента для поддержки аутентификации пользователя. (#5406)* ReQL
    • Добавлена опция interleave к команде union для объединения потоков в определённом порядке. (#5090)
    • Добавлена поддержка пользовательских функций разрешения конфликтов к команде insert. (#3753)
    • Команда insert теперь возвращает изменения в том же порядке, что и передача опции returnChanges. (#5041)
    • Добавлена опция includeOffsets к команде changes для получения позиций изменённых элементов в orderBy.limit потоках изменений. (#5334)
    • Добавлена опция includeTypes к команде changes, которая добавляет поле type ко всем результатам потока изменений. (#5188)
    • Обеспечено последовательное поведение географических многоиндексов с негеографическими многоиндексами, если документ индексируется под несколькими ключами. Команды getIntersecting и getNearest теперь возвращают дубликаты, если несколько ключей индекса совпадают. (#3351)
  • Возможности

    • Команды and, or и getAll теперь могут вызываться с нулевым количеством аргументов. (#4696, #2588)
    • Запрещено вызывать команды r.wait, r.rebalance и r.reconfigure в глобальном контексте, чтобы избежать путаницы семантики. (#4382)
    • Команды count и slice теперь можно применять к строкам. (#4227, #4228)
    • Улучшена ошибка сообщения от команды reconfigure, если слишком много серверов недоступны. (#5267)
    • Улучшены ошибочные сообщения для недопустимых спецификаций часовых поясов. (#1280)
  • Выполнение * Реализовано эффективное пакетирование для распределенных соединений с использованием команды eqJoin. (#5115)

    • Оптимизирована команда tableCreate для более быстрого выполнения. (#4746)
    • Уменьшено процессорное потребление вызова функций ReQL и вычисления термов. (нет номера задачи)
  • Веб-интерфейс

    • Веб-интерфейс теперь использует команду conn.server() для получения информации о подключенном сервере. (#5059)
  • Все драйверы

    • Реализован новый протокол рукопожатия и добавлены опции user и password метода connect для возможности аутентификации пользователя. (#5458, #5459, #5460, #5461)
    • Добавлены функции clientPort и clientAddress объектов подключения в драйверах JavaScript, Python и Ruby. (#4796)
  • Драйвер JavaScript

    • Добавлены новые варианты функции cursor.eachAsync. (#5056)
    • Добавлена опция concurrency для cursor.eachAsync. (#5529)
    • Команды r.min, r.max, r.sum, r.avg и r.distinct теперь принимают массив как аргумент. (#4594)
  • Драйвер Python

    • Добавлен тип цикла "gevent" в драйвер Python. (#4433)
    • Теперь при печати объекта курсора выводятся первые несколько результатов. (#5331)
    • Зависимость от tar для команд rethinkdb restore и rethinkdb dump удалена. (#5399)
    • Добавлена опция --tls-cert для команд rethinkdb import, rethinkdb export, rethinkdb dump, rethinkdb restore и rethinkdb index-rebuild для возможности TLS-соединений. (#5330) * Добавлены опции --password и --password-file для команд rethinkdb import, rethinkdb export, rethinkdb dump, rethinkdb restore и rethinkdb index-rebuild для подключения к защищённым паролями серверам. (#5464)
    • Добавлена опция --format ndjson для команды rethinkdb export, которая позволяет экспортировать таблицы в формате JSON с новой строки. (#5101)
    • Теперь команды rethinkdb dump, rethinkdb restore и rethinkdb import могут записывать данные в stdout и загружать данные из stdin соответственно. (#5525, #3838)
    • Команда r.min(), r.max(), r.sum(), r.avg() и r.distinct() теперь принимает массив в качестве аргумента (#5494)
  • Java-драйвер:

    • Упрощено публикование драйвера на локальных репозиториях Ivy и Maven. (#5054)## Исправленные ошибки ##* Сервер
    • Устранена ошибка с падением сервера при получении сообщения [cmp != 0], когда выполняются запросы с значениями r.minval или r.maxval внутри массива. (#5542)
    • Устранён дефект, который приводил к оставлению сиротских таблиц после удаления базы данных через системную таблицу "db_config". (#4465)
    • Устранена ошибка падения сервера при попытке восстановления резервной копии из слишком новой версии RethinkDB. (#5104)
    • Устранена ошибка миграции данных из RethinkDB 2.0.x и более ранних версий. (#5570)
    • Устранено конкурентное состояние, которое вызывало падение сервера с сообщением Guarantee failed: [! pair.first.inner.overlaps(region.inner)] при балансировке таблицы одновременно с открытием новых changefeeds. (#5576)
    • Устранён дефект, который позволял заданиям backfill оставаться в системной таблице jobs даже после завершения. (#5223)
  • ReQL

    • Запрещены changefeeds для запросов формы orderBy(...).limit(...).filter(...), так как они не предоставляют правильные семантики. (#5325)
    • Преобразование двоичного значения в строковое значение теперь правильно проверяет наличие недопустимых символов в строке. (#5536)
  • Веб-интерфейс

    • Устранена ошибка "Запрос на получение данных неудачен", возникающая при наличии сиротской таблицы, чья база данных была удалена. (#4985)
    • Устранена неправильная отображаемая максимальная количество шардов для кластеров с более чем 32 серверами. (#5311) * Устранена пустая строка "Connected to" при доступе к веб-интерфейсу через прокси-сервер RethinkDB. (#3182)
  • Драйвер JavaScript

    • Устранена ошибка поведения метода cursor.close при наличии оставшихся элементов в буфере. (#5432)
  • Драйвер Python

    • Устранена ошибка в функции __str__ объектов курсора. (#5567)
    • Устранена обработка ошибки, генерируемой для oversized запросов. (#4771)
  • Драйвер Ruby

    • Устранена обработка ошибки, генерируемой для oversized запросов. (#4771)## Контрибьюторы ##

Большое спасибо внешним участникам сообщества RethinkDB за помощь в выпуске RethinkDB 2.3. В алфавитном порядке:

  • Аарон Розен (@aaronorosen)
  • @crockpotveggies
  • Даниэль Хокацакриссон (@dhozac)
  • Игорь Луканин (@igorlukanin)
  • @janisz
  • Джошуа Бронсон (@jab)
  • Джош Хаун (@jlhawn)
  • Джош Смит (@Qinusty)
  • Маршалл Коттрелл (@marshall007)
  • Майк Минтц (@mikemintz)
  • Никлас Хамбючен (@nh2)
  • Цянь Цин (@QianJin2013)
  • Тейлор Мюрффи (@tayloramurphy)
  • Владислав Ботвин (@darrrk)
  • Адам Грандквист (@grandquista)
  • @bakape
  • Бернардо Сантаана (@bsantanas)
  • Бхишам Персуа (@bheesham)
  • Кристофер Кадье (@ccadieux)
  • Чак Бассетт (@chuckSMASH)
  • Диней Ванкхеде (@dineyw23)
  • Хайнц Фидлер (@heinzf)
  • Марк Ю (@vafada)
  • Майк Крамлофф (@mjkrumlauf)
  • Николас Сантаанжело (@NicoSantangelo)
  • Самуэль Волин (@untra)
  • Стефан де Конинг (@skinkie)
  • Томмазо (@raspo)

Версия 2.2.6 (Модерн Таймс)

Выпущена 25 марта 2016 года

Релиз с исправлением ошибок

Совместимость

Серверы RethinkDB версии 2.2.6 нельзя смешивать с серверами, работающими с RethinkDB 2.2.1 или более ранними версиями в одной и той же группе.

Перемещение между версиями не требует миграции при переходе от RethinkDB 2.2.0 или выше. Для перехода с более старых версий прочтите заметки о выпуске RethinkDB 2.2.0.

Исправление ошибок ###* Исправлены две ошибки в коде changefeed, вызывавшие аварийное завершение работы с сообщением об ошибке "недостижимый код" в некоторых крайних случаях (#5438, #5535)

  • Исправлено сообщение об ошибке SANITY CHECK FAILED: [d.has()], возникающее при использовании команды map на комбинации пустых и непустых входных потоков (#5481)
  • Результат выполнения conn.server() теперь включает поле proxy (#5485)
  • Изменено поведение соединения прокси-серверов для предотвращения повторного вывода предупреждений типа "отклонено соединение от сервера X, так как уже существует активное соединение" (#5456)
  • Python-драйвер теперь поддерживает подключение к серверу через IPv6 даже при использовании асинхронного API (asyncio, tornado, twisted) (#5445)
  • Исправлена несовместимость с некоторыми версиями Python, которая делала невозможной загрузку модуля backports.ssl_match_hostname (#5470)
  • Исправлена утечка ресурсов в методе cursor.close() драйвера Java (#5448)
  • Курсоры в драйвере Java теперь реализуют интерфейс Closeable (#5468)
  • Исправлена оставшаяся несовместимость с Internet Explorer 10 в драйвере JavaScript (#5499)## Вкладчики ##

Большое спасибо внешним вкладчикам из сообщества RethinkDB за помощь в выпуске RethinkDB 2.2.6. В алфавитном порядке:

  • Пауло Пирес (@pires)
  • Майк Минц (@mikemintz)

Версия 2.2.5 (Модерн Таймс)

Выпущена 23 февраля 2016 года

Релиз с исправлением ошибок

Совместимость

Серверы RethinkDB версии 2.2.5 нельзя смешивать с серверами, работающими с RethinkDB 2.2.1 или более ранними версиями в одной и той же группе.

Перемещение между версиями не требует миграции при переходе от RethinkDB 2.2.0 или выше. Для перехода с более старых версий прочтите заметки о выпуске RethinkDB 2.2.0.

Улучшения

  • Улучшена эффективность работы процессора запросов orderBy для вторичных индексов (#5280)
  • Улучшена эффективность географических пространственных запросов для индексов с точечными значениями (#5411)
  • Подключения в Java-драйвере теперь поточно-безопасны (#5166)
  • Драйвер JavaScript теперь совместим с Internet Explorer 10 (#5067)
  • Ruby-драйвер теперь поддерживает вложенные псевдоформы (#5373)

Исправленные ошибки ###* Устранена проблема, вызывавшая невозможность соединения серверов и/или правильной повторной установки соединения (#2755)

  • Устранена проблема, вызывавшая временное отключение серверов при выполнении запросов на вторичные индексы с длинными ключами индексов (#5280)
  • Теперь ChangeFeeds всегда отправляют события для документов, входящих в или выходящих из диапазона ChangeFeeds (#5205)
  • Устранена ошибка в Java-драйвере, вызывавшая исключения NullPointerException (#5355)
  • Устранена ошибка в функции isFeed() в Java-драйвере (#5390, #5400)
  • Команда r.now теперь правильно выполняет проверку арности (#5405)
  • Устранено несоответствие теста в тесте unit.ClusteringBranch (#5182)## Вкладчики ##

Большое спасибо внешним вкладчикам сообщества RethinkDB за помощь в выпуске RethinkDB 2.2.5. В алфавитном порядке:

  • Mike Mintz (@mikemintz)
  • Paulo Pires (@pires)
  • Nicolas Viennot (@nviennot)
  • Brian Chavez (@bchavez)

Выпуск 2.2.4 (Модерн Таймс)

Выпущен 1 февраля 2016 года

Этот выпуск исправляет критическую ошибку в системе кластеризации RethinkDB, которая может привести к потере данных и некорректным результатам запросов при определённых редких условиях. Ошибка может возникнуть, если таблица переконфигурирована во время сетевой разобщённости (подробнее в GitHub issue #5289).

Рекомендуется как можно скорее обновиться до этого выпуска, чтобы избежать потери данных.

Если вы заметите, что реплики застревают в состоянии transitioning во время переконфигурации после обновления, вы можете запустить команду .reconfigure({emergencyRepair: 'debug_recommit'}) для таблицы, чтобы позволить завершение переконфигурации. Убедитесь, что кластер находится в режиме ожидания при выполнении этой операции, так как RethinkDB не гарантирует согласованность во время аварийного восстановления.

Совместимость

Серверы RethinkDB 2.2.4 нельзя смешивать с серверами, работающими с версией RethinkDB 2.2.1 или более ранней, в одном кластере.Перемещение между версиями не требуется при обновлении с версии RethinkDB 2.2.0 или выше. Прочтите заметки о выпуске RethinkDB 2.2.0 при обновлении с более старой версии.

Исправленные ошибки

  • Устранена ошибка в системе кластеризации, которая могла привести к потере данных, неконсистентному чтению и аварийному завершению работы сервера после переconfiguration таблицы при неполной доступности (#5289, #4949)
  • Устранено сегментационное исключение, возникавшее при запросе некоторых документов из системной таблицы stats (#5327)
  • Changefeeds теперь поддерживают команды map, filter и связанные команды для системных таблиц (#5241)
  • Отладочные трассировки теперь выводятся даже в том случае, если инструмент addr2line не установлен (#5321)
  • Java-драйвер теперь поддерживает соединения с использованием SSL благодаря вкладу пользователя @pires (#5284)
  • Устранена несоответствующая отладочная информация "Сериализованный запрос" в Java-драйвере (#5306)
  • Устранена несовместимость скрипта rethinkdb import с Python 2.6 (#5294)--

Версия 2.1.6 (Запрещенная планета)

Выпущена 01 февраля 2016 года

Релиз с исправлением ошибок в старой версии

Релиз поддержки legacy

Этот релиз поддерживает полную совместимость с RethinkDB 2.1.5, при этом исправляется критическая ошибка в системе кластеризации RethinkDB.Мы рекомендуем установить эту версию только в том случае, если обновление до RethinkDB 2.2.4 невозможно, например, если вы зависите от драйвера, который всё ещё использует старый протокол буферов клиентов.

Исправленные ошибки

  • Исправлена ошибка в системе кластеризации, которая могла привести к потере данных, некорректному чтению и аварийному завершению работы сервера после переопределения таблицы при неполной доступности сети (#5289, #4949)

Версия 2.2.3 (Современные времена)

Выпущена 11 января 2016 года

Релиз с исправлением ошибок

Совместимость

Серверы RethinkDB 2.2.3 не могут быть смешаны с серверами, работающими на RethinkDB 2.2.1 или более ранних версиях в одном кластере.

Перемещение не требуется при обновлении с RethinkDB 2.2.0 или выше. Пожалуйста, прочитайте заметки о выпуске RethinkDB 2.2.0, если вы обновляетесь с более старой версии.

Исправленные ошибки ###* Исправлена ошибка в коде changefeed, которая вызывала аварийное завершение работы с сообщением

Гарантия не выполнена: [env.has()] (#5238)

  • Исправлена ошибка аварийного завершения работы в r.http при использовании пагинации (#5256)
  • Исправлена ошибка, которая делала orderBy.limit changefeeds препятствием для других changefeeds на одной и той же таблице становиться готовыми (#5247)
  • Заменено использование устаревшей функции Object#timeout в Ruby драйвере (#5232)--

Версия 2.2.2 (Современные времена)

Выпущена 21 декабря 2015 года

Релиз с исправлением ошибок

Совместимость

Серверы RethinkDB 2.2.2 не могут быть смешаны с серверами, работающими на RethinkDB 2.2.1 или более ранних версиях в одном кластере. Изменение протокола было необходимо для решения проблем корректности реализации changefeed.

Перемещение не требуется при обновлении с RethinkDB 2.2.0 или выше. Пожалуйста, прочитайте заметки о выпуске RethinkDB 2.2.0, если вы обновляетесь с более старой версии.

release-notes-2.2.0: https://github.com/rethinkdb/rethinkdb/releases/tag/v2.2.0### Исправленные ошибки ###

  • Сервер

    • Устранена проблема, вызывавшая пропуск изменений в changefeeds с параметром include_initial (#5216)
    • Устранена проблема, вызывавшая зависание и невозможность достижения состояния "ready" в changefeeds с параметром include_initial (#5157)
    • Устранена проблема, вызывавшая вывод непредвиденных начальных результатов со значением null в changefeeds с параметром include_initial (#5153)
    • Улучшена эффективность использования команды skip вместе с limit (#5155)
    • Устранена проблема с проверкой детерминированности в географических командах (#5130)
    • Устранено недопустимое обращение к памяти, вызывавшее ошибки сегментации на архитектуре ARM (#5093)
    • Устранён сбой при выполнении миграций с версий RethinkDB старше 1.16, связанный с "неработающим кодом" (#5158)
    • Устранена проблема, когда сервер отправлял лишний ответ клиенту после завершения курсора (#5159)
    • Устранена проблема зависимости сборки с OpenSSL на OS X 10.11 (#4963)
    • Устранены предупреждения компилятора на архитектуре ARM (#4541)
    • Делегировано использование APT-репозитория совместимого с APT 1.1 (#5174)
  • Драйверы

    • Устранена проблема отсутствия обратной трассировки (backtrace) на ReQLCompileError в JavaScript-драйвере (#4803)
    • Обновлено используемое версионное число CoffeeScript для компиляции JavaScript-драйвера, чтобы избежать ошибок в строгом режиме (#5198) * Устранена проблема синтаксического предупреждения в Python-драйвере при установке на более ранние версии Python (#4702)
    • Команда rethinkdb restore теперь ожидает доступности таблиц (#5154)# Выпуск 2.2.1 (Модерн Таймс)

Выпущен 16 ноября 2015 года

Релиз с исправлением ошибок

Совместимость

RethinkDB 2.2.1 полностью совместим с RethinkDB 2.2.0. Прочтите заметки выпуска RethinkDB 2.2.0, если вы обновляетесь от более ранней версии.

Исправление ошибок

  • Исправлено падение программы с сообщением "Guarantee failed: [found_hash_pair]", при выполнении запросов getAll (#5085)
  • rethinkdb export и rethinkdb dump теперь ограничивают количество вложенных процессов для снижения потребления памяти (#4809)
  • Исправлено разделение памяти в orderBy.limit changefeeds (#5081)
  • Исправлено падение программы при использовании getAll с некорректными ключами (#5086)
  • r.uuid теперь считается детерминированной операцией, если ей передан один аргумент (#5092)
  • Исправлено сообщение об ошибке "Задача была удалена, но она находится в состоянии ожидания!", при использовании цикла событий asyncio в Python (#5043)

Выпуск 2.2.0 (Модерн Таймс)

Выпущен 12 ноября 2015 года

RethinkDB 2.2 представляет собой атомные changefeeds. Атомные changefeeds включают существующие значения из базы данных в результат changefeed, а затем атомно переходят к потоковой передаче обновлений.

Атомные changefeeds делают создание реального времени приложений значительно проще: можно использовать одну и ту же логическую ветку для заполнения вашего приложения начальными данными, а затем продолжать получать обновления в режиме реального времени.Этот выпуск также включает множество улучшений производительности и масштабируемости, направленных на помощь кластерам RethinkDB в масштабировании до больших размеров при меньшем использовании ресурсов.

Для получения более подробной информации прочитайте пост блога.

Совместимость

Файлы данных от версий RethinkDB 1.16 и выше будут автоматически мигрированы. Как и при любом значительном выпуске, сделайте бэкап ваших файлов данных перед обновлением.

Если вы обновляетесь от RethinkDB 1.14.x или 1.15.x, вам нужно будет мигрировать вторичные индексы вручную. Это можно сделать следующими шагами:

  • Установите RethinkDB 2.0.5.
  • Обновите драйвер Python RethinkDB (sudo pip install 'rethinkdb<2.1.0').
  • Перестроите ваши индексы с помощью команды rethinkdb index-rebuild.

После этого вы сможете установить RethinkDB 2.2 и запустить его на существующих файлах данных.

Если вы обновляетесь напрямую от RethinkDB 1.13 или более ранних версий, вам придется вручную обновиться с помощью rethinkdb dump.### Изменения, нарушающие совместимость с API ###* Выводы changefeeds на .orderBy.limit а также .get запросы ранее предоставляли начальные результаты по умолчанию. Теперь вам нужно включить опциональный аргумент includeInitial: true к .changes, чтобы достичь того же поведения.

  • Устаревший протокол буферизации данных драйвера больше не поддерживается. Новый JSON-протокол теперь является единственным поддерживаемым протоколом драйвера. Старые драйверы, использующие устаревший протокол, больше не работают с RethinkDB 2.2.0. Посмотрите список [драйверов][drivers], чтобы узнать о последних версиях.
    • Если вы используете Java, обратите внимание, что на данный момент существующие общественные драйверы ещё не были обновлены до использования нового JSON-протокола. Однако официальный [Java-драйвер][java-driver] находится в активной разработке и будет доступен скоро.
  • Определённые ошибки аргументов, которые ранее вызывали исключения ReqlDriverError, теперь вызывают исключения ReqlCompileError. Полный список изменений можно найти в [#4669][issue-4669].[drivers]: http://rethinkdb.com/docs/install-drivers/ [java-driver]: https://github.com/rethinkdb/rethinkdb/issues/3930 [issue-4669]: https://github.com/rethinkdb/rethinkdb/issues/4669#issue-100428248

Поддерживаемые распределения

RethinkDB 2.2.0 теперь поставляется с официальными пакетами для Ubuntu 15.10 (Wily Werewolf) и CentOS 7.

Мы больше не предоставляем пакеты для Ubuntu 10.04 (Lucid Lynx), который достиг конца жизненного цикла.

Новые возможности

  • Добавлена полная поддержка атомарных changefeeds через опцию include_initial (#3579)
  • Добавлена команда values для получения значений объекта как массива (#2945)
  • Добавлена команда conn.server для идентификации сервера для данного соединения (#3934)
  • Расширена r.uuid для принятия строки и работы как хэш-функции (#4636)## Улучшения ##

Сервер

  • Улучшена масштабируемость диапазонных запросов на распределённых таблицах (#4343)
  • Улучшено выполнение запросов between на вторичных индексах (#4862)
  • Снизилась потребляемая память для больших наборов данных (#1951)
  • Переработана внутренняя структура представления запросов для повышения эффективности (#4601)
  • Удалён устаревший протокол буферизации данных (#4601)
  • Улучшена конструкция вторичных индексов для возможности возобновления и снижения влияния на рабочую нагрузку в продакшене (#4959)
  • Улучшено выполнение запроса getAll с использованием вторичного индекса в некоторых краевых случаях (#4948)
  • Удалён лимит одновременно работающих changefeeds на одном соединении до 1024 (#4732)
  • Реализован автоматический рост стека корутин для предотвращения переполнения стека (#4462)
  • Оптимизирован процесс десериализации сетевых сообщений для предотвращения лишнего копирования (#3734)
  • Добавлено поле raft_leader в статус таблицы для отображения текущего лидера Raft (#4902)
  • Устойчивее обрабатывается наличие недействительных строк в системной таблице 'logs' (#4929)

ReQL

  • indexStatus теперь выводит информацию о вторичном индексе (#3231)
  • Добавлена опция changefeed_queue_size, которая позволяет указывать количество изменений, которое сервер должен буферизировать перед генерацией ошибки (#3607) * Расширены возможности команды branch для принятия произвольного количества условий и значений (#3199)
  • Строка теперь может содержать нулевые символы (кроме первичных ключей) (#3163)
  • Теперь потоки могут быть приведены напрямую к объекту (#2802)
  • Обеспечена согласованность coerceTo('BOOL') с branch (#3133)
  • Разрешены changefeeds на запросах filter и map, связанных с географическими данными (#4063)
  • Расширены возможности команд or и and для принятия нулевого количества аргументов (#4132)
  • Веб-интерфейс
    • Теперь Data Explorer позволяет выполнять только часть запроса путём выбора нужных частей (#4814)
  • Все драйверы
    • Улучшена согласованность типов ошибок ReQL за счёт выбрасывания ReqlCompileError вместо ReqlDriverError при определённых ошибках (#4669)
  • Драйвер JavaScript
    • Добавлен метод eachAsync для курсоров, который работает как each, но также возвращает промис (#4784)
  • Драйвер Python
    • Реализован API для переопределения стандартного JSON-кодировщика и декодировщика (#4825, #4818)

Исправление ошибок ##* Сервер

  • Устранена ошибка сегментации, которая могла возникнуть при отключении сервера, имеющего открытые changefeeds (#4972)
  • Обновлено описание параметра --server-name в команде rethinkdb --help (#4739)
  • Устранена ошибка с сообщением "Guarantee failed: [ts.tv_nsec >= 0 && ts.tv_nsec < (1000LL * (1000LL * 1000LL))]" (#4931)
  • Устранена проблема, при которой задачи backfill не удалялись из таблицы 'jobs' (#4923)
  • Устранена ошибка корruptions памяти, которая могла привести к сегментации при выполнении запросов getIntersecting (#4937)
  • Устранена проблема, препятствующая правильной миграции файлов данных RethinkDB 1.13 (#4991)
  • Устранена ошибка с сообщением "Guarantee failed: [pair.second] ключ для entry_t уже существует", возникающая при быстром повторном подключении серверов (#4968)
  • Устранена ошибка с сообщением "Uncaught exception of type interrupted_exc_t" (#4977)
  • Добавлена проверка для захвата значений r.minval и r.maxval, когда они записываются в системную таблицу '_debug_scratch' (#4032)
  • ReQL
    • Устранена ошибка в сообщении об ошибке, которое генерируется при передаче функции с неправильной арностью (#4189) cq * Устранено регрессионное изменение, вызывавшее то, что r.asc("test") не выдает ошибку, как должно было (#4951)
  • JavaScript драйвер
    • Ключевые слова объектов в методе toString теперь правильно заключены в кавычки (#4997)

Вкладчики

Большое спасибо внешним вкладчикам из сообщества RethinkDB за помощь в выпуске RethinkDB 2.2. В следующем порядке:* Peter Hollows (@captainpete)

  • Zhenchao Li (@fantasticsid)
  • Marshall Cottrell (@marshall007)
  • Adam Grandquist (@grandquista)
  • Ville Immonen (@fson)
  • Matt Broadstone (@mbroadst)
  • Pritam Baral (@pritambaral)
  • Elian Gidoni (@eliangidoni)
  • Mike Mintz (@mikemintz)
  • Daniel Compton (@danielcompton)
  • Vinh Quốc Nguyễn (@kureikain)
  • Shayne Hodge (@schodge)
  • Alexander Zeillinger (@alexanderzeillinger)
  • Ben Gesoff (@bengesoff)
  • Dmitriy Lazarev (@wKich)
  • Chris Gaudreau (@clessg)
  • Paweł Świątkowski (@katafrakt)
  • Wang Zuo (@wangzuo)
  • Chris Goller (@goller)
  • Mateus Craveiro (@mccraveiro)

Версия 2.1.5-2 (Запрещённая планета)

Выпущена 8 октября 2015 года

Выпуск исправлений ошибок

Совместимость

  • Серверы RethinkDB 2.1.5 не могут использоваться вместе с серверами, работающими с версией RethinkDB 2.1.4 или более ранними версиями, в одном кластере

Исправленные ошибки ###* Устранена ошибка корruptions памяти, вызывающая сегментацию в некоторых системах (#4917)

  • Дополнено совместимость системы сборки с OS X El Capitan (#4602)

  • Устранены ложные ошибки "Query terminated by rethinkdb.jobs table" (#4819)

  • Устранена проблема, приводящая к постоянному повторному провалу changefeeds после завершения переопределения таблицы (#4838)

  • Устранён конфликт при одновременной потери соединения с кластером, что приводило к аварийному завершению программы (std::terminate() called without any exception) (#4878)

  • Устранена ошибка сегментации в функции mark_ready(), которая могла возникнуть при переопределении таблицы (#4875)

  • Устранена ошибка сегментации при использовании changefeeds на запросах orderBy.limit (#4850)

  • Дополнено правильное обработание changefeeds на запросах orderBy.limit в Data Explorer (#4852)

  • Устранена ошибка "Branch history is incomplete", возникающая при быстром последовательном переопределении таблицы (#4866)

  • Устранена проблема, приводящая к отчету indexStatus за дополнительные индексы, которые не указаны в аргументах (#4868)

  • Устранена ошибка сегментации при запуске RethinkDB на некоторых системах ARM (#4839)

  • Устранена проблема компиляции в тесте UTF-8 с недавними версиями Xcode (#4861)

  • Устранена ошибка Assertion failed: [ptr_] при быстром переопределении таблиц с бинарной версией режима отладки (#4871)

  • Улучшена проверка неподдерживаемых значений в функциях r.js для предотвращения аварийного завершения программы (Guarantee failed: [!key.IsEmpty() && !val.)IsEmpty]`) в рабочих процессах (#4879)

  • Устранена проблема доступа к незадействованному данным при закрытии (#4918)### Улучшение производительности ###

  • Улучшена производительность запросов getAll, выполняющих получение нескольких ключей одновременно (#1526)

  • Оптимизировано распределение задач между потоками на многоядерных серверах (#4905)


Версия 2.1.4 (Запрещённая планета)

Выпущена 16 сентября 2015 года

Исправленная версия

Совместимость

  • Серверы RethinkDB 2.1.4 не могут быть смешаны с серверами, работающими с RethinkDB 2.1.1 или более ранней версией, в одном кластере

Исправленные ошибки

  • Устранена ошибка корruptions данных, которая могла возникнуть при удалении документов (#4769)
  • Веб-интерфейс больше не игнорирует ошибки во время конфигурации таблиц (#4811)
  • Добавлена проверка в случае вызова reconfigure с несуществующим тэгом сервера (#4840)
  • Удалено ненужное утверждение режима отладки, которое приводило к аварийному завершению работы сервера при попытке записи в системную таблицу stats (#4837)
  • Команды rethinkdb restore и rethinkdb import теперь ждут, пока вторичные индексы станут готовыми перед началом импорта данных (#4832)

Версия 2.1.3 (Запрещённая планета)

Выпущена 4 сентября 2015 года

Релиз с исправлением ошибок

Совместимость

  • Серверы RethinkDB версии 2.1.3 нельзя смешивать с серверами, работающими с версией RethinkDB 2.1.1 или более ранними, в одном кластере

Исправление ошибок ###* Исправлено повреждение данных в реализации b-tree (#4769)

  • Исправлена опция ssl в JavaScript-драйвере (#4786)
  • Драйвер Ruby сделан совместимым с Ruby on Rails 3.2 (#4753)
  • Добавлена библиотека backports.ssl_match_hostname в пакет Python-драйвера (#4683)
  • Изменено проверочное обновление на использование зашифрованного соединения HTTPS (#3988, #4643)
  • Исправлен доступ к источникам https в r.http на OS X (#3112)
  • Исправлена ошибка "Неожиданное исключение" (#4758)
  • Исправлен сбой при ошибке "Гарантия не выполнена: [пара.second]" во время переопределения шардов (#4774)
  • Исправлен баг, который вызывал отсутствие отчета об ошибке при прерывании запросов (#4762)
  • Добавлен новый параметр восстановления "debug_recommit" в emergency_repair (#4720)
  • Драйвер Python сделан совместимым с celery и nose для отчета об ошибках (#4764)
  • Обработка устаревших индексов из RethinkDB 1.13 во время импорта изменена так, чтобы больше не завершать работу сервера (#4766)

Улучшение производительности

  • Улучшена задержка чтения из системной таблицы в r.db('rethinkdb'), когда сервер находится под нагрузкой (#4773)
  • Улучшен параллелизм преобразования JSON на сервере для использования нескольких ядер процессора
  • Переработана декодировка JSON в Python-драйвере для возможности использования пользовательских парсеров JSON и для ускорения конвертации псевдо-типов (#4585)
  • Улучшена логика предварительной загрузки в Python-драйвере для увеличения пропускной способности курсоров
  • Python-драйвер изменён на использование более эффективной структуры данных для хранения результатов курсоров (#4782)### Вкладчики ###

Большое спасибо внешним вкладчикам сообщества RethinkDB за помощь в выпуске RethinkDB 2.1.3. Без какого-либо порядка:

  • Adam Grandquist (@grandquista)
  • Ajose Olayinka (@ajose01)
  • Paulius Uza (@pauliusuza)

Версия 2.1.2 (Запрещённая планета)

Выпущена 25 августа 2015 года

Релиз с исправлением ошибок

Совместимость

  • Серверы RethinkDB версии 2.1.2 нельзя смешивать с серверами, работающими с более ранними версиями, в одном кластере
  • Changefeeds на запросе get_all больше не возвращают начальные значения. Это восстанавливает поведение RethinkDB 2.0

Исправлены ошибки ###* Устранена проблема с преждевременным подтверждением записи до полной записи всех необходимых данных на диск

  • Восстановлено поведение версии 2.0 для changefeeds на запросах get_all, чтобы избежать различных проблем и несовместимостей
  • Устранена проблема, которая приводила к отображению ранее мигрированных таблиц как недоступных (#4723)
  • Устранены устаревшие предупреждения о вторичных индексах после решения проблемы (#4664)
  • Добавлена атомарность операции создания индекса, чтобы избежать конфликтов при быстром создании нескольких индексов (#4694)
  • Улучшено представление времени выполнения запросов в Data Explorer (#4752)
  • Устранена утечка памяти в r.js (#4663)
  • Устранена ошибка "Отсутствуют части истории" (#4721)
  • Устранён конфликт при работе с сообщением "Гарантия не выполнена: [!send_mutex.is_locked()]" (#4710)
  • Устранена ошибка в коде changefeed, которая могла вызывать аварийное завершение работы с сообщением "Гарантия не выполнена: [active()]" (#4678)
  • Устранены различные конфликты, которые могли вызывать аварийное завершение работы при наличии changefeeds во время решиффинга (#4735, #4734, #4678)
  • Устранён конфликт, который мог вызывать аварийное завершение работы с сообщением "Гарантия не выполнена: [val.has()]" (#4736)
  • Устранена ошибка "Проверка истинности не прошла" при запуске отладочной версии бинарника (#4685)
  • Добавлено решение для ошибки eglibc, которая вызывала ошибку "неожиданная семейственная группа адресов" при старте (#4470)* Добавлены меры предосторожности для предотвращения проблем миграции вторичных индексов в последующих выпусках.
  • Ошибки "Out of Memory" в парсере JSON сервера теперь корректно отчитываются (#4751).---

Выпуск 2.0.5 (Yojimbo)

Выпущен 25 августа 2015 года

Исправленный выпуск

  • Добавлены меры предосторожности для предотвращения проблем миграции вторичных индексов в последующих выпусках
  • Устранена утечка памяти в r.js (#4663)
  • Добавлено решение для ошибки eglibc, которая вызывала ошибку "неожиданная семейственная группа адресов" при запуске (#4470)
  • Устранена ошибка в коде changefeed, которая могла вызывать аварийное завершение работы с сообщением "Garanty failed: [active()]" (#4678)
  • Устранена ошибка, которая вызывала периодическое аварийное завершение работы сервера с сообщением "Garanty failed: [fn_id != __null]" при использовании команды r.js (#4611)
  • Улучшена производительность термина is_empty (#4592)

Выпуск 2.1.1 (Forbidden Planet)

Выпущен 12 августа 2015 года

Исправленный выпуск

  • Устранена проблема, при которой после миграции некоторые реплики оставались недоступными при переконфигурации таблицы (#4668)
  • Удалён неработающий аргумент командной строки --migrate-inconsistent-data (#4665)
  • Устранена проблема с ползунком для установки выносливости записи во время создания таблицы в веб-интерфейсе (#4660)
  • Устранена проблема конкурентного доступа в подсистеме кластеризации (#4670)
  • Улучшена обработка сообщений об ошибках в тестовой системе (#4657)

Версия 2.1.0 (Запретная планета)

Выпущена 11 августа 2015 годаОсновные нововведения:

  • Автоматическое переключение при отказах с использованием протокола на основе алгоритма Raft
  • Более гибкое администрирование серверов и таблиц
  • Расширенные возможности восстановления данных

Чтобы узнать больше подробностей, прочитайте пост в блоге.

Совместимость

Файлы данных от версий RethinkDB 1.14.0 и выше будут автоматически мигрированы. Как и в случае с любым значительным выпуском, сделайте бэкап ваших данных перед выполнением обновления.

Если вы обновляетесь непосредственно из RethinkDB 1.13 или более ранних версий, вам потребуется выполнить обновление вручную с помощью команды rethinkdb dump.

Обратите внимание, что файлы из бета-версии RethinkDB 2.1.0 не совместимы с этой версией.

Изменённая обработка отказов серверов

Эта версия представляет новый подход к работе с отказами серверов и сетевыми разделениями, основанный на алгоритме консенсуса Raft.

Раньше недоступные серверы требовалось вручную удалить из кластера для восстановления доступности. В RethinkDB 2.1 многие случаи потери доступности могут быть автоматически исправлены, а кластер остаётся управляемым даже при отсутствии некоторых серверов.

Существует три важных сценария в RethinkDB 2.1 относительно восстановления доступности таблиц после отказа сервера:* У таблицы есть три или более реплики, и большинство серверов, хостящих эти реплики, подключены. RethinkDB 2.1 автоматически выбирает новые главные реплики для замены недоступных серверов и восстановления доступности. Ручная корректировка не требуется, и целостность данных сохраняется.

  • Большинство серверов для данной таблицы подключены, независимо от количества реплик. Таблицу можно переопределить вручную с помощью обычных команд, и целостность данных всегда сохраняется.
  • Большинство серверов для данной таблицы недоступны. Новый параметр emergency_repair для команды table.reconfigure может быть использован для восстановления доступности таблицы в этом случае.

Изменения системных таблиц

Для отражения изменений логики управления кластером некоторые таблицы базы данных rethinkdb были изменены.Изменения в table_config:

Каждый поддокумент шарда теперь имеет новое поле nonvoting_replicas, которое можно установить как подмножество серверов в поле replicas.

Поле write_acks теперь должно быть либо "single", либо "majority". Индивидуальные спецификации подтверждения записи больше не поддерживаются. Вместо этого можно использовать незасчитывающие голоса реплик для создания реплик, которые не учитываются при требованиях к подтверждению записи.

Таблицы, у которых отключены все реплики, теперь отображаются как особые документы с полем "error".

Серверы, которые отключены от кластера, больше не включаются в таблицу.

Новое поле indexes содержит список вторичных индексов для данной таблицы.

Изменения в table_status:* Поле primary_replica теперь называется primary_replicas и имеет значение в виде массива текущих основных реплик. При нормальных условиях один сервер будет выполнять роль основной реплики для данного шарда, но временно может существовать несколько основных реплик во время передачи управления или перемещения данных между серверами.

  • Возможные значения поля state теперь включают "ready", "transitioning", "backfilling", "disconnected", "waiting_for_primary" и "waiting_for_quorum".
  • Отключенные от кластера серверы больше не включаются в таблицу.

Изменения в current_issues:

  • Типы проблем "table_needs_primary", "data_lost", "write_acks", "server_ghost" и "server_disconnected" больше не могут возникнуть.
  • Был добавлен новый тип проблемы "table_availability", который появляется всякий раз, когда таблица недоступна хотя бы на одном сервере. Обратите внимание, что проблема не генерируется, если отключается сервер, не обслуживающий ни одну реплику.

Изменения в cluster_config:

  • Новый документ с id "heartbeat" позволяет настраивать таймаут сердцебиения для межсерверных соединений.

Новые типы ошибок ReQL

RethinkDB 2.1 вводит новые типы ошибок, которые позволяют вам обрабатывать различные классы ошибок отдельно в вашем приложении, если это необходимо. Вы можете найти полный список новых типов ошибок в документации.Как часть этого изменения, типы ошибок ReQL теперь используют префикс имени Reql вместо Rql (например, ReqlRuntimeError вместо RqlRuntimeError). Старые названия типов поддерживаются нашими драйверами для обратной совместимости.

Другие изменения, нарушающие API

  • .split('') теперь рассматривает вход как UTF-8 вместо массива байтов
  • Значения null в составных индексах больше не игнорируются
  • Новое необязательное аргумент read_mode="outdated" заменяет use_outdated=True

Устаревшая функциональность

Старый протокол-клиента на основе протокола Protocol Buffers был устарел в этом выпуске. В RethinkDB 2.2 клиенты, использующие его, больше не будут поддерживаться. Все "активные" драйверы, перечисленные на странице драйверов, используют новый JSON-protocol и продолжат работать с RethinkDB 2.2.[драйверы]: https://www.rethinkdb.com/docs/drivers/

Новые возможности ##* Сервер

  • Добавлен автоматический перезапуск после отказа и полуминимальное перераспределение на основе протокола Raft (#223)
  • Теперь заполнение пропущенных данных может быть прервано и отменено (#3886, #3885)
  • table.reconfigure теперь работает даже если некоторые серверы отключены (#3913)
  • Копии таблиц могут быть помечены как голосующие или невыборочные (#3891)
  • Добавлен режим аварийного восстановления для возврата доступности таблицы при потере консенсуса (#3893)
  • Чтение теперь можно выполнять против большинства копий таблиц (#3895)
  • Добавлен режим аварийного чтения, который извлекает данные непосредственно из указанной копии для целей восстановления данных (#4388)
  • Серверы без обязанностей теперь могут быть удалены из кластера без возникновения проблем (#1790)
  • Время выключения внутреннего пульса между серверами стало настраиваемым (#4449)
  • ReQL
    • Добавлены функции ceil, floor и round (#866)
    • Расширена иерархия типов ошибок ReQL для более детального разделения (#4544)
  • Все драйверы
    • Добавлена поддержка соединений SSL и проверки корневого сертификата с стороны драйвера (#4075, #4076, #4080)
  • Python драйвер
    • Добавлена поддержка Python 3 asyncio (#4071)
    • Добавлена поддержка Twisted (#4096)
    • rethinkdb export теперь поддерживает опцию --delimiter для файлов CSV (#3916)## Улучшения ##

Сервер

  • Улучшена работа с членством в кластере и удалением серверов (#3262, #3897, #1790)
  • Изменено форматирование таблицы системных данных table_status (#3882, #4196)
  • Добавлено поле indexes в системную таблицу table_config (#4525)
  • Улучшена эффективность за счет использования перемещаемого типа datum_t (#4056)
  • Отладочные трассировки ReQL теперь быстрее и меньше (#2900)
  • Вместо cJSON используется rapidjson (#3844)
  • Теперь прозрачно повторяются неудачные метаоперации (#4199)
  • Добавлена более подробная логирование событий кластера (#3878)
  • Улучшена регулировка ограничений на незаписанные данные для повышения производительности записи (#4441)
  • Улучшена производительность термина is_empty (#4592)
  • Мелкие заполнения теперь приоритетнее, что позволяет сделать таблицы доступными быстрее после перезапуска сервера (#4383)
  • Уменьшены требования к памяти при заполнении больших документов (#4474)
  • Changefeeds с использованием опции squash теперь отправляют пакеты заранее, если очередь changefeeds переполняется (#3942)

ReQL

  • .split('') теперь осознает UTF-8 (#2518)

  • Улучшена работа со значениями составных индексов, содержащими null (#4146)

  • Ошибки теперь различают неудачные записи от неопределённых записей (#4296)

  • r.union теперь является верхнеуровневым термином (#4030)

  • condition.branch(...) теперь работает так же, как r.branch(condition, ...) (#4438)

  • Улучшена детекция неконсистентных аргументов update и replace (#4582)* Веб-интерфейс

  • Добавлен новый механизм управления зависимостями и пространствами имён в веб-интерфейсе (#3465, #3660)

  • Улучшена информация, видимая на панели управления (#4461)

  • Улучшен макет списков назначения серверов и реплик (#4372)

  • Обновлено отображение новых возможностей кластеризации и изменений (#4283, #4330, #4288, ...)

  • JavaScript драйвер

    • Версия библиотеки Bluebird была обновлена до 2.9.32 (#4178, #4475)
    • Улучшена совместимость с Internet Explorer 10 (#4534)
    • TCP keepalive теперь активирован для всех соединений (#4572)
  • Python драйвер

    • Добавлена новая опция --max-document-size скрипта rethinkdb import для работы с очень большими JSON документами (#4452)
    • Дополнено свойство r.__version__ (#3100)
    • TCP keepalive теперь активирован для всех соединений (#4572)
  • Ruby драйвер

    • TCP keepalive теперь активирован для всех соединений (#4572)

Исправление ошибок ##* time_of_date и date теперь учитывают часовые пояса (#4149)

  • Добавлен код для обхода ошибки в некоторых версиях GLIBC и EGLIBC (#4470)
  • Обновлен скрипт отмены установки для OS X для избежания ложных сообщений об ошибках (#3773)
  • Устранена проблема с засыпанием при сжатии changefeeds (#3903)
  • has_fields теперь возвращает выборку при вызове на таблице (#2609)
  • Устранена ошибка, которая приводила к временным аварийным завершениям сервера с сообщением Guarantee failed: [fn_id != __null] при использовании команды r.js (#4611)
  • Веб-интерфейс
    • Устранена проблема в списке таблиц, которая могла привести к зависанию с отображением "Загрузка таблиц..." если база данных не существует (#4464)
    • Устранены метки шкал в графике распределения шардов (#4294)
  • Python-драйвер
    • Устранена ошибка недостающего аргумента (#4402)
  • JavaScript-драйвер
    • Приведено к согласованному состоянию использование необязательного аргумента db в методе run, аналогично Ruby- и Python-драйверам (#4347)
    • Устранена проблема, которая могла привести к некорректному закрытию соединений (#4526)
  • Ruby-драйвер
    • Приведено к согласованному состоянию поведение EventMachine API, которое генерирует ошибку при закрытии соединения во время активности обработчиков (#4626)## Контрибьюторы ##

Большое спасибо внешним участникам сообщества RethinkDB за помощь в выпуске RethinkDB 2.1. В алфавитном порядке:

  • Thomas Kluyver (@takluyver)
  • Jonathan Phillips (@jipperinbham)
  • Yohan Graterol (@yograterol)
  • Adam Grandquist (@grandquista)
  • Peter Hamilton (@hamiltop)
  • Marshall Cottrell (@marshall007)
  • Elias Levy (@eliaslevy)
  • Ian Beringer (@ianberinger)
  • Jason Dobry (@jmdobry)
  • Wankai Zhang (@wankai)
  • Elifarley Cruz (@elifarley)
  • Brandon Mills (@btmills)
  • Daniel Compton (@danielcompton)
  • Ed Costello (@epc)
  • Lowe Thiderman (@thiderman)
  • Andy Wilson (@wilsaj)
  • Nicolas Viennot (@nviennot)
  • bnosrat (@bnosrat)
  • Mike Mintz (@mikemintz)
  • Ryan Lahfa (@raitobezarius)
  • Sebastien Diaz (@sebadiaz)

Выпуск 2.0.4 (Yojimbo)

Выпущен 8 июля 2015 года

Выпуск исправляет ошибки:

  • Устранена проблема с номером версии, используемым JavaScript-драйвером (#4436)
  • Устранена ошибка, вызывавшая аварийное завершение работы с сообщением об ошибке "Guarantee failed: [stop]" (#4430)
  • Устранена задержка при обработке запросов distinct с использованием индексов над низкочастотными наборами данных (#4362)
  • Изменена реализация проверок времени компиляции (#4346)
  • Изменено отображение пустых результатов в Data Explorer (#4110)
  • Устранена проблема связывания на архитектуре ARM (#4064)
  • Улучшена информация о времени выполнения запроса в Data Explorer (#3454, #3927)
  • Устранена ошибка, возникающая при вызове info на упорядоченном потоке таблицы (#4242)
  • Устранена ошибка, приводившая к выбросу исключения для некоторых потоков в Data Explorer (#4242)
  • Увеличен буфер безопасности стека корутин для выявления переполнения стека при обработке optarg (#4473)---# Версия 2.0.3 (Yojimbo)

Выпущена 10 июня 2015 года

Релиз с исправлением ошибок

  • Исправлен баг, вызывающий сбой автодополнения в Data Explorer (#4261)
  • Больше не происходит аварийного завершения работы при некоторых типах переполнения стека во время выполнения запроса (#2639)
  • Больше не происходит аварийного завершения работы при возврате функции из r.js (#4190)
  • Исправлен конфликт при закрытии курсора в JavaScript драйвере (#4240)
  • Исправлен конфликт при закрытии соединения в JavaScript драйвере (#4250)
  • Добавлена поддержка сборки с помощью GCC 5.1 (#4264)
  • Улучшено управление переполнением стека корутин на macOS (#4299)
  • Удалён недействительный ассерт в серверной части (#4313)

Версия 2.0.2 (Yojimbo)

Выпущена 22 мая 2015 года

Релиз с исправлением ошибок* Исправлено сообщение об ошибке "дубликат токена" в веб-интерфейсе, возникающее при использовании некоторых браузеров (#4174)

  • Исправлена уязвимость CSRF в HTTP админ-интерфейсе (#2018)
  • Исправлен интерфейс EventEmitter в JavaScript драйвере (#4192)
  • Исправлено проблемное поведение теста RDBInterrupt.InsertOp в некоторых режимах компиляции (#4038)
  • Добавлены пакеты для Ubuntu 15.04 (#4123)
  • Добавлен параметр return_changes: 'always', восстанавливающий поведение return_changes до версии 2.0.0 (#4068)
  • Исправлен баг с return_changes, который заполнял changes даже при наличии ошибки (#4208)
  • Исправлен регресс в производительности при вызове get_all с большим количеством ключей (#4218)
  • Добавлена поддержка использования r.row с командой contains в JavaScript драйвере (#4125)---

Версия 2.0.1 (Yojimbo)

Выпущена 20 апреля 2015 года

Релиз с исправлением ошибок

  • Исправлен регресс в скриптах резервного копирования, неправильно определяющих версию сервера (#3706)
  • Исправлен баг в балансере кэша, снижающем производительность (#4066)

Версия 2.0.0 (Yojimbo)

Выпущена 14 апреля 2015 года

Основные особенности выпуска:

  • Поддержка привязки changefeed к командам get_all и union
  • Улучшенная поддержка асинхронных запросов
  • Первый выпуск, готовый к использованию в продакшне, RethinkDB

Чтобы узнать больше подробностей, прочитайте статью блога о выпуске.

Совместимость

Файлы данных от версий RethinkDB 1.13.0 и выше будут автоматически мигрированы в версию 2.0. Как и при любом крупном выпуске, сделайте резервную копию ваших данных перед обновлением.

Обработка отрицательного нуля в индексах

Числа с плавающей запятой по стандарту IEEE 754 различают между отрицательным нулём (-0) и положительным нулём (+0). Данная информация актуальна только если вы храните значения отрицательного нуля в ваших документах. Мы ожидаем, что данное изменение затронет очень мало пользователей.ReQL считывает (-0) и (+0) как равные в соответствии со стандартом IEEE 754. В предыдущих версиях RethinkDB значения (-0) и (+0) рассматривались как различные значения в первичных и вторичных индексах. Это могло привести к неконсistentному поведению и неверным результатам запросов в некоторых случаях.Начиная с версии RethinkDB 2.0, значения -0 и +0 индексируются как равные. Вторичные индексы могут быть перемигрированы онлайн с помощью утилиты rethinkdb index-rebuild. Если какие-либо ваши документы содержат значения отрицательного нуля в качестве первичных ключей, эти документы станут частично недоступными в RethinkDB 2.0. Вам потребуется переимпортировать затронутые таблицы с помощью команд rethinkdb dump и rethinkdb restore. Подробнее см. статью "Резервное копирование данных".

Если вы не уверены, затрагивает ли вас это изменение, вы можете выполнить python -m rethinkdb._negative_zero_check после обновления сервера и Python-драйвера. Дополнительные опции доступны в выводе python -m rethinkdb._negative_zero_check --help.

Изменения нарушающие API

  • between больше не принимает границы типа null. Вместо этого можно использовать новые r.minval и r.maxval

  • Команды any и all были удалены. Вместо них можно использовать команды or и and

  • indexes_of был переименован в offsets_of

  • Аргумент squash команды changes теперь по умолчанию имеет значение false

  • Иерархия типов исключений в Python-драйвере была изменена. Все исключения, включая RqlDriverError, теперь наследуются от типа RqlError. RqlRuntimeError, RqlCompileError и RqlClientError дополнительно наследуются от нового типа RqlQueryError## Новые возможности ##

  • Общее

    • Достигнуто состояние готового к выпуску (#1174)
  • ReQL

    • Добавлена поддержка changefeeds для запросов get_all и union (#3642)
    • between больше не принимает null в качестве границы. Вместо этого можно использовать новые r.minval и r.maxval (#1023)
    • Добавлена поддержка получения состояния changefeed с помощью нового optarg include_states в методе changes (#3709)
  • Драйверы

    • Добавлена поддержка неблокирующего cursor.next (#3529)
    • Добавлена поддержка выполнения нескольких запросов параллельно на одном соединении (#3754)
    • Усовершенствованы типы возвращаемых значений и используется новое поле ResponseNotes, чтобы передавать дополнительную информацию (#3715)
  • Python драйвер

    • Добавлен опциональный скрипт, который предупреждает о документах с отрицательным нулём в первичном ключе (#3637)
    • Добавлен асинхронный API, основанный на Tornado (#2622)
  • Ruby драйвер

    • Добавлен асинхронный API, основанный на EventMachine (#2622)

Улучшения ##* Сервер

  • Отчет о незакрытых курсорах теперь ведется как единичная запись в таблице задач (#3662)

  • Временные метки больше не передаются между серверами в batchspec_t (#2671)

  • Некоторые дорогостоящие проверки changefeed больше не выполняются в режиме выпуска (#3656)

  • В сообщении о пропуске сердцебиения теперь указывается номер порта удаленного соединения (#2891)

  • Улучшена сортировка и регулирование чтений и записей (#1606)

  • Ограничено количество документов в одной записи для снижения влияния больших записей на другие запросы (#3806)

  • Параллельное выполнение нескольких запросов на одном соединении (#3296)

  • Улучшена производительность отправки ответов (#3744)

  • Немедленная отправка пустой первой записи при получении changefeed (#3852)

  • Упрощена инфраструктура multi_throttling (#4021)

  • Сервер теперь раньше сообщает клиентским драйверам об ошибках рукопожатия (#4011)

  • Установлено значение TCP_NODELAY в Python и Ruby драйверах для избежания задержек вместе с noreply (#3998)

  • Веб-интерфейс

    • Добавлена конфигурируемая граница количества результатов на страницу в Data Explorer (#3910)
    • Добавлена кнопка «Добавить таблицу» для каждой базы данных (#3522)
  • ReQL

    • table.rebalance с недостаточными данными больше не является ошибкой (#3679)
    • Переименовано indexes_of в offsets_of, чтобы избежать путаницы с вторичными индексами (#3265)
    • Удалены any и all в пользу or и and (#1581) * Простые изменения отфильтровываются из return_changes (#3697)
    • Уменьшен размер профилей (#3218)
    • По умолчанию changefeed больше не сжимается (#3904)
  • JavaScript драйвер

    • Добавлена верхняя граница зависимости от bluebird (#3823)
  • Ruby драйвер

    • Добавлено опциональное значение timeout для r.connect (#1666)
    • Улучшена стилистика кода (#3900, #3901, #3906)
    • Теперь строки допускаются как ключи в опциях конфигурации (#3905)
  • Сборка

    • Обновлен до более новой версии V8 и прекращена поддержка вне-дерева V8 (#3472)
    • Добавлена поддержка сборки с использованием Python 3 (#3731)
  • Упаковка

    • Удалён устаревший скрипт bash для завершения команд (#719)
    • Разрешено установление RethinkDB в 32-битной системе macOS на процессоре 64-битного типа (#1595)
  • Тестирование

    • Увеличено количество попыток повтора в тестах RDBBtree для предотвращения ложноположительных результатов (#3805)## Исправление ошибок ##
  • Сервер

    • Устранена проблема одновременного выполнения запросов, которая могла вызвать распределенную блокировку (#3766)
    • Удаленные серверы и таблицы больше не учитываются при проверках версий (#3692)
    • Ужесточены правила парсинга JSON (#3810)
    • Устранена ошибка, которая могла привести к аварийному завершению работы сервера при его завершении (#3792)
    • Базы данных больше не могут переименовываться в "rethinkdb" (#3858)
    • Возвращено начальное значение для потока изменений точек на системных таблицах (#3723)
    • Улучшена обработка отрицательного нуля (#3637)
    • Корректно прерывается поток изменения order_by.limit, когда таблица становится недоступной (#3932)
    • Не выполняется раннее удаление файлов для предотвращения аварийного завершения работы в виртуальных окружениях (#3791)
    • При связывании сокетов используется TCP4 как альтернатива (#4000)
    • Больше не происходит аварийного завершения работы, если данные находятся в общем каталоге VirtualBox (#3791)
  • ReQL

    • Устранена проблема поведения потока изменений точек на системных таблицах (#3944)
    • Yönlendirme Bekleme теперь не ждет завершение запросов, отличных от noreply (#3812)
    • Начальные значения для потоков изменений order_by теперь возвращаются в правильном порядке (#3993)
    • Размер профилей уменьшен при удалении документов (#3218)
  • Веб-интерфейс * Устранена ошибка, которая делала значок состояния зелёным, когда таблица была недоступна (#3500)

    • Устранена ошибка, которая обрезала метки на графике производительности (#3751)
    • Корректно обрабатывается клавиша Esc в модальных диалогах (#3872)
    • Устранена ошибка, которая приводила к ошибке InternalError при загрузке больших таблиц (#3873)
    • Устранена ошибка, которая приводила к поломке Data Explorer при чтении старых данных из localStorage (#3935)
    • Устранена ошибка, которая приводила к невозможности автозаполнения в некоторых случаях (#3143)
  • Драйвер Python

    • Устранена проблема совместимости команды rethinkdb export между Python 2 и Python 3 (#3911)
    • Устранена ошибка, которая приводила к зависанию команды rethinkdb export при возникновении определённых ошибок (#4005)
  • Драйвер JavaScript

    • Устранена ошибка, которая приводила к исключению при использовании метода cursor.each (#3826)
    • Устранена ошибка, которая приводила к игннорированию ошибок соединения (#3733)
    • Устранена ошибка, которая могла быть активирована двумя вызовами метода close (#4017)
    • Устранена ошибка в методе feed.close (#3967)
  • Драйвер Ruby

    • Устранена ошибка, которая приводила к сбою при использовании JRuby (#3795)
    • Обработчики сигналов теперь корректно работают (#4029)
    • Устранена ошибка в проверке арности (#3968)
  • Сборка

    • Процесс сборки теперь более надёжен при получении Browserify (#4009)

Участники ##Большое спасибо внешним участникам сообщества RethinkDB за помощь в выпуске RethinkDB 2.0. В алфавитном порядке:

  • Антон Дериабин (@aderyabin)
  • Кришна Нарашичан (@krishnanm86)
  • Элиан Гидони (@eliangidoni)
  • Шерзод Куцкарров (@tundrax)
  • Джейсон Добри (@jmdobry)
  • Джастин Миур (@justinmealey)
  • Джонатан Онг (@jonathanong)
  • Антон Дериабин (@aderyabin)
  • Анжело Ашмор (@angeloashmore)
  • Билл Барщ (@billbarsch)
  • Эд Костелло (@epc)
  • Илья Радченко (@knownasilya)
  • Кай Карри (@webmasterkai)
  • Лоринг Додж (@loringdodge)
  • Майк Маркаци (@mike-marcacci)
  • Парм Аггарвал (@paramaggarwal)
  • Тинко Андринга (@tinco)
  • Армен Филипетьян (@armenfilipetyan)
  • Андрей Горак (@linkyndy)
  • Широу Миура (@sharow)

Выпуск 1.16.3 (Мы поддерживаем друг друга)

Выпущен 26 марта 2015 года

Обновление с исправлением ошибок.* Исправлен баг, который мог привести к аварийному завершению при чтении из вторичного индекса в некоторых редких случаях (#3976).

  • Исправлен баг, который мог привести к зависанию соединения на OS X (#3954).

  • Улучшена совместимость команды rethinkdb export между Python 2 и Python 3 (#3911).

  • Сообщения о времени выключения сердечника теперь включают номер порта удалённого хоста (#2891).

  • Python-драйвер: исправлен для работы в PyPy (#3969).

  • Python-драйвер: исправлено сообщение об ошибке "Незаконченная строка" во время rethinkdb restore (#3859).

  • JavaScript-драйвер: исправлен баг, который вызывал ошибку при выполнении cursor.each (#3826).

  • JavaScript-драйвер: исправлен баг, который приводил к игнорированию ошибок соединения (#3733).

  • Ruby-драйвер: исправлен баг, который вызывал ошибки при использовании JRuby (#3795).## Участники ##

  • Шерзод Куцкарров (@tundrax)

  • Элиан Гидони (@eliangidoni)


Выпуск 1.16.2 (Мы поддерживаем друг друга)

Выпущен 16 февраля 2015 года

Обновление с исправлением ошибок.

  • Исправлен баг в r.range, который вызывал ошибки запроса (#3767)
  • Исправлен конфликт при параллелизме реализации .order_by.limit.changes (#3765)
  • Исправлено замедление производительности r.js из-за ошибки сборки (#3757)
  • Удалена лишняя запятая в Data Explorer (#3730)

Выпуск 1.16.1 (Мы поддерживаем друг друга)

Выпущен 12 февраля 2015 годаОбновление с исправлением ошибок.*

  • Добавлено сообщение в журнал каждый раз, когда файл удаляется (#1780)
  • Исправлена проблема с командой rethinkdb dump и другими скриптами резервного копирования для правильной проверки версии сервера (#3706)
  • Изменено вывод команды rethinkdb dump, чтобы уточнить, что индексы сохраняются (#3708)
  • Исправлена проблема с нерегулируемым потреблением памяти при использовании официального пакета OS X или сборки с библиотекой Boost версии 1.56.0 или выше (#3712)
  • Исправлена проблема с полем written_docs_total таблицы rethinkdb.stats (#3713)
  • Исправлена ошибка, вызывающая зависание веб-интерфейса при создании или удалении индексов (#3717, #3721)
  • Исправлено округление количества документов в веб-интерфейсе (#3722)
  • Исправлена ошибка, препятствующая работе флага -f команды rethinkdb import (#3728)
  • Исправлена ошибка, мешающая корректной загрузке данных в веб-интерфейсе (#3729)
  • Исправлена ошибка, приводящая к отказу RethinkDB от динамической связи с библиотекой jemalloc (#3741)
  • Исправлено непредвиденное исключение при обработке команды r.js (#3745)---

Пункт "непредвиденное исключение" был заменён на "неловкое исключение". Однако, более подходящим вариантом будет "неожиданное исключение".# Версия 1.16.0 (Обновляем вместе)

Выпущена 29 января 2015 года

Основные нововведения этой версии включают:

  • Новый административный API
  • Changefeeds для сложных запросов
  • Множество улучшений и доработок по всему RethinkDB

Для получения более подробной информации прочитайте пост блога выпуска.

Совместимость

Обратноприсоединяемые изменения

Файлы данных от версий RethinkDB начиная с Yöntem 1.13.0 будут автоматически мигрированы до версии 1.16.x. Как и при любом значительном выпуске, перед выполнением обновления сделайте резервную копию своих файлов данных. Если вы обновляетесь с версии ранее 1.13.0, следуйте инструкциям по миграции перед обновлением.

Вторичные индексы теперь используют новый формат; старые индексы продолжат работать, но вам следует перестроить индексы после обновления до 1.16.x. При запуске будет выдано предупреждение о устаревших индексах.

Индексы можно мигрировать в новый формат с помощью утилиты rethinkdb index-rebuild. Для получения дополнительной информации обратитесь к документации по устранению неполадок.

Абстракция центров обработки данных была заменена [серверными метками][server-tags-documentation]. Существующие назначения центров обработки данных будут автоматически преобразованы в серверные метки.

/server-tags-documentation]: http://rethinkdb.com/docs/server-tags/[server-tags-documentation]: http://rethinkdb.com/docs/sharding-and-replication/

Изменения, нарушающие API

Термы tableCreate, tableDrop, dbCreate и dbDrop имеют новые наборы значений возврата. Предыдущие значения возвратов created и dropped были переименованы в tables_creates / dbs_created и tables_dropped / dbs_dropped соответственно. Теперь эти термы также возвращают поле config_changes.

Для получения деталей обратитесь к документации API этих команд: tableCreate, tableDrop, dbCreate, dbDrop

Уведомления о изменениях в таблице теперь объединяют несколько изменений одного и того же документа в одно уведомление, если они происходят быстро. Вы можете отключить это поведение, передав опциональный аргумент squash: false (см. документацию API для подробностей).

[changes-api-docs]: http://rethinkdb.com/api/javascript/changes## Новые возможности ##

  • Управление кластером ReQL: новый API управления и мониторинга кластера (#2169)

    • Добавлена специальная системная база данных с названием rethinkdb
      • Таблица table_config позволяет изменять конфигурацию таблицы (#2870)
      • Таблица server_config позволяет просматривать и управлять серверами в кластере (#2873)
      • Таблица db_config позволяет просматривать и переименовывать базы данных (#151, #2871)
      • Таблица cluster_config содержит общие настройки для всего кластера (#2924)
      • Таблица table_status отображает доступность и состояние репликации каждой таблицы (#2983, #3269)
      • Таблица server_status содержит информацию о серверах в кластере (#2923, #3270)
      • Таблица current_issues содержит список проблем, влияющих на кластер, и предлагает решения (#2864, #3258)
      • Таблица jobs содержит список выполняющихся запросов и фоновых задач (#3115)
      • Таблица stats содержит актуальные данные о состоянии сервера (#2885)
      • Таблица logs предоставляет доступ к логам сервера (#2884)
      • Опциональный аргумент identifierFormat для команды table позволяет выбирать между использованием имени и UUID для ссылок на базы данных, таблицы и серверы в системных таблицах. Может принимать значения "name" или "uuid" (#3266)
      • Добавлены скрытые отладочные таблицы (_debug_table_status, _debug_stats). Эти таблицы могут меняться и не являются частью официального интерфейса администрирования (#2901, #3385)
    • Улучшено управление кластером * Серверы теперь могут быть связаны с несколькими тегами с помощью флага --server-tag или путём обновления таблицы server_config (#2856)
      • Абстракция центра обработки данных удалена, а аргументы для команды tableCreate изменены (#2876)
      • Командный интерфейс rethinkdb admin для командной строки был удалён
      • Добавлена команда reconfigure, которая позволяет изменять настройки репликации и шардинга таблицы (#2932)
      • Добавлена команда rebalance, которая равномерно распределяет размер шардов таблицы (#2981)
      • Добавлена команда config для таблиц и баз данных как псевдоним для соответствующих записей в таблицах db_config или table_config
      • Добавлена команда status для таблиц как псевдоним для соответствующих записей в таблице table_status
      • Большинство конечных точек /ajax были удалены. Их функциональность была перемещена в системные таблицы (#2878, #2879)
      • В статистике теперь содержится количество клиентских соединений (#2989)
      • Добавлено больше информации в возвращаемое значение команд db_create, db_drop, table_create и table_drop (#3001)
      • Изменено способ конфигурирования параметров durability и write_acks (#3066)
  • Размер кэша теперь может быть изменён в режиме выполнения (#3166)

  • Улучшена масштабируемость при создании больших таблиц и переустановке конфигураций в больших кластерах (#3198)

  • Добавлен новый интерфейс пользователя для конфигурирования таблиц (#3229) * Пустые таблицы теперь могут быть разделены по шардам (#3271, #1679)* ReQL

    • Добавлена команда r.range, которая генерирует все числа из заданного диапазона (#875)
    • Обязательность использования кодировки UTF-8 для входных строк (#1181)
    • Добавлена команда wait, которая ждет готовности таблицы (#2259)
    • Добавлена команда toJsonString, которая преобразует данные в JSON-строку (#2513)
    • Преобразование команды map в вариадическую функцию для параллельной работы с несколькими последовательностями (#2574)
    • Добавлен префиксный вариант команды map (#3321)
    • Добавлен необязательный аргумент squash для команды changes, который позволяет серверу объединять несколько изменений одного документа (по умолчанию равен true) (#2726, #3558)
    • Команды min и max теперь используют индекс при передаче нового параметра index (#2974, #2981)
    • Теперь возможно получение потоков изменений для большего количества типов запросов. Команда changes теперь может быть применена к:
      • Диапазонам, сгенерированным с помощью between (#3232)
      • Одному документу с помощью get
      • Подмножествам с помощью filter
      • Поддокументам и модифицированным документам с помощью map и других команд, поддерживающих полиморфизм потока данных, таких как merge
      • Некоторым уменьшениям, таким как min и max
      • Документам с наивысшим рангом с помощью orderBy и limit
      • Комбинациям вышеупомянутых, таких как between за которым следует map* Сервер
    • Буферизированное ввод-вывод стало значением по умолчанию, добавлен флаг --direct-io для активации прямого ввод-вывода и отключен флаг --no-direct-io (#3391)* Python-драйвер
    • Команда rethinkdb export теперь экспортирует информацию о вторичных индексах, а команда rethinkdb import воссоздает эти индексы, если ей не передан флаг --no-secondary-indexes (#3484)

Улучшения

  • Веб-интерфейс

    • Веб-активы теперь компилируются в исполняемый файл rethinkdb (#1093)
    • Запросы getAll на вторичные индексы теперь отображаются в графе производительности (#2379)
    • Добавлен метод getField в автозавершение в Эксплорере данных (#2624)
    • Добавлены живые обновления для changefeeds в Эксплорере данных (#2643)
    • Уменьшено количество передаваемых и обрабатываемых браузером данных с помощью панели управления (#2786)
    • Отображение базы данных было удалено (#3491)
    • Добавлен монитор вторичных индексов на панель управления (#3493)
  • Сервер

    • Удалён код, используемый для поддержки устаревших тестов (#1524)
    • Улучшена реализация операций удаления диапазона (#2034)
    • Теперь используется jemalloc вместо tcmalloc по умолчанию, что решает некоторые проблемы с надуванием памяти (#2279)
    • Векторные часы заменены автоматическим конфликтным разрешением на основе временной метки (#2784)
    • Больше не жалуются при невозможности очистки stderr (#2790)
    • Использование слова «машина» заменено на «сервер». Старый флаг --machine-name теперь --server-name (#2877, #3254)
    • Сервер теперь выводит своё имя при запуске (#2992) * Адаптирована форма записи уровней журнала; больше не выводятся строки info: в stderr; добавлен уровень журнала notice (#3040)
    • Добавлен флаг --no-default-bind, который предотвращает прослушивание сервером адресов loopback (#3154)
    • Уменьшен нагрузочный показатель процессора для простоящего сервера (#3185)
    • Кэш диска ОС теперь игнорируется при вычислении доступной памяти (#3193)
    • Теперь используется kqueue вместо poll для событий на OS X для лучшей производительности (#3403)
    • Таблицы становятся доступными быстрее, а метаданные таблиц занимают меньше места на диске (#3463)
    • Запросы, выполняющие несколько HTTP-запросов, теперь используют одну и ту же cookie (#3469)
    • Улучшена последовательность разрешения узловых моментов во вторичных индексах (#3550)
    • Сервер теперь отправляет данные домой в штаб-квартиру RethinkDB для проверки наличия новых версий и отправки анонимных статистических данных. Это можно отключить с помощью нового флага --no-update-check (#3170)
  • Тестирование

    • Тесты ReQL теперь могут выполняться параллельно (#2305, #2672)
    • Ruby-драйвер теперь тестируется против различных версий Ruby (#2526)
    • Смягчено сравнение с плавающей запятой для учета проблем округления (#2912)
    • Больше не зависит от внешних HTTP-серверов (#3047)
    • Переключено на использование новых возможностей управления кластерами в наборе тестов (#3398, #3401)
  • ReQL

    • Разрешено запросить версию сервера (#2698) * Улучшено сообщение об ошибке при использовании псевдо-типов как объектов (#2766)
    • Изменения в программе
    • Названия типов, возвращаемых методами typeOf и info, теперь совпадают (#3059)
    • Больше не игнорируются неизвестные глобальные опциональные аргументы молча (#2052)
    • Улучшена обработка ошибок сокетов, протоколов и курсора (#3207)
    • Добавлен метод isOpen для соединений (#2113)
    • Метод info для таблиц теперь работает при значении useOutdated равном true (#3355)
    • Метод info для таблиц теперь включает идентификатор таблицы (#3358)
  • Протокол драйвера

    • Внутренние названия команд сделаны более последовательными (#3147)
    • Добавлен тип возврата SUCCESS_ATOM_FEED, используемый при возврате изменений для одного документа (#3389)
  • Драйвер JavaScript

    • Обновление до версии bluebird 2 (#2973)
  • Драйвер Python

    • Добавлен метод next для курсоров (#3042)
    • Метод r.expr теперь принимает любой итерируемый объект или отображение (#3146)
    • Команда rethinkdb export теперь избегает двойного прохождения по каждой таблице, используя оценочное количество документов (#3483)
  • Сборка

    • Код обновлен для сборки с использованием версий Xcode после Yosemite (#3219)
    • Получение Curl 7.40.0 при отсутствии использования системно установленной версии (#3540)
  • Упаковка

    • Добавлена зависимость procps в пакеты Debian (#3404)
    • Теперь зависит от jemalloc вместо gperftools (#3419)

Исправление ошибок ##* Тесты

  • Исправлен тест TimerTest (#549)
  • Всегда использовать встроенный драйвер для тестирования (#711)
  • Сервер
    • Некоторые сообщения журнала при запуске теперь объединены в одно сообщение журнала (#925)
    • Исправлена продолжительность частично прерванного векторированного ввода-вывода (#2665)
    • Исправлена проблема в парсере файла журнала (#3694)
  • ReQL
    • Изменён тип запросов between с TABLE на более корректный TABLE_SLICE (#1728)
  • Веб-интерфейс
    • Теперь используется настоящий шрифт фиксированной ширины для трассировки обратного вызова, чтобы они правильно выровнялись (#2065)
    • Больше не отображаются пустые части, когда доступно больше данных (#3432)
  • Драйвер Python
    • Корректная обработка символов Unicode в сообщениях об ошибках (#3051)
  • Драйвер JavaScript
    • Добавлена поддержка передачи аргументов конфигурации партии в метод run (#3161)
  • Драйвер Ruby
    • Теперь можно передавать опциональные аргументы методу order_by (#3221)

Контрибьюторы

Большое спасибо внешним участникам сообщества RethinkDB за помощь в выпуске RethinkDB 1.16. В алфавитном порядке:

  • Adam Grandquist (@grandquista)
  • Ilya Radchenko (@knownasilya)
  • Gianluca Ciccarelli (@sturmer)
  • Alexis Okuwa (@wojons)
  • Mike Ma (@cosql)
  • Patrick Stapleton (@gdi2290)
  • Mike Marcacci (@mike-marcacci)
  • Andrei Horak (@linkyndy)
  • Param Aggarwal (@paramaggarwal)
  • Brandon Zylstra (@brandondrew)
  • Ed Costello (@epc)
  • Alessio Basso (@alexdown)
  • Benjamin Goodger (@goodgerster)
  • Vinh Quốc Nguyễn (@kureikain)---

Версия 1.15.3 (Лоуренс Арабский)

Релиз 8 января 2015 года

Обновление с исправлением ошибок.

  • Исправлена ошибка, которая могла привести к некорректному включению или исключению концов перевёрнутого диапазона (#3449)
  • Исправлено реализование reverse_iterator для листовых узлов (#3446)
  • Исправлена ошибка, которая могла привести к неправильному порядку вторичных индексов для строк с различными размерами первичного ключа (#3444)
  • Исправлена ошибка, которая могла привести к аварийному завершению работы при высокой нагрузке при использовании changefeeds (#3393)
  • Исправлена ошибка, которая делала невозможным последовательное использование between и distinct (#3346)
  • Изменены несколько вызовов для избежания передачи NULL в memcpy (#3317)
  • Исправлена графика установщика на OS X Yosemite (#3253)
  • Изменено версионирование для драйвера JavaScript для предотвращения неверного использования номеров предварительных выпусков (#3281)
  • Исправлена ошибка, которая могла привести к зависанию команд rethinkdb import и rethinkdb export (#3458)

Версия 1.15.2 (Лоуренс Аравийский)

Релиз 7 ноября 2014 года

Обновление с исправлением ошибок.* Добавлены пакеты для Ubuntu 14.04 "Утопический единорог" (#3237)

  • Исправлена ошибка в управлении памятью в S2 (#3201)
  • Исправлена ошибка при работе с страницированными результатами в Data Explorer (#3111)
  • Исправлена ошибка, приводящая к аварийному завершению программы при выходе, если соединённый сервер с открытым changefeed аварийно завершился (#3038)
  • Исправлена ошибка, приводящая к аварийному завершению программы при удалении распределённых данных, если больше строк было удалено, чем ожидалось при объединении результатов (#3264)
  • Исправлена ошибка, которая могла привести к аварийному завершению программы при частом перезапуске (#3264)

В этом выпуске нет изменений, нарушающих API.## Новые возможности ##

  • ReQL
    • Добавлена поддержка географических пространственных запросов и индексов (#2571, #2847, #2851, #2854, #2859, #3003, #3011)
    • Добавлен метод r.uuid для генерации уникальных ID (#2063)
    • Добавлен терм BRACKET в язык запросов для улучшения оператора скобок в клиентских драйверах (#1179)

Улучшения

  • Сервер
    • Ощутимо улучшена производительность чтения данных за счет ленивой десериализации: примерно на 1.15 раза быстрее для простых запросов, на 2 раза быстрее для аналитических запросов и на 50 раз быстрее для запросов подсчета (#1915, #2244, #2652)
    • Удалена возможность для datum_t быть незаполненным (#2985)
    • Улучшена производительность zip путем замены типа zip_datum_stream_t на трансформирующую функцию (#2654)
    • Уточнены сообщения об ошибках при невозможности вывода данных выборки (#972)
    • Улучшена производительность r.match за счет кэширования регулярных выражений и создания фреймворка для общего кэширования запросов (#2196)
  • Тестирование
    • Удалены ненужные файлы из папки test/common (#2829)
    • Изменены все тесты для запуска с параметром --cache-size (#2816)
  • Python-драйвер
    • Изменен метод r.row для предоставления сообщения об ошибке при попытке вызова его как функции (#2960)
  • JavaScript-драйвер
    • Теперь ошибки, выбрасываемые драйвером, имеют трассировку стека (#3087)

Исправленные баги ##* ReQL

  • Исправлен баг для крайних случаев использования r.literal (#2710)
  • Улучшено сообщение об ошибке при использовании r.literal в недопустимом контексте (#1600)
  • Веб-интерфейс
    • Исправлен баг, приводящий к зависанию выборки в области ввода запроса при работе с большими запросами (#3043)
    • Исправлен баг, приводящий к некорректному отображению сообщения "ещё больше данных доступно" в некоторых случаях (#3037)
  • Сервер
    • Исправлен баг отображения записей журнала в веб-интерфейсе (#2627)
    • Исправлен баг, приводящий к неверному подсчёту зависимостей в Makefile при изменении файла ql2.proto (#2965)
    • Исправлен баг, приводящий к некорректной закодированности ключа авторизации соединения (#2952)
    • Исправлен баг, приводящий к появлению предупреждений об незадействованных переменных при сборке (#2977)
  • Тестирование
    • Исправлены различные баги в тестах (#2940, #2887, #2844, #2837, #2603, #2793)
  • JavaScript-драйвер
    • Исправлен баг в JavaScript-драйвере, приводящий к некорректному выводу трассировки стека (#2793)
  • Python-драйвер
    • Заменено использование or isinstance на кортеж типов (#2968)
    • Удалены ненужные присваивания kwarg (#2969)
  • Ruby-драйвер
    • Исправлен баг, приводящий к недоступности полей default_db, host и port в объекте Connection (#2849)

Участники

Большое спасибо внешним участникам сообщества RethinkDB за помощь в выпуске RethinkDB 1.15. В следующем порядке:* Сатхьянарайяна Гунакешаран (@gsathya)

  • Адам Грандквист (@grandquista)
  • Дьюэну Джонсону (@canadaduane)
  • Колину Мэттсону (@cmattson)
  • Йутазу Бразаускасу (@jutaz)
  • Мэтту Стифу (@stith)
  • Дмитрию Минковскому (@dminkovsky)

Версия 1.14.1 (Бразилия)

Выпущена 9 сентября 2014 года

Обновление с исправлением ошибок.* Исправлен баг, вызывавший завершение работы команды rethinkdb index-rebuild при использовании ключей аутентификации (#2970)

  • Изменено поведение команды rethinkdb export, теперь она указывает binary_format='raw' для корректной работы с двоичными данными (#2964)
  • Исправлен баг, приводивший к некорректной обработке Юникода в CSV файлах командой rethinkdb import (#2963)
  • Обновлен файл подавления Valgrind для устранения ложных предупреждений типа "неинициализированное значение" (#2961)
  • Исправлен баг, приводивший к созданию дубликатов метрик производительности при восстановлении индекса (#2951)
  • Исправлен баг, могущий привести к аварийному завершению программы при использовании r.http вместе с пагинацией и coerce_to (#2947)
  • Улучшена печать двоичных данных в Python и Ruby REPL (#2942)
  • Исправлен баг, могущий привести к повреждению баз данных размером более 4 ГБ на 32-битных системах (#2928)
  • Исправлены проблемы с правами доступа к файлам веб-интерфейса управления (#2927)
  • Исправлен баг, приводивший к аварийному завершению программы из-за неправильной обработки ошибок в режиме профиля (#2718)
  • Исправлен баг, приводивший к аварийному завершению программы при попытках существующих серверов подключиться к новому серверу с недостижимым хост-именем (#2708)---

Выпуск 1.14.0 (Бразилия)

Выпущен 20 августа 2014 года

Основные особенности этого выпуска:

  • Поддержка хранения двоичных данных
  • Безболезненная миграция баз данных
  • Поддержка Python 3

Чтобы узнать больше подробностей, прочитайте пост блога о данном выпуске.

Совместимость

Назад совместимые изменения

Файлы данных от версий RethinkDB 1.13.0 и выше будут автоматически мигрированы до версии 1.14.x. Как и после любого основного выпуска, сделайте резервную копию ваших данных перед выполнением обновления. Если вы обновляетесь с версии раннее 1.13.0, следуйте инструкциям по миграции перед обновлением.

Вторичные индексы теперь используют новый формат; старые индексы продолжат работать, но рекомендуется перестроить индексы после обновления до 1.14.x. При запуске будет выдано предупреждение о устаревших индексах. Индексы могут быть мигрированы в новый формат с помощью утилиты rethinkdb index-rebuild. Дополнительную информацию можно найти в документе по устранению неполадок:

Изменения, нарушающие API ###Необязательный аргумент return_vals для методов insert, delete и update был изменён на return_changes, что работает со всеми операциями записи (ранее это работало только с записями одного документа). Возвращаемый объект теперь представлен в новом формате, который несовместим с предыдущими версиями. Подробнее см. документацию по API для insert, delete и update:[1.14-insert]: http://rethinkdb.com/api/javascript/insert

Необязательный аргумент upsert для метода insert был заменён на conflict с новыми допустимыми значениями error, replace или update. Это изменение несовместимо с предыдущими версиями. Подробнее см. документацию по API.

Новые возможности

  • Сервер
    • Возможность возврата старых/новых значений для многострочных операций записи (#1382)
    • Аргумент upsert заменён на conflict для метода insert (#1838)
    • Добавлена поддержка двоичных данных через binary (#137, #2612, #2931)
    • Добавлено значение binary_format="raw" для метода run (#2762)
    • Возможность переименования вторичных индексов с помощью index_rename (#2794)
    • Возможность дублирования вторичных индексов (#2797)
    • Логирование устаревших вторичных индексов при запуске сервера (#2798)
    • Возможность возврата двоичного объекта с помощью r.http (#2806)
  • Python-драйвер
    • Добавлена поддержка Python 3 (#2502)
  • Исследование данных
    • Поддержка отображения типов двоичных данных (#2804, #2865)## Улучшения ##
  • Сервер
    • Имена серверов теперь по умолчанию совпадают с хостнеймом машины (#236, #2548)
    • distinct стал быстрее и теперь работает с индексами (#1864)
    • Улучшена обработка очередей вторичных индексов (#1947)
    • Ограничение массива теперь настраиваемое (#2059)
    • Разрешено инициализировать пустую директорию (#2359)
    • Максимальное количество внешних процессов увеличено (#2391, #2584)
    • Ошибки количества аргументов стали более информативными (#2568)
    • Лучшая отчетность об ошибках в r.js (#2748)
    • index_status теперь предоставляет больше информации (#2791)
  • Командная строка
    • Имена таблиц в командной строке теперь раскрываются (#2360, #2550)
  • Драйвер Python
    • Удалены ненужные файлы (#2610)
    • Примеры документации теперь соответствуют PEP8 (#2534)
  • Тестирование
    • Цели полиглота для Ruby 1.8, 1.9, 2.0, 2.1 (#773)
    • Теперь можно тестировать несколько версий Python одновременно
  • Веб-интерфейс
    • Добавлено уведомление и полезное сообщение для устаревших вторичных индексов (#2799)

Устранённые ошибки ##* Сервер

  • --runuser и --rungroup правильно устанавливают права доступа при использовании с командой rethinkdb create (#1722)
  • Улучшено поведение и сообщения об ошибках для подтверждений записи (#2039)
  • Исправлена обработка ошибки getaddrinfo (#2110)
  • Исправлено создание имени машины (#2552, #2569)
  • Исправлена ошибка компиляции на GCC 4.7.2 (#2572)
  • Исправлена ошибка corruption памяти (#2589)
  • Исправлена ошибка кэша потока (#2607)
  • Исправлено соединение с библиотекой RE2 (#2685)
  • Различные исправления сборки (#2666, #2827)
  • Исправлена редкая конфликтная ошибка в конфигурации кластера (#2738)
  • Исправлена ошибка инициализации переменной (#2741)
  • Исправлена ошибка в тесте RPCSemilatticeTest.MetadataExchange (#2758)
  • Changefeeds работают на нескольких объединённых серверах (#2761)
  • Вторичные индексы игнорируют глобальные опции (#2767)
  • Вторичные индексы отсортированы правильно (#2774, #2789)
  • Исправлена ошибка завершения программы при неопределённом порядке (#2777)
  • Исправлены зависимости включений в Makefile (#2779)
  • Преобразование query_params в map (#2812)
  • Преобразование header_lines в map (#2818)
  • Улучшение надёжности работы с большими документами (#2832)
  • Удаление старого дерева вторичного индекса при пострегистрационной конфигурации (#2925)
  • Предварительное исправление проблем разрешений веб-интерфейса на CentOS (#2927)
  • ReQL
    • Исправлена ошибка в методе delete_at (#2696) * Методы insert и splice теперь проверяют ограничение размера массива (#2697)
    • Исправлена ошибка в неопубликованном параметре batch_conf (#2709)
  • Веб-интерфейс
    • Улучшен интервал нотации для границ шардов (#2081, #2635)
    • Теперь Data Explorer запоминает текущий запрос при отключении (#2460)
    • Теперь Data Explorer скрывает вышедшие за пределы тексты в своих контейнерах попапов (#2593)
  • Тестирование
    • Различные улучшения тестирования (#2396, #2583, #2760, #2787, #2788, #2795)
    • Обновлены тестовые скрипты для драйверов (#2815)
  • Драйвер Python
    • Настройка all и any, чтобы они действовали как and_ и or_ (#2659)
    • Использование os.path.splitext для проверки расширений файлов (#2681)
  • Драйвер JavaScript
    • Возвращаются ошибки вместо выбрасывания исключений (#2852, #2883)## Контрибьюторы ##

Большое спасибо внешним участникам сообщества RethinkDB за помощь в выпуске RethinkDB 1.14. В алфавитном порядке:

  • Sathyanarayanan Gunasekaran (@gsathya)
  • James Costian (@jamescostian)
  • Ed Rooth (@sym3tri)
  • Cole Gleason (@colegleason)
  • Mikhail Goncharov (@metaflow)
  • Elian Gidoni (@eliangidoni)
  • Ivan Fraixedes (@ifraixedes)
  • Brett Griffin (@brettgriffin)
  • Ed Costello (@epc)
  • Juuso Haavisto (@9uuso)
  • Nick Verlinde (@npiv)
  • Ayman Mackouly (@1N50MN14)
  • Adam Grandquist (@grandquista)---

Версия 1.13.4 (My name is no one)

Выпущена 14 августа 2014 года

Обновление с исправлением ошибок.

  • Устранены несколько утечек памяти (#2899, #2840, #2744)
  • Добавлено опциональное значение --temp-dir для команд rethinkdb dump и rethinkdb restore (#2783)
  • Аргумент batchConf теперь работает в JavaScript-драйвере метода run (#2707)
  • Исправлен заголовок Accept-Encoding, отправляемый методом r.http (#2695)
  • Улучшена производительность при вставке больших объектов через JavaScript-драйвер (#2641)
  • Метод cursor.close теперь принимает обратный вызов в JavaScript-драйвере (#2591)
  • Исправлена ошибка, которая приводила к сообщению об ошибке illegal to destroy fifo_enforcer_sink_t (#2264)
  • Исправлена ошибка, которая приводила к сообщению об ошибке Assertion failed: [!parent->draining.is_pulsed()] (#2811)
  • Улучшено сообщение об ошибке при возникновении версионной несовместимости (#2657)
  • Улучшена сборка мусора для r.js (#2642)

Версия 1.13.3 (My name is no one)

Выпущена 7 июля 2014 года

Обновление с исправлением ошибок.* Исправлено предупреждение компилятора: cluster_version может использоваться незаполненным (#2640)

  • Исправлен код, использующий std::move дважды для одного и того же объекта (#2638)
  • Подготовлено к горячим обновлениям кластера (#2563)
  • Исправлена ошибка, которая могла привести к неконсистентным данным (#2579)---

Версия 1.13.1 (Мое имя — никто)

Выпущена 26 июня 2014 года

Обновление с исправлением ошибок.

  • Исправлена ошибка, которая приводила к сообщению об ошибке Assertion failed: [ptr_] при выключении (#2594)
  • Исправлена проблема производительности в парсере JSON (#2585)
  • JavaScript-драйвер больше не буферизирует поток изменения (#2582)
  • Исправлена ошибка, которая приводила к сообщению об ошибке Uncaught exception of type "cannot_perform_query_exc_t" (#2576)
  • Больше не происходит аварийного завершения работы при назначении вторичного индекса имени primary (#2575)
  • Запросы, возвращающие null, теперь корректно обрабатываются в Data Explorer (#2573)
  • Метод r.http теперь правильно распознает заголовки при следовании за переадресацией (#2556)
  • Улучшена производительность операций записи для шардов таблиц (#2551)
  • Исправлена ошибка, которая приводила к аварийному завершению работы r.js в некоторых случаях (#2435)
  • Корректно обработаны ошибки EPIPE при подключении к старой версии сервера (#2422)
  • Исправлена ошибка, которая приводила к сообщению об ошибке Could not bind socket при использовании --bind (#2405)
  • Исправлена ошибка, которая приводила к сообщению об ошибке Failed to parse 'as' valid uuid (#2401)
  • Улучшено сообщение об ошибке bad magic number (#2302)
  • Метод default теперь ловит ошибки выхода за границы массива для потоков (#1922)
  • Улучшены сообщения об ошибках арности в JavaScript-драйвере (#2449)---

Выпуск 1.13.0 (Мое имя — Никто)

Выпущен 13 июня 2014 года

Основные новшества этого выпуска включают команду r.http для доступа к внешним данным, поддержку потока изменений через новые команды changes, а также полную поддержку промисов Node.js в драйвере JavaScript.

Чтобы узнать больше подробностей, прочитайте пост блога выпуска.

Совместимость

Этот выпуск несовместим с данными из более ранних версий. Если у вас есть данные, которые вы хотите мигрировать из старой версии RethinkDB, следуйте инструкциям по миграции перед обновлением:

Также были внесены некоторые изменения, нарушающие обратную совместимость, в драйвер JavaScript.

  • Команда hasNext для курсоров была удалена. Вместо неё можно использовать next.## Новые возможности ##* ReQL
    • Добавлено r.random для генерации случайных чисел (#865)
    • Второй аргумент функции slice стал необязательным (#2048)
    • eq_join теперь принимает функцию в качестве первого аргумента и не выдает ошибку, если поле отсутствует (#1764)
    • nth теперь может вернуть выборку, как и get (#348)
    • Улучшена ошибка "master not available" (#1811)
    • Перешли на протокол JSON в драйверах Ruby, JavaScript и Python (#2224, #2390)
    • Добавлена команда changes для создания живых потоков изменений (#997)
    • Добавлено r.args для указания динамического количества аргументов командам, таким как get_all (#1854)
    • Добавлено r.http для взаимодействия с внешними API (#1383)
  • Сервер
    • Добавлен протокол JSON для замены протокола protobuf, который теперь устарел (#1868)
    • Добавлен README, описывающий структуру папки src/ (#2301)
    • Перешли на ручную версионность протокола межузлового взаимодействия (#2295)
    • Усовершенствован сериализационный формат, учитывающий версию (#2308, #2353)
    • Улучшено сообщение об ошибке при недостатке места на диске (#1945)
  • Драйвер JavaScript
    • Добавлена поддержка промисов (используется bluebird) (#1395)
    • Удалён метод hasNext (#2497)
    • Добавлены методы on, once, removeListener и removeAllListeners для курсоров (#2223)
    • Первый аргумент функции r.connect стал необязательным (#2273)
  • Тесты
    • Улучшена скрипт run-test и перенесена на Python (#2235)
    • Улучшены тесты ReQL (#1402)
  • Сборка
    • Теперь создаются файлы символов (#2330) * По умолчанию сборка выполняется с отладочными символами (#2323)
  • Добавлена цифровая подпись для пакета macOS (#1565)
  • Поддержка GCC 4. 4 прекращена (#1748)
  • Добавлена явная зависимость от Python 2 в скрипте configure (#2478)
  • Добавлена зависимость от библиотеки libcurl (#2400)

Улучшенная производительность ##* Сервер

  • Выделение меньших страниц в кэше (#2130)

  • Уменьшение накладных расходов за счет локальной обработки запросов на основном сервере при возможности (#2083)

  • Адаптация значения переменной chunk_processing_semaphore (#2392)

  • Улучшение процесса заполнения данных на вращательных носителях (#2393)

  • Больше не копируются метаданные при оценке r.db (#1907)

  • Больше не обновляется блок статистики при обновлении вторичных индексов (#2431)

  • Лучшее объединение блочных записей в кэше (#2127)

  • Параллельная сборка мусора для повышения эффективности использования места на диске (#2457)

  • Тестирование

    • Добавлены автоматизированные регрессионные тесты производительности (#1963)## Исправленные ошибки ##
  • Сервер

    • Устранена проблема с реализацией многопоточных корутин (#2168, #2332)
    • Ошибки HTTP 500 теперь сопровождаются сообщением об ошибке (#511)
    • Удалено ненужное поддержание memcache (#803)
    • Обеспечена стабильность методов order_by и других сортировок (#2155)
    • Улучшена надежность кода типа blob_t (#2227)
    • Устранена ошибка, вызывающая аварийное завершение при удалении вторичных индексов под нагрузкой (#2251)
    • Устранена ошибка в коде парсинга JSON, вызывавшая аварийное завершение (#2489)
    • Устранена возможность возникновения ошибки сегментации (#2491)
    • Предотвращено высокое потребление памяти при запуске (#2329)
    • Отключено использование алгоритма Nagle для исходящих TCP соединений (#2529)
    • Удалены потенциально спорные имена серверов (#2468)
    • Устранена ошибка, вызывающая ошибку «переполнение стэка вызовов в корутине» (#2357)
    • Внесены исправления из основной ветки для библиотеки cJSON (#2496)
    • Устранена возможность возникновения ошибки сегментации (#2500)
    • Устранена ошибка в вычислении мусорных байтов сериализатором (#2541)
  • ReQL

    • Добавлено имя базы данных в сообщения об ошибках (#2280)
    • Больше не отображаются ошибки выполнения как клиентские ошибки (#1908)
    • Аргументы функции r.expr теперь правильно проверяются (#2384)
    • Больше не происходит аварийного завершения при получении некорректного значения от r.js (#2409) * Устранена проблема обработки глобальных опций (#2525)
  • Ruby драйвер

    • Устранены ошибки close, возникающие при повторном подключении (#2276)
    • Устранены конфликты с активной поддержкой (#2284)
    • Добавлен недостающий аргумент nesting_depth для функции r.expr (#2408)
    • Изменён драйвер для совместимости с JRuby (#2296)
    • Теперь драйвер предварительно загружает данные курсора (#2373)
  • JavaScript драйвер

    • Улучшены названия переменных в сообщениях об ошибках (#2461)
  • Веб-интерфейс

    • Устранена ошибка, вызывающая исключения JavaScript (#2503)
    • Устранена ошибка в подсчёте документов на уровне сервера (#1836)
    • Теперь отображается имя базы данных на странице таблицы (#2366)
    • Удалена несоответствующая зелёная галочка рядом со статусом вторичных индексов (#2084)
    • Устранена ошибка подсветки электронной почты (#2378)
    • Большие ответы больше не приводят к зависанию Экплорера данных (#2481)
    • Устранена ошибка, связанная с очисткой истории Экплорера данных (#2389)
  • Тесты

    • Преобразованы тесты memcache для использования ReQL (#803)

Участники ##Большое спасибо внешним участникам сообщества RethinkDB за помощь в выпуске RethinkDB 1.13. В следующем порядке:

  • Liu Alexander (@Aleaxander)
  • Nicolas Viennot (@nviennot)
  • Elian Gidoni (@eliangidoni)
  • Matthew Frazier (@leafstorm)
  • Masatoshi Ishida (@Masatoshi)

Выпуск 1.12.5 (Волшебник страны Оз)

Выпущен 21 мая 2014 года

Обновление с исправлением ошибок.

  • Исправлен баг, вызывавший ошибки Guarantee failed: [!mod_info->deleted.second.empty() && mod_info->added.second.empty()] (#2285)
  • Исправлено поведение order_by после between (#2307)
  • Исправлен баг, вызывавший ошибки Deserialization of rdb value failed with error archive_result_t::RANGE_ERROR (#2399)
  • JavaScript драйвер: reduce больше не принимает аргумент base (#2288)
  • Python драйвер: улучшена ошибка при закрытии соединения курсора (#2291)
  • Python драйвер: улучшенная реализация курсоров (#2364, #2337)

Выпуск 1.12.4 (Волшебник страны Оз)

Выпущен 22 апреля 2014 года

Обновление с исправлением ошибок.

  • Исправлен баг, вызывавший ошибки Assertion failed: [page->is_disk_backed()] (#2260)
  • Исправлен баг, вызывавший некорректные результаты запросов и частые аварийные завершения работы сервера при низком уровне памяти (#2237)

Выпуск 1.12.3 (Волшебник страны Оз)

Выпущен 17 апреля 2014 года

Обновление с исправлением ошибок.* Больше не возникают ошибки сборки с SEMANTIC_SERIALIZER_CHECK=1 (#2239)

  • Идентичные опции --join больше не приводят к аварийному завершению программы (#2219)
  • Исправлен конфликт параллелизма в Ruby драйвере (#2194)
  • Параллельные заполнения теперь ограничены до 4 на каждом узле и всего 12 (#2211)
  • Неспособность выполнить fsync директории теперь является предупреждением вместо ошибки (#2255)
  • Пакеты теперь доступны для Ubuntu 14.04, кодовое имя "Trusty Tahr" (#2101)---

Выпуск 1.12.2 (Волшебник страны Оз)

Выпущен 8 апреля 2014 года

Обновление с исправлением ошибок.

  • Исправлен баг, вызывавший ошибки illegal to destroy fifo_enforcer_sink_t (#2092)
  • Исправлен баг, вызывавший ошибки Guarantee failed: [resp != __null] (#2214)
  • Исправлен баг, вызывавший ошибки Segmentation fault (#2222)
  • Теперь используется меньше памяти для распространённых операций (#2164, #2213)
  • Поддержка Ruby 2.1.1 (#2177)
  • Исправлен юнит тест PageTest (#2187)
  • Обновлена документация (#2197)
  • Обновлен пример файла конфигурации (#2205)

Выпущен 27 марта 2014 года

Обновление с исправлением ошибок.

  • Исправлено аварийное завершение работы evicter.cc в строке 124: Гарантия не выполнена: [initialized_] (#2182)
  • Исправлено поведение index_wait, которое не всегда работало корректно (#2170, #2179)
  • Исправлено разделение памяти (#2178)
  • Добавлено опциональное значение --hard-durability для импорта/восстановления
  • Изменено значение по умолчанию для --cache-size для лучшей совместимости с машинами, имеющими меньше свободной оперативной памяти
  • Изменены таблицы для масштабирования своего мягкого ограничения производительности в зависимости от размера кэша
  • Исправлены некоторые проблемы сборки (#2183, #2174)
  • Исправлены пакеты CentOS i686 (#2176)

Версия 1.12.0 (Волшебник страны Оз)

Выпущена 26 марта 2014 года

Основные особенности этого выпуска — упрощённая система map/reduce, экспериментальная версия для процессоров ARM и новая кеш-инфраструктура.Чтобы узнать больше подробностей, прочитайте пост о выпуске.

Совместимость

Этот выпуск несовместим с данными файлами из более ранних версий. Если у вас есть данные, которые вы хотите мигрировать из старой версии RethinkDB, следуйте инструкциям по миграции перед обновлением:

Также в языке запросов ReQL были внесены изменения, нарушающие обратную совместимость.

  • grouped_map_reduce и group_by заменены на group
  • reduce больше не принимает аргумент base; используйте default вместо него
  • table_create больше не принимает аргумент cache_size
  • В JavaScript изменён вызов метода run.## Новые возможности ##
  • Сервер
    • Добавлена поддержка архитектуры ARM (#1625)
    • Добавлено ограничение квоты кэша на уровне каждого экземпляра и удалены квоты на уровне каждой таблицы (#97)
      • Добавлен параметр командной строки --cache-size, который устанавливает размер кэша в МБ для одного экземпляра
      • Удалён опциональный параметр cache_size для команды table_create
    • Написана новая и улучшенная версия кэша (#1642)
    • Добавлена сжатие данных GZIP в встроенный веб-сервер (#1746)
  • ReQL
    • Теперь команда merge принимает функции в качестве аргументов (#1345)
    • Добавлена команда object для создания объектов из динамических полей (#1857)
    • Удалён опциональный параметр base для команды reduce (#888)
    • Добавлена команда split для разделения строк (#1099)
    • Добавлены команды upcase и downcase для изменения регистра символов строки (#874)
    • Изменено выполнение агрегации и группировки (#1096)
      • Удалены команды grouped_map_reduce и groupBy
      • Добавлены команды group и ungroup
      • Изменено поведение команд count, sum и avg, добавлены команды max и min
  • Веб-интерфейс
    • Отображение статуса индексации и прогресс-баров в веб-интерфейсе (#1614)

Улучшенная производительность ##* Сервер

  • Улучшена масштабируемость метаопераций (например, создания таблиц), чтобы позволить больше узлов в кластере (#1648)

  • Изменён коэффициент шардинга процессора на 8 для улучшения многопоточной масштабируемости (#1043)

  • Размеры пакетов теперь лучше масштабируются, что увеличивает скорость выполнения операций типа LIMIT (#1786)

  • Настроены размеры пакетов для избежания вычислений ненужных результатов (#1962)

  • Улучшено управление пропускной способностью и сборкой мусора для избежания замедления потока запросов (#1820)

  • Направлены многочисленные оптимизации для избежания времени ожидания веб-интерфейса при нагрузках на сервер (#1183)

  • Улучшена производительность восполнения данных за счёт использования пакетов для отправки и вставки данных (#1971)

  • Уменьшено количество бесполезных копий при сериализации (#1431)

  • Выполнение запросов теперь временами приостанавливается для избежания ошибок времени ожидания (#1631)

  • Уменьшено влияние восполнения данных на производительность других запросов (#2071)

  • Веб-интерфейс

    • Улучшена работа веб-интерфейса с большими кластерами со множеством таблиц (#1662)
  • Ruby-драйвер

    • Удалены неэффективные трассировки местоположений конструкторов (#1843)
  • Тесты

    • Добавлены автоматизированные тесты производительности (#1806)## Исправлены ошибки ##
  • Сервер

    • Улучшена реализация кода для предотвращения ошибок пропущенного пульса во время перешифровки таблиц (#1708)
    • Перешифровка одной таблицы больше не делает недоступными другие таблицы (#1751)
    • Улучшен алгоритм предложения схемы для более равномерного распределения шардов (#344)
    • Запросы от данных исследователя теперь могут быть прерваны (#1888)
    • Больше не завершается ошибкой, если IPv6 недоступен (#1925)
    • Добавлена поддержка нового API области в v8 (#1510)
    • Теперь освобождаются стеки корутин для снижения потребления памяти (#1670)
    • Добавлены диапазонные чтения, заполнение и чтения вторичных индексов в статистику (#660)
    • r.table(...).count() больше не блокирует вставки (#1870)
    • Исправлены аварийные завершения при добавлении вторичного индекса (#1621, #1437)
    • Улучшено управление условиями нехватки памяти (#2003)
    • Конструирование вторичных индексов теперь отображается как операция записи в статистике (#1953)
    • Исправлено аварийное завершение, которое иногда происходило во время репликации (#1389)
    • linux_file_t::set_size больше не выполняет блокирующие системные вызовы (#265)
    • Исправлено аварийное завершение, зафиксированное юнит-тестами (#1084)* Командная строка
    • rethinkdb admin теперь выводит предупреждения наstderr вместоstdout (#1316)
    • Скрипты импорта и экспорта теперь отображают количество строк после выполнения (#1659)
    • Добавлена поддержка log_file и no_direct_io в скрипт инициализации (#1769, #1892)
    • Больше не отображаются трассировки стека для обычных ошибок, выведенных скриптами резервного копирования (#2098)
    • rethinkdb export больше не завершается ошибкой, когда нет таблиц (#1904)
    • rethinkdb import больше не пытается парсить CSV-файлы какJSON (#2097)* Веб-интерфейс
    • Больше не отображается неверное количество строк, когда возвращается строка (#1669)
    • Исследователь данных теперь правильно закрывает курсоры (#1569)
    • Исследователь данных теперь правильно отображает пустые таблицы (#1698)
    • Ссылки теперь относительные, чтобы они могли быть использованы через прокси-серверы из подкаталога (#1791)
    • Отчет времени сервера профилем теперь точный (#1784)
    • Улучшена последовательность действий для удаления неработающих серверов (#1366)
    • Больше не уменьшаются реплики до 0, если центральное хранилище является основным (#1834)
    • Теперь отображается согласованная информация доступности (#1756)
    • Исправлена проблема безопасности XSS (#2018)
    • Изменение количества подтверждений больше не отображает полосу шардинга (#2023)
    • Полоса прогресса заполнения не исчезает при обновлении страницы (#1997)
    • Новые строки в исследователе данных теперь корректно обрабатываются (#2021)
    • Список таблиц теперь сортируется в алфавитном порядке (#1704)
    • Добавлен текст при наведении указателя мыши на время выполнения запроса (#1940)
    • Статус репликации больше не мигает (#2019)
  • Устранены несоответствия в датах, вызванные переходом на летнее время (#2047)

  • Ruby-драйвер

    • Добавлен недостающий метод close для курсоров (#1568)
    • Улучшена обработка конфликтов (#1814)
    • Используется define_method вместо method_missing, что повышает совместимость с Sinatra (#1896)* Python-драйвер
    • Улучшена качество сгенерированной документации (#1729)
    • Добавлены недостающие команды and_ и or_, а также предупреждение о неправильном использовании | и & (#1582)
    • Добавлена поддержка r.row в eq_join (#1810)
    • Добавлено подробное сообщение об ошибке при некорректном использовании скобок (#1434)
    • Теперь count с аргументами работает правильно (#1992)
    • Добавлен недостающий метод get_field (#1941)
  • JavaScript-драйвер

    • Добавлена поддержка r.row в eqJoin (#1810)
    • События таймаута на сокете теперь корректно обрабатываются (#1909)
    • Больше не используется устаревший API ArrayBuffer (#1803)
    • Устранены проблемы с отладочными трассами для необязательных аргументов (#1935)
    • Изменена синтаксическая конструкция run (#1890)
    • Раскрыты конструкторы ошибок (#1926)
    • Устранены проблемы с представлением строк функций (#1919, #1894)
    • Теперь печать отладочных трасс работает корректно как для protobufjs, так и для node-protobuf (#1879)
    • Больше не расширяется Array.prototype (#2112)
  • Сборка

    • . /configure теперь проверяет наличие boost и может его установить, если он не установлен (#1699)
    • В пакет распространения теперь включается исходный код v8 (#1844)
    • Используется Python 2 для сборки v8 (#1873)
    • Улучшено получение и сборка внешних пакетов системой сборки, а также изменено значение по умолчанию на то, чтобы ничего не скачивать (#1231)

Упаковка ##* Поддержка Ubuntu Raring была прекращена (#1924)


Версия 1.11.3 (Завтрак у Тиффани)

Выпущено 14 января 2014 года

Обновление с исправлением ошибок.

  • Исправлено падение при множественном нажатии Ctrl-C (#1848)
  • Ruby-драйвер: исправлены изменчивые трассировки (#1846)
  • Исправлено возникшее при старых версиях GCC сбой сборки (#1824)
  • Добавлен недостающий аргумент надежности в JavaScript-драйвер (#1821)
  • Исправлен баг, активируемый изменением конфигурации кластера при наличии нерешённых проблем (#1813)
  • Исправлен баг, активируемый использованием order_by, за которым следует count (#1796)
  • Теперь таблицы могут быть указаны полным именем (например, database.table) в rethinkdb admin (#1795)
  • Исправлен баг, активируемый последовательной цепочкой соединений (#1793)
  • Исправлено иногда происходящее падение при удалении индекса (#1789)
  • Инициализационный скрипт теперь завершается ошибкой при передаче неверных аргументов (#1779)
  • RethinkDB теперь отказывается запускаться, если не может открыть файл журнала (#1778)
  • Исправлено JavaScript-исключение в веб-интерфейсе (#1754)
  • Ускорены запросы count (#1733)
  • Исправлен баг с потоково-локальным хранилищем, приводящий к segfault на некоторых платформах (#1731)
  • get несуществующего документа, за которым следует replace, теперь работает так, как указано в документации (#1570)---

Версия 1.11.2 (Завтрак у Тиффани)

Выпущено 6 декабря 2013 года

Обновление с исправлением ошибок.

  • Исправлен баг, вызванный предложением r.ISO8601 в Data Explorer
  • Курсор в Data Explorer восстанавливается при выборе команды через выпадающее меню
  • Исправлен баг, при котором запросы, возвращающие null в Data Explorer, не могли быть распознаны (#1739)
  • Всегда выполняется fsync родительских директорий для предотвращения потери данных (#1703)
  • Исправлены проблемы IPv6 с адресами уровня-связей (#1694)
  • Добавлена некоторая поддержка Python 3 в скриптах сборки (#1709)

Версия 1.11.1 (Завтрак у Тиффани)

Выпущено 2 декабря 2013 года

Обновление с исправлением ошибок.

  • Драйверы больше не игнорируют флаг timeFormat (#1719)
  • RethinkDB теперь правильно устанавливает поле ResponseType в ответах на запросы STOP (#1715)
  • Исправлен баг, приводящий к аварийному завершению работы RethinkDB из-за неудовлетворённого гарантийного обязательства (#1691)

Версия 1.11.0 (Завтрак у Тиффани)

Выпущено 25 ноября 2013 года

Эта версия представляет новый профилировщик запросов, переоборудованную структуру потока данных и множество улучшений, повышающих удобство и надёжность эксплуатации.

Чтобы узнать подробнее, прочитайте статью блога об этой версии.[1.11-blog]: http://rethinkdb.com/blog/1.11-release/

Новые возможности ##* Сервер

  • Удалены анафорические макросы (#806)

  • Изменено ограничение размера массива до 100 000 (#971)

  • Сервер теперь одновременно считывает bin-файлы с диска (#1296)

  • Улучшена логика замены пачками (#1468)

  • Добавлена поддержка IPv6 (#1469)

  • Уменьшены случайные дисковые запросы во время транзакций записи (#1470)

  • Объединены записываемые данные на уровне сериализатора (#1471)

  • Улучшены потоковые операции: более умные размеры пачек отправляются клиентам (#1543)

  • Уменьшен вред создания индексов на реальном времени производительности (#1556)

  • Оптимизирована производительность вставки данных (#1559)

  • Добавлена поддержка возврата данных как JSON, что улучшает производительность драйвера (#1571)

  • Отладочные трассировки теперь проходят через границы корутин (#1602)

  • Командная строка

    • Добавлен прогресс-бар для команд rethinkdb import и rethinkdb export (#1415)
  • ReQL

    • Добавлена возможность профилирования запросов, активируемая передачей profile=True методу run (#175)
    • Добавлена команда синхронизации, которая очищает мягкие записи, сделанные в таблице (#1046)
    • Добавлена возможность ждать завершения нетоварищеских записей
      • Добавлена команда wait
      • Добавлено необязательное аргумент к командам close и reconnect
    • Добавлены команды index_status и index_wait (#1562)
  • Python драйвер

    • Добавлены строки документации (#808)
    • Добавлены улучшения потоковых операций и производительности (#1371) * Изменён процесс установки для использования C++ реализации протокола Protocol Buffers (#1394)
    • Улучшена логика потоковых операций (#1364)
  • JavaScript драйвер

    • Изменён процесс установки для использования C++ реализации протокола Protocol Buffers (#1172)
    • Улучшена логика потоковых операций (#1364)
  • Упаковка

    • Уточнено версионирование в пакете для macOS (#1413)## Исправленные ошибки ##
  • Сервер

    • Больше не использовать perfmon_collection_t после его уничтожения (#1497)
    • Устранена проблема, вызывавшая недоступность узлов, и добавлен профилировщик корутин (#1516)
    • Добавлена совместимость базовых данных между версиями 32-битной и 64-битной систем (#1535)
    • Больше не используется в четыре раза больше пространства кэша (#1538)
    • Устранены проблемы с обработкой ошибок в запросах продолжения (#1619)
    • Устранена проблема с таймаутом сердцебиения при одновременном удалении многих таблиц (#1624)
    • Улучшено управление сигналами (#1630)
    • Уменьшен нагрузочный эффект от использования веб-интерфейса на крупных кластерах (#1660)
  • Командная строка

    • Устойчивость команды rethinkdb export повышена при низкой памяти (#1546)
    • Устранена проблема конкурентного доступа в команде rethinkdb import (#1597)
  • ReQL

    • Нелинейные запросы order_by теперь возвращают массивы (#1566)
    • Система типов теперь включает выборки как для массивов, так и для потоков (#1566)
    • Устранена проблема неверного результата inserted (#1547)
    • Устранена проблема аварийного завершения программы при использовании необычных строк в r.js (#1638)
    • Переопределены семантики группового потока (включает конкретное исправление для драйвера JavaScript) (#1544)
    • r.js теперь работает с временными значениями (#1513)
  • Python-драйвер

    • Обработка прерванных системных вызовов (#1362) * Улучшение сообщений об ошибках при вставке дат без часового пояса (#1509)
    • Добавлена возможность копирования RqlTzInfo (#1588)
  • JavaScript-драйвер

    • Устранение проблем с обработкой аргументов (#1555, #1577)
    • Устранение проблем с ArrayResult (#1578, #1584)
    • Устранение проблем с красивым выводом limit (#1617)
  • Веб-интерфейс

    • Улучшение визуализации ошибок, чтобы было очевидно, являются ли они ошибками JavaScript или базы данных (#1293)
    • Улучшение сообщений, отображаемых при наличии более чем 40 документов (#1307)
    • Устранение проблем с форматированием дат (#1596)
    • Устранение опечатки (#1668)
  • Сборка

    • Устранение проблем с количеством элементов в make (#1443)
    • Обновление полученной версии gperftools (#1594)
    • Устранение проблем с обработкой termcap в . /configure (#1622)
    • Генерация лучшей версии номера при компиляции из мелкого клонирования (#1636)---# Версия 1.10.1 (Von Ryan's Express)

Выпущена 23 октября 2013 года

Обновление с исправлением ошибок.

  • Сервер
    • r.js больше не завершается некорректно при прерывании слишком рано (#1553)
    • Данные для некоторых запросов get_all больше не дублируются (#1541)
    • Исправлен сбой Гарантия не выполнена: [!token_pair->sindex_write_token.has()] (#1380)
    • Исправлен сбой, вызванный быстрой перезаписью шардов (#728)
  • ReQL
    • pluck в сочетании с limit теперь возвращает поток данных, когда это возможно (#1502)
  • Python-драйвер
    • Исправлено сообщение об ошибке неопределённая переменная в tzname() (#1512)
  • Ruby-драйвер
    • Исправлено сообщение об ошибке при вызове незакрепленной функции (#1336)
  • Упаковка
    • Добавлена поддержка Ubuntu 13.10 (Saucy) (#1554)

Версия 1.10.0 (Von Ryan's Express)

Выпущена 26 сентября 2013 года

Чтобы узнать подробнее, прочитайте статью блога.

Новые возможности ##* Добавлены многоиндексные данные (#933)

  • Добавлена возможность выборочной очистки истории в Data Explorer (#1297)

  • Обеспечено поддержание синтаксиса вложенного объекта в filter (#1325)

  • Добавлен метод r.not_ в Python-драйвер (#1329)

  • Скрипты резервного копирования теперь устанавливаются вместе с Python-драйвером (#1355)

  • Реализовано кодирование объектов переменной длины и других улучшений сериализации (#1424)

  • Уменьшен размер стека потоков I/O (#1425)

  • Улучшена сериализация целых чисел (#1426)

  • Добавлен простой обёрткой структурой threadnum_t, вместо использования чистых int для номеров потоков (#1445)

  • Восстановлена полная производительность монитора (#1474)## Исправленные ошибки ##

  • Исправлен вывод команды rethinkdb admin help (#936, #1447)

  • make больше не запускает ./configure (#979)

  • Python-код теперь в большей степени совместим с Python 3 (работа продолжается) (#1050)

  • Data Explorer теперь правильно обрабатывает ошибки непредвиденных токенов (#1334)

  • Улучшена производительность парсинга JSON (#1403)

  • batched_rget_stream_t больше не использует устаревший прерыватель (#1411)

  • Отсутствующий переменной protobuf_implementation был добавлен в JavaScript-драйвер (#1416)

  • Улучшены сообщения об ошибках и помощь в скриптах резервного копирования (#1417)

  • r.json больше не неверно помечен как недетерминированное (#1430)

  • Исправлен импорт rethinkdb_pbcpp в Python-драйвер (#1438)

  • Некоторые хранилища теперь используются другими потоками, а не только 0-3 (#1446)

  • Исправлено сообщение об ошибке при использовании groupBy с незаконным паттерном (#1460)

  • default больше не является недопустимым в Python (#1476)---

Версия 1.9.0 (Кагэмуся)

Выпущена 9 сентября 2013 года

Подробности см. в посте блога выпуска.

Исправление ошибок.* Сервер

  • Устранено потенциальное падение программы из-за смены корутин в обработчиках исключений (#153)
  • Больше не дублируются документы во вторичных индексах (#752)
  • Удалены ненужные преобразования между datum_t и cJSON (#1041)
  • Больше не загружаются документы с диска для запросов подсчета (#1295)
  • Изменён код extproc для использования datum_t вместо cJSON_t (#1326)
  • ReQL
    • В JavaScript-драйвере используется Buffer, а не ArrayBuffer (#1244)
    • orderBy на индекс больше не уничтожает метод (#1333)
    • Устранено ошибочное поведение в Python-драйвере, вызванное использованием лямбда-выражений многими потоками (#1377)
    • Улучшена обработка Юникода в Python-драйвере (#1378)
  • Веб-интерфейс
    • Больше не обрезаются имена серверов (#1313)
  • КОММАНДНАЯ СТРОКА
    • rethinkdb import теперь работает с Python 2.6 (#1349)---

Версия 1.8.1 (Полуденный час)

Выпущена 21 августа 2013 года

Исправление ошибок.

  • Предложенные шарды теперь работают со временем (#1335)
  • Python-скрипты резервного копирования больше не зависят от pip show (#1331)
  • rethinkdb help больше не использует просмоторщик (#1315, #1308)
  • Веб-интерфейс правильно располагает SVGRectElement (#1314)
  • Устранена ошибка, приводящая к падению при использовании filter с неконстантным значением (#1299)

Версия 1.8.0 (Полуденный час)

Выпущена 14 августа 2013 года

Эта версия представляет поддержку дат и времени, новую синтаксическую конструкцию для запросов вложенных объектов и улучшение использования дискового пространства в 8 раз.

Подробности см. в [посте блога выпуска][1.8-blog].

[1.8-blog]: http://rethinkdb.com/blog/1.8-release/## Новые возможности ##

ReQL

  • order_by теперь принимает функцию в качестве аргумента и может эффективно сортировать по индексу (#159, #1120, #1258)
  • slice и between теперь являются полузакрытыми по умолчанию (#869)
    • Поведение можно изменить, установив новый необязательный аргумент right_bound со значением closed или установив left_bound со значением open
  • contains теперь может принимать предикат (#870)
  • merge теперь глубокий по умолчанию (#872)
    • Введен literal для слияния плоских значений
  • coerce_to теперь может конвертировать строки в числа (#877)
  • Добавлена поддержка времени (#977)
    • +, -, <, <=, >, >=, == и !=: арифметика и сравнение
    • during: совпадение времени с интервалом
    • in_timezone: изменение часового пояса
    • date, time_of_day, timezone, year, month, day, weekday, hour, minute и second: доступ к данным
    • time, epoch_time и iso8601: конструкторы
    • monday до sunday и january до december: константы
    • now: текущее время
    • to_iso8601, to_epoch_time: преобразование
  • Добавлен синтаксис вложенного документа для функций, кроме pluck (#1094)
    • without, group_by, with_fields и has_fields
  • Удален Google Closure из JavaScript-драйвера (#1194)
    • Теперь он зависит от библиотек protobufjs и node-protobuf

Сервер

  • Добавлен командный аргумент линии --canonical-address HOST[:PORT] для подключения узлов RethinkDB через различные сети (#486)
    • Два экземпляра за прокси могут быть настроены для подключения друг к другу * Оптимизация использования пространства за счет разрешения меньших размеров блока (#939)
  • Добавлен стартовый флаг --no-direct-io, который выключает прямой ввод/вывод (#1051)
  • Переписана реализация extproc, сделав r.js прерываемым и исправив множество аварийных завершений работы (#1097, #1106)
  • Добавлена поддержка V8 ≥ 3. 19 (#1195)
  • Очистка blob-данных при их незадействованности (#1286)
  • Веб-интерфейс
    • Используются относительные пути (#1053)
  • Сборка
    • Добавлена поддержка режима flymake-mode в Emacs (#1161)

Устранённые ошибки

  • ReQL
    • Проверка типа обратного вызова, переданного в next и each в JavaScript-драйвере (#656)
    • Исправление способа вывода некоторых трассировок в JavaScript-драйвере (#973)
    • Преобразование аргумента порта в число в Python-драйвере (#1017)
    • Полиморфные функции для объектов и последовательностей теперь рекурсируются только на один уровень глубже (#1045)
      • Влияет на pluck, has_fields, with_fields и т. д.
    • Больше не возникают ошибки при повторном импорте модуля в JavaScript-драйвере (#1047)
    • r.union теперь возвращает поток, если ему передано два потока (#1081)
    • r.db теперь может быть цепочкой с do в JavaScript-драйвере (#1082)
    • Улучшение сообщения об ошибке при использовании for_each и return_vals вместе (#1104)
    • Исправление ошибки, приводящей к переполнению стека JavaScript-драйвера при работе с объектами, содержащими циклические ссылки (#1133) * Исключение внутренних функций из экспорта в JavaScript-драйвере (#1164)
    • Исправление отображения запросов в Python-драйвере (#1178)
    • Корректное указание зависимости от node >= 0.10 в JavaScript-драйвере (#1197)
  • Сервер
    • Улучшение сообщения об ошибке при несоответствии версий данных (#521)
    • Опция --no-http-admin теперь отключает проверку папки веб-ресурсов (#1092)
    • Больше не компилируется одно и то же выражение JavaScript для каждой строки (#1105)
    • Исправление аварийного завершения работы 32-битной версии из-за использования 64-битных смещений файла (#1129)
    • Исправление аварийного завершения работы из-за поврежденных документов JSON (#1132)
    • Исправление аварийного завершения работы из-за перемещения func_t между потоками (#1157)
    • Улучшение планирования корутин, иногда приводящих к пропускам сердцебиения (#1169)
    • Исправление conflict_resolving_diskmgr_t для поддержки файлов размером более 1 ТБ (#1170)
    • Исправление аварийного завершения работы из-за слишком быстрого отключения (#1182)
    • Исправление сообщения об ошибке при истечении времени ожидания js_runner_t::call (#1218)
    • Исправление аварийного завершения работы из-за сериализации незадействованных значений (#1219)
    • Исправление ошибки, приводящей к провалу утверждения в protob_server_t (#1220)
    • Исправление ошибки, приводящей к открытому большому количеству дескрипторов файлов (#1225)
    • Исправление утечек памяти, выявленных Valgrind (#1233) * Исправлено аварийное завершение работы, спровоцированное тестом BTreeSindex (#1237)
    • Исправлены проблемы с производительностью, прерыванием, парсингом и отчетом об ошибках при импорте (#1252)
    • Proxy RethinkDB больше не аварийно завершается при взаимодействии с веб-интерфейсом (#1276)
  • Тесты
    • Исправлены тесты соединяемости для macOS (#613)
    • Исправлены тесты подключения Python (#1110)
  • Веб-интерфейс
  • Устранены ошибки
  • Предоставлено менее пугающее сообщение об ошибке при превышении времени ожидания запроса (#1074)
  • Предоставлены правильные рекомендации в присутствии комментариев в Data Explorer (#1214)
  • Ссылка "Больше данных" в Data Explorer теперь работает последовательно (#1222)
  • Документация
    • Улучшена документация для update и pluck (#1141)
  • Построение
    • Устранены ошибки, вызывавшие проблемы с перестроением определённых файлов или сборкой файлов, которые не следует строить (#1162, #1215, #1216, #1229, #1230, #1272)---# Версия 1.7.3 (Ночи Кабирии)

Выпущена 19 июля 2013 года

Обновление с исправлением ошибок.

  • RethinkDB больше не завершает работу при попытке создания каталога данных при использовании --directory (#1191)

Версия 1.7.2 (Ночи Кабирии)

Выпущена 18 июля 2013 года

Обновление с исправлением ошибок.* Исправлено сериализование wire_func_t, что приводило к провалу вставок (#1155)

  • Исправлена ошибка в JavaScript-драйвере, которая приводила к неудачной асинхронной связи (#1150)
  • Удалены nice_crash и nice_guarantee для улучшения сообщений об ошибках и журналирования (#1144)
  • rethinkdb import теперь выводит предупреждение при обнаружении непредвиденных файлов (#1143)
  • rethinkdb import теперь правильно импортирует вложенные объекты (#1142)
  • Исправлена ошибка со временем ожидания подключения в JavaScript-драйвере (#1140)
  • Исправлено поведение команды r.without (#1139)
  • Добавлено предупреждение к rethinkdb dump относительно индексов и конфигурации кластера (#1137)
  • Исправлено содержание файла сборки debian/rules для правильного создания пакета rethinkdb-dbg (#1130)
  • Разрешено использование нескольких экземпляров с различными смещениями портов в скрипте инициализации (#1126)
  • Исправлено выполнение make install для того, чтобы оно не использовало /dev/stdin (#1125)
  • Добавлены недостающие файлы в скрипт удаления для macOS (#1123)
  • Исправлена документация для вставки с флагом returnVals в JavaScript (#1122)
  • Больше не кэшируется index.html в веб-интерфейсе (#1117)
  • Скрипт инициализации теперь ждет завершения работы RethinkDB перед повторным запуском (#1115)
  • rethinkdb porcelain теперь удаляет новый каталог, если он не может быть создан (#1070)
  • Добавлено кооперативное блокирование в каталог данных RethinkDB для более раннего выявления конфликтов (#1109)* Улучшены комментарии в образце файла конфигурации (#1078)
  • Парсинг файла конфигурации теперь позволяет использовать опции, применимые к другим режимам работы RethinkDB (#1077)
  • Скрипт инициализации теперь создает папки с правильными разрешениями (#1069)
  • Клиентские драйверы теперь имеют ограничение времени ожидания при длительном процессе установления соединения (#1033)---

Версия 1.7.1 (Ночи Кабирии)

Выпущена 4 июля 2013 года

Обновление с исправлением ошибок.

  • Исправлена ошибка, вызывающая аварийное завершение программы rethinkdb import при работе с одним файлом
  • Добавлены опции для rethinkdb import для использования пользовательских разделителей CSV и отсутствия заголовков (#1112)

Версия 1.7.0 (Ночи Кабирии)

Выпущена 3 июля 2013 года

Эта версия представляет собой введение горячего резервного копирования, атомарных операций чтения и записи, значительных улучшений производительности вставок, синтаксиса вложенных документов и нативных бинарников для CentOS/RHEL. Чтобы узнать больше подробностей, прочитайте блог-пост выпуска.

Новые возможности ##* ReQL

  • Добавлен метод r.json для парсинга строк JSON серверной стороной (#887)

  • Добавлена синтаксическая возможность в метод pluck для доступа к вложенным документам (#889)

  • Метод get_all теперь принимает переменное количество аргументов (#915)

  • Добавлены атомарные операции установки и получения значений (#976)

    • Методы update, insert, delete и replace теперь принимают опциональный аргумент return_vals, который возвращает значения, которые были атомарно изменены
  • Переименован метод getattr в get_field и сделан полиморфным для массивов (#993)

  • Драйверы теперь используют более быстрые библиотеки protobuf при возможности (#1027, #1026, #1025)

  • Драйверы теперь используют r.json для повышения производительности вставок (#1085)

  • Улучшено поведение метода pluck (#1095)

    • Поле со значением, которое нельзя получить через pluck, считается отсутствующим
  • Веб-интерфейс

    • Теперь возможно разрешение конфликтов ключей аутентификации (auth_key) через веб-интерфейс (#1028)
    • Веб-интерфейс теперь использует относительные пути (#1053)
  • Сервер

    • Частота записи на диск снижена для улучшения производительности без влияния на долговечность данных (#520)
  • CLI

    • Добавлены команды импорта и экспорта JSON и CSV файлов (#193)
      • Четыре новых подкоманды: rethinkdb import, rethinkdb export, rethinkdb dump и rethinkdb restore
    • Команда rethinkdb admin больше не требует опции --join (#1052) * По умолчанию она теперь подключается к локальному хосту по адресу localhost:29015.
  • Документация

    • Настройки долговечности правильно документированы (#1008).
    • Улучшены инструкции по миграции (#1013).
    • Допустимые названия таблиц правильно документированы (#1039).
  • Упаковка

    • Создана RPM для CentOS (#268).## Исправленные ошибки ##
  • ReQL

    • Исправлено поведение метода between с использованием null и вторичных индексов (#1001)
  • Веб-интерфейс

    • Перешли на использование исправленной версии Bootstrap, Handlebars.js 1.0.0 и LESS 1.4.0 (#954)
    • Исправлена ошибка, приводящая к отображению вложенных массивов как {...} в Data Explorer (#1038)
    • Теперь правильно распознаются внутренние комментарии в Data Explorer (#1060)
    • Корректно удаляются слушатели событий из представления панели управления (#1044)
  • Сервер

    • Исправлена ошибка, вызывающая аварийное завершение работы сервера при создании вторичных индексов (#1056)
    • Исправлена потенциальная ошибка corruption B-tree (#986)
  • Тестирование

    • Тесты ReQL больше не оставляют зомби-процессы (#1055)

Выпуск 1.6.1 (Фарго)

Выпущен 19 июня 2013 года

Критические исправления безопасности

  • Устранена утечка буфера в сетевом коде
  • Устранён возможный атаковый шаблон времени на ключ API

Другие изменения

  • В Python r.table_list() больше не вызывает ошибку (#1005)
  • Устранены проблемы компиляции с clang 3.2 (#1006)
  • Устранены проблемы компиляции с gcc 4.4 (#1011)
  • Устранены проблемы с разрешением конфликта ключа авторизации (#1024)

Версия 1.6.0 (Фарго)

Выпущена 13 июня 2013 года

Эта версия представляет базовый доступ к управлению, поиск по регулярным выражениям, новые операции над массивами, случайное выборочное образование, лучшую обработку ошибок и множество исправлений ошибок.Чтобы узнать больше подробностей, прочитайте [пост блога выпуска][1.6-blog].

[1.6-blog]: http://rethinkdb.com/blog/1.6-release/## Новые возможности ##* ReQL

  • Добавлена система контроля доступа с использованием единого общего ключа API (#266)
  • Улучшено рукопожатие в протокол клиентского драйвера (#978)
  • Добавлена команда sample для случайной выборки последовательностей (#861, #182)
  • Вторичные индексы могут быть запрошены с помощью булевых значений (#854)
  • Добавлен обратный вызов onFinished к each в JavaScript для улучшения курсоров (#443)
  • Добавлены настройки устойчивости для каждого отдельного запроса (#890)
    • Изменено hard_durability=True на durability='soft'|'hard'
    • Добавлено определение durability к run
  • Добавлена команда with_fields, а также pluck больше не выбрасывает ошибку при отсутствующих атрибутах (#886)
  • Переименовано contains в has_fields (#885)
    • has_fields работает со таблицами, объектами и массивами, и не выбрасывает ошибку при отсутствующих атрибутах
    • contains теперь проверяет наличие элемента в массиве
  • Добавлена команда default: заменяет отсутствующие поля значениями по умолчанию (#884)
  • Добавлены новые операции над массивами (#868, #198, #341)
    • prepend: добавляет элемент в начало массива
    • append: добавляет элемент в конец массива
    • insert_at: вставляет элемент на указанную позицию
    • splice_at: вставляет список в другой список на указанную позицию
    • delete_at: удаляет элемент на указанной позиции
    • change_at: меняет элемент на указанной позиции на указанное значение * Оператор +: объединяет два массива — возвращает упорядоченное объединение
    • Оператор *: повторяет массив n раз
    • difference: удаляет все экземпляры указанных элементов из массива
    • count: возвращает количество элементов в массиве
    • indexes_of: возвращает позиции элементов, совпадающих с указанным значением в массиве
    • is_empty: проверяет, является ли массив или таблица пустым
    • set_insert: добавляет элемент в множество
    • set_intersection: находит пересечение двух множеств
    • set_union: возвращает объединение двух множеств
    • set_difference: возвращает разность двух множеств
  • Добавлена команда match для работы с регулярными выражениями (#867)
  • Добавлена команда keys, которая возвращает поля объекта (#181)
  • Веб-интерфейс
    • Поле документов теперь сортируется в алфавитном порядке в представлении таблицы (#832)
  • Клиентская линия (CLI)
    • Добавлен флаг -v как псевдоним для --version (#839)
    • Добавлен флаг --io-threads для ограничения количества параллельных операций ввода/вывода (#928)
  • Система сборки
    • Разрешено создание документации с использованием Python 3 (#826, #815)
    • Теперь make создаёт Ruby и Python драйверы (#923)

Устранённые ошибки ##* Сервер

  • Устранена ошибка падения сервера при расшифровке во время создания вторичного индекса (#852)
  • Устранены проблемы с оформлением кода: гигиена кода (#805)
  • Очистка кода сервера (#920, #924)
  • Правильная проверка прав доступа для записи файла PID (#916)
  • ReQL
    • Используется правильное имя функции в трассировках (#995)
    • Устранены проблемы с обратными вызовами в драйвере JavaScript (#846)
    • В JavaScript обратный вызов теперь вызывается при закрытии соединения (#758)
    • В JavaScript GETATTR теперь проверяет количество аргументов (#992)
    • Дополнено кофейное исходное дерево для совместимости с более старыми версиями CoffeeScript и Node.js (#963)
    • Устранена опечатка в обработке ошибок в драйвере JavaScript (#961)
    • Устранена регрессия производительности для pluck и without (#947)
    • Обеспечена очистка обратных вызовов в драйвере JavaScript (#942)
    • Улучшены ошибки при отсутствии ключевого слова return в JavaScript (#914)
  • Веб-интерфейс
    • Корректное различие между чувствительными к регистру названиями таблиц (#822)
    • Больше не отображаются некоторые результаты как {...} в представлении таблицы (#937)
    • Обеспечен доступ к таблицам до вывода их индексов (#926)
    • Устранены проблемы автозаполнения для открывающих квадратных скобок (#917)
  • Тесты
    • Изменён полиглотический тестовый фреймворк для выявления большего количества возможных ошибок (#724) * Полиглотические тесты могут теперь запускаться в режиме отладки (#614)
  • Сборка
    • Поиск за libprotobuf в правильной директории (#860, #853)
    • Всегда получение и использование одной и той же версии Handlebars.js (#821, #819, #958)
    • Проверка известных версий LESS, которые работают правильно (#956)
    • Удалена устаревшая опция MOCK_CACHE_CHECK (#804)---

Выпуск 1.5.2 (Ле Грас де Уоте)

Выпущен 24 мая 2013 года

Обновление исправлений ошибок.

Изменения

  • Исправлено #844: Ошибка компиляции при использовании ./configure --fetch protobuf
  • Исправлено #840: Теперь используемый .run в эксплорере данных даёт более полезное сообщение об ошибке
  • Исправлено #817: Устранена ошибка падения при добавлении вторичного индекса под нагрузкой
  • Исправлено #831: Некоторые недействительные запросы больше не приводят к падению

Выпуск 1.5.1 (Те Градьюты, Которых Вы Ели)

Выпущен 16 мая 2013 года

Обновление исправлений ошибок.

Изменения

  • Исправлена ошибка сборки
  • Исправлено #816: Представление таблицы в эксплорере данных больше не повреждено

Выпуск 1.5.0 (Те Градьюты)

Выпущен 16 мая 2013 года

Этот выпуск представляет собой введение вторичных индексов, улучшение стабильности и производительности, а также множество исправлений ошибок. Чтобы ознакомиться с подробностями, прочитайте блог-пост выпуска.

Новые возможности ##* Сервер

  • #69: Ошибочные JavaScript сниппеты больше не могут зацикливать сервер

    • r.js теперь принимает необязательный аргумент timeout
  • #88: Добавлены вторичные и составные индексы

  • #165: Отладочные трассировки на OS X

  • #207: Добавлена опция мягкой выдержки данных

  • #311: Добавлен режим демона (через --daemon)

  • #423: Разрешено логирование в конкретный файл (через --log-file)

  • #457: Значительное повышение производительности при пакетной вставке данных

  • #496: Связывание с libc++ на OS X

  • #672: Вместо контрольных точек среды использованы указатели-разделители в слое ReQL, что уменьшило потребление памяти

  • #715: Поддержка записи без ответа добавлена

  • Клиентская утилита командной строки

    • #566: В админской утилите командной строки, ls tables --long теперь включает колонку durability
  • Веб-интерфейс

    • #331: Улучшены отступы и парсинг скобок в эксплорере данных
    • #355: Проверка наличия новых версий RethinkDB через админский интерфейс
    • #395: Автоматическое завершение названий баз данных и таблиц в эксплорере данных
    • #514: Переписана и улучшена система генерации документации
    • #569: Добавлен переключатель для парсинга скобок в эксплорере данных
    • #572: Изменён стиль кнопок в эксплорере данных
    • #707: Добавлен двухэтапный процесс подтверждения при удалении базы данных
  • ReQL

    • #469: Добавлена команда info, которая предоставляет информацию о любом значении ReQL (полезна для получения первичного ключа) * #604: Разрешено итерирование по массивам результатов как если бы они были курсорами в клиенте JavaScript
    • #670: Добавлена опция мягкой выдержки данных к команде table_create
  • Тестирование

    • #480: Выполнение тестов на Travis-CI
    • #517: Улучшены интеграционные тесты
    • #587: Проверка примеров документации API
    • #669: Добавлен цветной вывод для make test## Исправленные ошибки ##
  • Сервер

    • В修复#403:perfmon_result_t的序列化不再依赖于32位/64位
    • В修复#505:减少内存消耗以避免读取查询“tcmalloc:分配失败”时出现故障
    • В修复#510:使绑定到0.0.0.0等同于all
    • В修复#639:修正了在OS X上报告100% CPU利用率的问题
    • В修复#645:更新副本/确认时防止服务器崩溃
    • В修复#665:跨分片查询触发assertion failure: [!br.point_replaces.empty()]问题的修复
    • В修复#750:解决了间歇性的RPCSemilatticeTest元数据交换失败
    • В修复#757:环境检查点代码中的崩溃错误已修复
    • В修复#796:调试模式下批量写入分片表时的崩溃问题已解决
  • Документация

    • В修复#387:记录命令行选项--web-static-directory(自定义Web资源位置)
    • В修复#503:更新过时的useOutdated文档
    • В修复#563:修复typeof()的文档
    • В修复#610:为table_create记录可选参数:datacentercache_size
    • В修复#631:修复reduce文档中缺少的参数
    • В修复#651:将protobuf文件中的注释更新为当前规范
    • В修复#679:更正protobuf规范中的不正确示例
    • В修复#691:API文档中zip示例错误的修复
  • Веб-интерфейс

    • В修复#529:建议箭头不再超出边界
    • В修复#583:改进Data Explorer对table的建议
    • В修复#584:改进Data Explorer建议样式和内容
    • В修复#623:改进模态框边距
    • В修复#629:更新表格视图上的按钮和按钮样式(以及整个UI)
    • В修复#662:命令键不再删除Data Explorer中的文本选择
    • В修复#725:改进Data Explorer中的文档
    • В修复#790:文档中的假值不再显示为空白树视图
  • ReQL

    • В修复#46:向驱动程序添加顶级tableCreatetableDroptableList
    • В修复#125:现在按组进行的归约返回流而不是数组
    • В修复#370:dbListtableList之后的map不再出错
    • В修复#421:从突变操作返回的所有属性现在都包括在内,即使为零(insert, remove, skip, replace, unchanged, error)
    • В修复#525:改善groupBy的错误信息
    • В修复#527:可以表示为整数的数字作为原生整数返回(Примечание: В некоторых местах были использованы английские слова "Fix" вместо их русских эквивалентов для сохранения структуры и смысла оригинала.)
  • В修复#603: В JavaScript-клиенте правильно проверяется количество параметров

  • В修复#632: Объектные ключи в драйвере больше не преобразуются в строки магическим образом

  • В修复#640: Клиент лучше обрабатывает системные прерывания

  • В修复#642: Ruby-клиент больше не выводит сообщения об ошибках при закрытом соединении

  • В修复#650: Python-драйвер успешно отправляет STOP, даже если соединение закрыто

  • В修复#663: JavaScript-объекты теперь корректно обрабатывают значения undefined

  • В修复#678: limit больше не автоматически конвертирует поток в массив

  • В修复#689: Python-драйвер больше не жёстко задаёт имя по умолчанию базы данных

  • В修复#704: typeOf в JavaScript-драйвере больше не повреждает данные

  • В修复#730: Ruby-драйвер больше не принимает лишние функции

  • В修复#733: groupBy теперь может обрабатывать MAKE_OBJ и литералы R_OBJECT протокола буферизации данных

  • В修复#767: Сервер теперь распознаёт все случаи NaN

  • В修复#777: Проблема периодического обрезания сообщений в Ruby-драйвере решена

  • В修复#779: Сервер теперь отказывает в передаче строк, содержащих пустые байты

  • В修复#789: Изменён стиль Ruby-драйвера

  • В修复#799: Python-драйвер обрабатывает параметр use_outdated, заданный как глобальный опция

  • Тестирование

    • В修复#653: make test теперь работает на OS X
  • Сборка

    • В修复#475: Добавлен временный метод для избежания аварийного завершения сборки make -j2 в старых версиях make
    • В修复#541: make clean стал более радикальным
    • В修复#630: Избыточные файлы удалены из дерева исходников RethinkDB
    • В修复#635: Быстрый отказ при использовании проблемной версии coffee-script
    • В修复#694: Улучшение информации о предупреждениях при сборке с помощью clang и ccache
    • В修复#717: Исправление . /configure --fetch-protobuf
  • Перенос

    • В修复#782: Скорость выполнения скриптов переноса увеличена

Другое

Выпуск 1.4.5 (Некоторым нравится жарко)

Выпущен 3 мая 2013 года.

Изменения

Исправление ошибок:

  • Увеличение TCP-приемной очереди (#369).

Выпуск 1.4.4 (Некоторым нравится жарко)

Выпущен 19 апреля 2013 года.

Изменения

Исправление ошибок:

  • Улучшение документации
    • Соответствие вывода команд rethinkdb help и --help (#643)
    • Уточнение деталей клиентского протокола (#649)
  • Ограничение размера данных, возвращаемых методами r.gets, а не только количества значений (#597)
    • Лимит увеличен с 4000 строк до 1 МБ
  • Частичное исправление ошибки: аварийное завершение работы сервера RethinkDB (#621)
  • Исправление ошибки: невозможность вставки объектов, использующих ключ 'self' с помощью драйвера Python (#619)
  • Исправление ошибки: [Веб-интерфейс] Некорректное отображение графиков статистики в фоновых вкладках (#373)
  • Исправление ошибки: [Веб-интерфейс] Большие JSON вызывают зависание Data Explorer (#536)
  • Исправление ошибки: команда импорта не импортирует последнюю строку, если она не имеет конца строки (#637)
  • Исправление ошибки: [Веб-интерфейс] Cubism не отключает некоторые слушатели (#622)
  • Исправление аварийного завершения работы при передаче глобальных опций (#683)

Выпуск 1.4.3 (Некоторым нравится жарко)

Выпущен 10 апреля 2013 года.

Изменения

Исправление ошибок:* Улучшение сетевого кода в драйвере Python

  • Исправление аварийного завершения работы, спровоцированного типовым исключением при использовании concatMap (#568)
  • Исправление аварийного завершения работы при выполнении команды rethinkdb proxy --help (#565)
  • Исправление ошибки в драйвере Python, которое иногда приводило к возврату значения None (#564)---

Выпуск 1.4.2 (Некоторым нравится жарко)

Выпущен 30 марта 2013 года.

Изменения

Исправление ошибок:

  • Замена символов ~ на About в веб-интерфейсе (#485)
  • Добавление документации по фреймингу в спецификацию protobuf (#500)
  • Исправление аварийного завершения работы, спровоцированного .orderBy().skip() и .reduce(r.js()) (#522, #545)
  • Замена MB на GB в сообщении об ошибке (#526)
  • Удаление некоторых точек с запятой из спецификации protobuf (#530)
  • Исправление команды rethinkdb import (#535)
  • Улучшение обработки очень больших запросов в Data Explorer (#536)
  • Исправление затенения переменных в драйвере JavaScript (#546)

Выпуск 1.4.1 (Некоторым нравится жарко)

Выпущен 22 марта 2013 года.

Изменения

Исправление ошибок:

  • Устранение проблемы с драйвером Python для TCP-потоков (#495)
  • Веб-интерфейс: исправление, снижающее количество запросов AJAX (#481)
  • Добавлено использование устаревших данных в js-driver для r.table() (#502)
  • Улучшение производительности протокола RDB в режиме выпуска
  • Устранение проблемы производительности при использовании фильтра с сокращённой синтаксической конструкцией объекта
  • Не прерывать выполнение, если присутствуют опции runuser или rungroup (#512)

Версия 1.4.0 (Some Like It Hot)

Выпущена 18 марта 2013 года.

Изменения

  • Улучшен протокол связи ReQL и клиентские драйверы
  • Новый системный сборщик
  • История запросов в эксплорере данных---

Версия 1.3.2 (Metropolis)

Выпущена 15 января 2013 года.

Изменения

  • Исправлена уязвимость безопасности в HTTP-сервере.

Версия 1.3.1 (Metropolis)

Выпущена 20 декабря 2012 года.

Изменения

  • Исправлена ошибка завершения работы системы на Mac OS X при исключении ReQL.

Версия 1.3.0 (Metropolis)

Выпущена 20 декабря 2012 года.

Изменения

  • Поддержка нативной операционной системы Mac OS X.
  • Поддержка 32-битных систем.
  • Поддержка устаревших систем (например, Ubuntu 10.04).

Версия 1.2.8 (Rashomon)

Выпущена 15 декабря 2012 года.

Изменения

  • Обновление предложений в эксплорере данных для учета недавних изменений в r.row.

Версия 1.2.7 (Rashomon)

Выпущена 14 декабря 2012 года.

Изменения

  • Множество исправлений ошибок.

Версия 1.2.6 (Rashomon)

Выпущена 13 ноября 2012 года.

Изменения

  • Исправление строки версии
  • Исправление ошибки "завершение работы после аварийного завершения"
  • Исправление документов JSON.

Версия 1.2.5 (Rashomon)

Выпущена 11 ноября 2012 года.

Изменения

  • Проверка наличия пустых атрибутов ifaattrs.

Версия 1.2.4 (Rashomon)

Выпущена 11 ноября 2012 года.

Изменения

  • Более надежный поиск локального интерфейса.

Версия 1.2.3 (Rashomon)

Выпущена 9 ноября 2012 года.

Изменения

  • Исправление ошибки в движке запросов, вызывающей неверные результаты для больших диапазонных запросов.---

Версия 1.2.0 (Rashomon)

Выпущена 9 ноября 2012 года.

Изменения

Это первое издание продукта. Оно включает:

  • Модель данных JSON и поддержку немедленной согласованности
  • Распределённые соединения, подзапросы, агрегацию, атомарные обновления
  • Картирование и свёртку в стиле Hadoop
  • Дружественные веб- и командно-строчные средства администрирования
  • Автоматическое восстановление от отказов машин и сетевых сбоев
  • Репликацию и переход на случай отказа между несколькими центрами данных
  • Шардинг и репликацию на несколько узлов
  • Запросы автоматически параллелизируются и распределяются
  • Безопасную работу без блокировки через конкуренцию MVCC

Ограничения

Существует ряд технических ограничений, которые не были включены в архитектуру, но не были решены в этом выпуске из-за временного давления. Они будут решены в последующих выпусках.

  • Запросы записи имеют минимальное складывание пакетов в оперативной памяти и сбрасываются на диск при каждом написании. Это значительно ограничивает производительность записи, особенно на жёстких дисках с вращающимся магнитным полем.
  • Команды диапазона в настоящее время не используют индекс.
  • Система кластеризации имеет бутленик в распространении метаданных кластера. Управление кластерами значительно замедляется, когда используется более шестнадцати шардов.

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/mirrors-RethinkDB.git
git@api.gitlife.ru:oschina-mirror/mirrors-RethinkDB.git
oschina-mirror
mirrors-RethinkDB
mirrors-RethinkDB
main