- Description:
- [Mirror] Middleware for data
- Last Change:
- Clone URL:
Commit Briefs
ctl: added functionality to detect and prune dead replicas (OKriw/gh-3110-prune-dead-replica-from-replicaset-2.1)
After restart of replicaset or after some configuration changes replicaset may suffer from littering the system space by "dead" replicas. To detect and throw away such replica replicaset_list_inactive(), replica_prune(), replicaset_purge() are introduced. replicaset_list_inactive() returns uuid table of dead replicas replica_prune(uuid) throws away replica with given id from system space replicaset_purge([uuid]) throws away table of dead replicas, that is provided by admin or by replicaset_list_inactive(). Closes #3110 @TarantoolBot document Title: Introduce replicaset_list_inactive(), replica_prune(uuid), replicaset_purge([uuid]) After some changes in replicaset (restart, configuration change) replicaset may suffer from leftovers or previous configurations: empty replicas with uuid, but without any read/write activity. To delete such trash from system the space space, replicaset_list_inactive(), replica_prune(), replicaset_purge() are introduced. replicaset_list_inactive() lists uuid table of such "zombie" replicas. replica_prune(uuid) throws away replica with given id from system space replicaset_purge([uuid]) throws away table of dead replicas, that is provided by admin or by replicaset_list_inactive().
sql: check read access while executing SQL query
Since SQL front-end is not using box API, no checkes for read access are performed by VDBE engine. Add check to IteratorOpen op-code to make sure that read privilege exists for given space. Note, that there's is no need to perform DML/DDL checkes as they're performed by Tarantool's core. @TarantoolBot document Title: Document behaviour of SQL in presence of read access restrictions. Need to clarify, that if there's no read access to the space, then not only SELECT statements will fail, but also those DML which implies reading from spaces indirectly, e.g.: UPDATE t1 SET a=2 WHERE b=3; Closes #2362
sql: use space_by_name in SQL
Since hash, which maps space name to space pointer was introduced in previous patch, use it in SQL front-end as it is heavily needed. @locker: removed a couple of useless assertions and variable renames
schema: add space name cache
Since SQL is heavily using name -> space mapping, introduce (instead of scanning _space space) dedicated cache, which maps space name to space pointer. @locker: code cleanup
alter: install space commit/rollback triggers before preparing sql view
sql_compile_view() may fail, in which case the space will never be deleted from (in case of space creation) or inserted back into (in case of space drop) the space cache, because commit/rollback triggers, which are supposed to do the job, are only installed after preparing a view. Fix this by installing triggers before sql_compile_view(). No need to write a test as without this commit sql/view test will crash after applying the next commit (the one that introduces space name cache). Fixes commit dc358cb01428 ("sql: rework VIEW internals").
sql: fix fk set null clause
After changing behavior of the `IS` operator (#b3a3ddb571), `SET NULL` was rewritten to use `EQ` instead. Which doesn't respect NULLs. This commit fixes the null related behavior by emitting logical constructions equivalent for this case to old `IS`. The new expression works differently than old `IS` for nulls, however the difference doesn't change anything, because matched rows are then searched in a child table with `EQ` expression which do not match nulls. Before: `oldval` old_is `newval` Now: `oldval` is_null or (`newval` is_not_null and `oldval` eq `newval`) Closes #3645
lua: fix tuple cdata collecting
In some cases luajit does not collect cdata objects which were transformed with ffi.cast as tuple_bless does. In consequence, internal table with gc callback overflows and then lua crashes. There might be an internal luajit issue because it fires only for jitted code. But assigning a gc callback before transformation fixes the problem. Closes #3751
Branches
Tree
README.md
# Tarantool [![Build Status][travis-badge]][travis-url] [![Code Coverage][coverage-badge]][coverage-url] [![Telegram][telegram-badge]][telegram-url] [![Slack][slack-badge]][slack-url] [![Gitter][gitter-badge]][gitter-url] [![Google Groups][groups-badge]][groups-url] http://tarantool.org Tarantool is an in-memory database and application server. Key features of the application server: * 100% compatible drop-in replacement for Lua 5.1, based on LuaJIT 2.1. Simply use #!/usr/bin/tarantool instead of #!/usr/bin/lua in your script. * full support for Lua modules and a rich set of own modules, including cooperative multitasking, non-blocking I/O, access to external databases, etc Key features of the database: * MsgPack data format and MsgPack based client-server protocol * two data engines: 100% in-memory with optional persistence and a 2-level disk-based B-tree, to use with large data sets * multiple index types: HASH, TREE, RTREE, BITSET * asynchronous master-master replication * authentication and access control * the database is just a C extension to the app server and can be turned off Supported platforms are Linux/x86 and FreeBSD/x86, Mac OS X. Tarantool is ideal for data-enriched components of scalable Web architecture: queue servers, caches, stateful Web applications. To download and install Tarantool as a binary package for your OS, please visit https://tarantool.org/en/download/download.html. To build Tarantool from source, see detailed instructions in the Tarantool documentation at https://tarantool.org/en/doc/dev_guide/building_from_source.html. Please report bugs at http://github.com/tarantool/tarantool/issues We also warmly welcome your feedback in the discussion mailing list, tarantool@googlegroups.com. Thank you for your interest in Tarantool! [travis-badge]: https://api.travis-ci.org/tarantool/tarantool.svg?branch=2.1 [travis-url]: https://travis-ci.org/tarantool/tarantool [coverage-badge]: https://coveralls.io/repos/github/tarantool/tarantool/badge.svg?branch=2.1 [coverage-url]: https://coveralls.io/github/tarantool/tarantool?branch=2.1 [groups-badge]: https://img.shields.io/badge/Google-Groups-orange.svg [groups-url]: https://groups.google.com/forum/#!forum/tarantool [telegram-badge]: https://img.shields.io/badge/Telegram-join%20chat-blue.svg [telegram-url]: http://telegram.me/tarantool [slack-badge]: https://img.shields.io/badge/Slack-join%20chat-lightgrey.svg [slack-url]: http://slack.tarantool.org/ [gitter-badge]: https://badges.gitter.im/Join%20Chat.svg [gitter-url]: https://gitter.im/tarantool/tarantool