Skip to content
Snippets Groups Projects
  1. Aug 12, 2015
  2. Feb 20, 2013
  3. Apr 25, 2012
  4. Apr 09, 2012
  5. Jan 18, 2012
  6. Sep 02, 2011
  7. Aug 22, 2011
  8. Jul 18, 2011
  9. 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
  10. Jun 27, 2011
  11. Jun 24, 2011
    • 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
  12. Jun 21, 2011
Loading