Skip to content

Prepare What's new for Tarantool 3.3 #4653

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
1 of 3 tasks
p7nov opened this issue Nov 26, 2024 · 1 comment · Fixed by #4663
Closed
1 of 3 tasks

Prepare What's new for Tarantool 3.3 #4653

p7nov opened this issue Nov 26, 2024 · 1 comment · Fixed by #4663
Assignees
Labels
3.3 release-notes Writing and editing release notes

Comments

@p7nov
Copy link
Contributor

p7nov commented Nov 26, 2024

Product: Tarantool
Since: 3.3.0
Root document: https://www.tarantool.io/en/doc/latest/release/
SME: @ KAPANDR, @ sergepetrenko

Details

Features to cover in What's new

From @ sergepetrenko

  • offset_of for indexes and spaces, offset counting for O(log(size)); same for read views in EE (Optimize select with offset option tarantool#8204, https://github.com/tarantool/tarantool-ee/issues/858).
    Related changelogs:
    • Improved performance of tree index methods: select() with the offset
      specified and count() method. The underlying algorithm for these methods is
      changed: the old one's time complexity was O(n), where n is the value of
      offset or the amount of counted tuples. The new algorithm's complexity is
      O(log(size)), where size is the number of tuples stored in the index. Now
      it does not depend on the offset value or the amount of tuples to count. It
      is safe to use these functions with arbitrary big offset values and tuple
      count (gh-8204).
    • Introduced a new offset parameter in the index:pairs method. It allows to
      skip the first tuples of the iterator (gh-8204).
    • Introduced a new index:offset_of method. It allows to get the position in
      the index relative to the iterator direction of a tuple matching the given
      key and iterator (gh-8204).
    • Introduced the new count method of an index and space read view. The method
      returns the amount of tuples in the index (or primary key of a space) matching
      the given key and iterator type (ee-858).
    • Improved performance of memtx tree index read view select() method with
      the offset specified. The underlying algorithm for the method is changed.
      The time complexity of the old algorithm was O(n), where n is the value
      of offset. The new algorithm's complexity is O(log(size)), where size
      is the number of tuples stored in the index. Now it does not depend on the
      offset value. It is safe to use the function with arbitrary big offset
      values (ee-858).
    • Introduced a new offset parameter in the index_read_view:pairs method. It
      allows to skip the first tuples of the iterator (ee-858).
    • Introduced a new index_read_view:offset_of Lua API. It allows to get the
      0-based offset in the index relative to the iterator direction of a tuple
      that matches the given key and iterator type (ee-858).
  • persistent gc state of replicas (Persistent garbage collection state tarantool#10154). Changelog:
    • Now all replicas have WAL GC consumers persisted in the _gc_consumers
      space (gh-10154). The wal_cleanup_delay option is no longer needed,
      so it is deprecated.
  • don't rollback synchronous transaction upon reaching replication_synchro_timeout
    (Deprecate IPROTO_RAFT_ROLLBACK and replication_synchro_timeout tarantool#7486). Changelogs:
    • A new compat option compat.replication_synchro_timeout has been added.
      This option determines whether the replication.synchro_timeout option rolls
      back transactions. When set to 'new', transactions are not rolled back due to
      a timeout. In this mode replication.synchro_timeout is used to wait
      confirmation in promote/demote and gc-checkpointing. If 'old' is set, the
      behavior is no different from what it was before this patch appeared.
    • A new replication.synchro_queue_max_size option limits the number of
      transactions in the master synchronous queue.
      replication.synchro_queue_max_size is measured in the number of bytes to be
      written (0 means unlimited, which was the default behavior before).
      Currently, this option defaults to 16 megabytes. (gh-7486)
  • C API for sending work to TX thread. Changelog:
    • The new public C API functions tnt_tx_push(callback) and tnt_tx_flush()
      allow to send work to TX thread from any other thread.
@p7nov p7nov self-assigned this Nov 26, 2024
@p7nov p7nov added release-notes Writing and editing release notes 3.3 labels Nov 26, 2024
@p7nov p7nov changed the title Prepare What's new for Tarantool 3.3. Prepare What's new for Tarantool 3.3 Nov 26, 2024
p7nov added a commit that referenced this issue Dec 4, 2024
Resolves #4653 

Co-authored-by: Elena Shebunyaeva <[email protected]>
@p7nov
Copy link
Contributor Author

p7nov commented Dec 4, 2024

Additional input from @ Totktonada:

С точки зрения администрирования:

  • Апгрейд лишился ограничений на DDL по сравнению с версиями 3.0, 3.1, 3.2. Это позволяет, например, выдать права на функции до вызова box.schema.upgrade()..
  • Появились isolated-инстансы (без iproto, read-only, данные по репликации не получают и не отправляют)
  • Появился режим автоматической отмены регистрации реплики, если ее удалили из конфига.
  • Опция для лимитирования доступного размера Lua-памяти.
  • Много доработок по failover-координатору:
    • Исправление рейсов с начальным бутстрапом репликасета.
    • Логгирование в файл.
    • Поддержка config storage вместо etcd в качестве stateboard.
    • Автообновление конфигурации.
    • Конфигурирование приоритетов инстансов (кто первее будет мастером при доступности) и learners (кто никогда не должен стать мастером).

Для разрабочика роли или приложения:

  • JSON-схема для кластерного конфига.
  • В ролях появился коллбек on_event для реакции на RO/RW.
  • Возможность поднять или убрать алерт из роли или приложения.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
3.3 release-notes Writing and editing release notes
Projects
None yet
Development

Successfully merging a pull request may close this issue.

1 participant