Skip to content
Snippets Groups Projects
  1. Jul 12, 2011
    • Konstantin Osipov's avatar
      feature-feeder-in-core: review fixes · cc14fc85
      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.
      cc14fc85
  2. Jul 11, 2011
  3. Jul 08, 2011
  4. Jul 07, 2011
    • Konstantin Shulgin's avatar
      Merge branch 'master' into feature-feeder-in-core-merge · 6a8f51bd
      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
      6a8f51bd
  5. Jul 06, 2011
    • Konstantin Shulgin's avatar
      Imaplement blueprint 'memcached-separate-port'. · 4279a836
      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')
      4279a836
    • Konstantin Shulgin's avatar
      Implement blueprint: 'feature-feeder-in-core'. · 46fe2f68
      Konstantin Shulgin authored
      Handle close replication socket on oposite side was added.
      box replication test was updated.
      46fe2f68
    • Konstantin Shulgin's avatar
      Implement blueprint: 'feature-feeder-in-core'. · 09d4e13d
      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.
      09d4e13d
  6. Jul 05, 2011
    • Konstantin Osipov's avatar
      Memcached: keep only the parser in memcached-grammar.rl. · c75248aa
      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).
      c75248aa
    • Konstantin Osipov's avatar
      a1605dc6
  7. Jul 04, 2011
  8. Jul 01, 2011
  9. Jun 30, 2011
  10. Jun 28, 2011
  11. Jun 27, 2011
  12. Jun 24, 2011
    • Konstantin Osipov's avatar
      Remove diagnostics.[hm] now that we've moved to ObjectiveC exceptions · 7bd374f9
      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.
      7bd374f9
    • Konstantin Osipov's avatar
      Cleanup: remove v04 and v04 snapshot/xlog formats. · ee3e24d7
      Konstantin Osipov authored
      Basic cleanup that removew old/unused code.
      ee3e24d7
    • Konstantin Osipov's avatar
      https://blueprints.launchpad.net/tarantool/+spec/client-error · 9b3d0a76
      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.
      9b3d0a76
    • Konstantin Osipov's avatar
      Test-runner: a number of changes to improve debugging · c992d9d9
      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().
      c992d9d9
    • Konstantin Osipov's avatar
      Handle more gracefully signals sent by the terminal driver · 42833f73
      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.
      42833f73
  13. Jun 23, 2011
  14. Jun 21, 2011
  15. Jun 16, 2011
  16. Jun 15, 2011
    • Konstantin Osipov's avatar
      Blueprint manual-slave-to-master: review fixes · aa2a5bb7
      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.
      aa2a5bb7
Loading