- Jul 12, 2011
-
-
Konstantin Osipov authored
Fix bugs in spawner child handling, performed at shutdown: - shutdown children more portably - remove races with lost SIGCHLD - do not self-terminate when doing kill(0, signal) (sending signal to entire process group). Clean up custom_proc_title handling and fiber names.
-
- Jul 11, 2011
-
-
Konstantin Osipov authored
Allow fiber_io_* on an fd which is ! fiber->fd, and remove inbox2sock/sock2inbox in replication.
-
Konstantin Osipov authored
-
Konstantin Osipov authored
Fix a merge error (remove debug print).
-
Konstantin Osipov authored
Remove one memory leak in recovery_follow_remote.
-
Konstantin Osipov authored
Rename hot_standby back to local_hot_standby. Let's not break compatibility without a strong need. Merge replication_source_ipaddr and replication_source_port to a single variable, replication_source, to be able to provide a list of sources in future.
-
- Jul 08, 2011
-
-
Konstantin Osipov authored
Update comments in the configuration file. Remove custom proc title for replication, use custom_proc_title of the main process. Renames.
-
- Jul 07, 2011
-
-
Konstantin Shulgin authored
Conflicts: cfg/tarantool_box_cfg.c cfg/tarantool_box_cfg.cfg cfg/tarantool_box_cfg.h cfg/tarantool_feeder_cfg.c cfg/tarantool_feeder_cfg.h core/exception.m core/fiber.m core/log_io.m core/log_io_remote.m include/fiber.h mod/box/box.h mod/box/box.m mod/box/box_cfg.cfg_tmpl mod/box/memcached.m mod/box/memcached.rl mod/feeder/feeder.m test/box_replication/common.result test/box_replication/suite.ini test/lib/admin_connection.py test/lib/box_connection.py test/lib/server.py test/lib/sql_ast.py test/lib/tarantool_box_server.py test/lib/tarantool_connection.py test/lib/tarantool_feeder_server.py test/lib/tarantool_server.py
-
- Jul 06, 2011
-
-
Konstantin Shulgin authored
Blueprint 'Make memcached protocol an alternative, not a replacement': Blueprint was implemented. Memcached now can work in presence of RELOAD CONFIGURATION statement, even if it changes a replica to master or a master to replica. 'memcached' configuration file option was removed. Instead, two new optinos were added: - memcached_port - optional, default 0, if set, specifies which port speaks memcached protocol. - memcached_expire, boolean, which defines whether or not we run expire on memcached namespace. If not set, we simply support the protocol, but ignore TTL and never expire the keys. Original memcached test was ported to tarantool testing environment. cas test was disabled, because tarantool has a non-critical bug (in concurrent environment cas operation can return 'SERVER_ERROR' instead of 'EXISTS')
-
Konstantin Shulgin authored
Handle close replication socket on oposite side was added. box replication test was updated.
-
Konstantin Shulgin authored
Missed inotify even in the replicaor handler process was foxed. replicaor_init was splited on two function: - replicaor_prefork -- create replicaor spawner process; - replicaor_init -- initialize replicaor fibers in the main tarantool process. Test and test configuration files in box_replication soute was clenupped and updated.
-
- Jul 05, 2011
-
-
Konstantin Osipov authored
We modify memcached code quite often, and asking ragel to regenerate .m from .rl file every time .rl file changed was tiresome both for revision control and for code reviews. Leave in memcached-grammar.rl only memcached_dispsatch(), which is generated by ragel, and everything else move to memcached.m. This should lessen cases when we have to re-generate memcached-grammar.m. This patch doesn't produce any code changes, only moves the code (and cleans up include files at start of memcached.m).
-
Konstantin Osipov authored
-
- Jul 04, 2011
-
-
Konstantin Osipov authored
Remove compilation warnings about unused variables. Make sure Release and RelWithDebugInfo do not include -Werror - we don't know compiler version at the client and shouldn't plant time bombs for him/her.
-
- Jul 01, 2011
-
-
Konstantin Shulgin authored
box replication test was updated: - common test was splited on three test: * hot_standby test -- check replication from hot_standby server * swap -- this test iteratively swap services roles (master to replica, replica to master) * consistent -- this is test check replica data consistent - unused configuration files was deleted. - get_param method to tarantool_to_slave
-
Konstantin Shulgin authored
Replicator was updated: - bind replicator poer strategy was changed. - terminate child routine for spawner process during exit was added. - handle EPIPE error was added to client handler process. - remote_hot_standby was deleted. - local_hot_standby was renamed to hot_standby. - sender_send_sock function was fixed. - I/O event processing in replicator fibers was updated. Fiber: - fiber_io_* functions now public.
-
Konstantin Osipov authored
Reorder and simplify calls to box_enter_master_or_replica_mode() in mod_relaod_config(). Move recovery_stop_remote() to log_io_remote.c, where it belongs. Remove now unnecessary recovery_start_remote(), use recovery_follow_remote() (same thing) instead.
-
Konstantin Osipov authored
mode Reorganize the code responsible for entering/leaving master mode. Remove remote_recovery_restart, add remote_recovery_{stop/stop}, make sure we know what to do - start or stop recovery. Move 'remote_recovery' to struct recovery_state. Remove an extra parameter to recover_follow_remote, it's always the same currently.
-
Konstantin Osipov authored
-
- Jun 30, 2011
-
-
Konstantin Osipov authored
-
Konstantin Osipov authored
Fix a coding error: supplying 0 watermark to kh_init(fiber_registry) lead to almost constant kh_resize (on every kh_put after a kh_del).
-
- Jun 28, 2011
-
-
Konstantin Osipov authored
-
Yuriy Vostrikov authored
-
Konstantin Osipov authored
Fix the memory leak which would occur when allocating memory for the "status" string, output by 'show info'. The allocation was done on each RELOAD CONFIGURATION, and old memory was never freed. Fix: use static memory instead of palloc.
-
Konstantin Shulgin authored
PEP8 coding-style for Python code was added. Python code ndentation was changed to PEP8 format.
-
- Jun 27, 2011
-
-
Konstantin Osipov authored
-
Konstantin Osipov authored
-
Konstantin Osipov authored
Make sure we do not have pending updates prior to turning on remote recovery. Get rid of the boolean variable 'box_updates_allowed' and pass a function pointer to iproto_interact instead (one less 'if' on the way of the most common execution flow).
-
- Jun 24, 2011
-
-
Konstantin Osipov authored
Remove diagnostics.[hm] since we should use Objective C exceptions going forward. A few more cleanups related to v03/v04 snapshot/wal format.
-
Konstantin Osipov authored
Basic cleanup that removew old/unused code.
-
Konstantin Osipov authored
Send error messages to the client. Before this patch, Tarantool would only send an error code to the client, but record all the details in its error log. This patch extends the client/server protocol and adds error text to it. This text can now contain not only a staple message that corresponds to the error, but problem-related additional information, such as namespace id, field number, etc. All errors still can be logged in the error log, but not all of them need to be. For errors, which are only sent to the client, this patch uses ClientError exception class. Errors which also need to be logged in the error log must use LoggedError exception class. To choose between the two, the following rule of thumb is applied: - client application errors, which, generally, can be non-errors at all, such as access to a non-existing namespace, index or field, or access to a locked tuple are not logged - execution and protocol errors, such as an error writing to disk, an message that doesn't follow the protocol format, is logged. For the most common error, ER_TUPLE_IS_RO, we do not use string template to reduce CPU cycles necessary to produce this error (on my machine one can raise ~200 000 exceptions per second, which is not too much). An addition to the above, this patch renames error codes, to make them shorter (ERR_CODE_* -> ER_*) and rewrites the iproto.m client connection loop to make it a trifle more efficient. This patch also fixes a couple of bugs: - in exception.m, [tnt_Exception alloc] when we reused the old exception class, we did not reset its 'isa' pointer, which could lead to a crash when a message with a different signature was sent to it. - in box_dispatch (renamed from box_dispach), when logging for slow commands was done, txn->op could already be overwritten by txn_commit()/txn_abort(). A comment on the naming scheme: prefixing every Tarantool piece of method/data structure with tnt_ would lead to very bloated code. So in this patch I decided to reduce the use this prefix to the client library code and some very generic names only.
-
Konstantin Osipov authored
When stopping the server under gdb, send SIGTERM to the server, not to the terminal in which gdb is started. This gives you the option to actually examine gdb output before the test has ended. When the server crashes, and we're reading from it in a client connection, detect EOF and abort reading (the old code was buggy and would busyloop indefinitely in case of a crash). Remove an unnecessary fork() in start().
-
Konstantin Osipov authored
When ctrl-c is pressed on the terminal, a signal (SIGINT) is sent to all members of the foreground process group. Since both wal_writer and logger processes' default action on SIGINT is to terminate, they could terminate before parent. This led to rather nasty results: in the circumstances, when the parent somehow ignored SIGINT (e.g. under GDB), or handled it after its children (a race condition), children would disappear before parent, then parent would detect that wal_writer is gone, try to panic/write to the log, which is also gone, and on top of SIGINT get a SIGPIPE. Move spawned children to their own process groups to make sure they don't belong to the main process' process group, and don't receive signals from the controlling tty. It's okay in the interactive mode, since these children are going to die anyway when the parent dies, after getting a SIGPIPE.
-
- Jun 23, 2011
-
-
Konstantin Osipov authored
Do not try to start another server on a port if it's already in use. This can lead to very confusing results when running tests that start and stop the server in parallel.
-
- Jun 21, 2011
-
-
Konstantin Osipov authored
Remove an extra space in '-e ' option to term, not all terminals (rxvt, for example) can handle the extra space in an option name.
-
Konstantin Osipov authored
Update *.cfg files to newer confetti and comments in the templates.
-
Konstantin Osipov authored
Rename exceptions.[hm] to exception.[hm]. Add copyright information.
-
- Jun 16, 2011
-
-
Konstantin Osipov authored
There were extra quotes in errcode.c, i.e. quotes were part of the error message. Remove them.
-
Konstantin Osipov authored
-
- Jun 15, 2011
-
-
Konstantin Osipov authored
Sweep out the first set of coding bugs in the test suite: - set slab_alloc_arena to 0.05 in all box_replication configurations, since otherwise this suite tries to allocate too much memory and hangs under a VM. - update some texts that make it into the log (spelling) - add logging to all configurations - simplify wait_sync and rename it to wait_lsn - there was a bug in wait_sync that time.sleep() was not called in the body of the loop due to \t, and the loop was a busy-wait one.
-