Skip to content
Snippets Groups Projects
  1. Jun 14, 2012
    • Konstantin Osipov's avatar
      A fix for https://bugs.launchpad.net/tarantool/+bug/790688 · 9d14011f
      Konstantin Osipov authored
      A fix for bug https://bugs.launchpad.net/tarantool/+bug/790688
      "ER_TUPLE_IS_RO should be more rare".
      
      Rewrite the transaction processor to optimistically
      perform changes in memory. In case of an error, transactions
      are rolled back in order, reverse to the order of execution,
      and gradually restore the original state of memory.
      The wal writer therad orchestrates the rollback, by not
      initiating it until all queries which entered the processing queue
      before the error has occurred were not added to the rollback queue.
      
      While in the state of rollback (i.e. collecting all requests
      for rollback) new requests are not accepted into the processing
      queue (see changes in wal_write()).
      
      XXX: This patch makes dirty reads possible when we are in rollback,
      since SELECTs do not enter the wal writer queue and can therefore
      see changes which later will be rolled back. Since this is a
      very rare situation, it's considered acceptable to fix this problem
      in a separate patch (a separate bug will be reported).
      9d14011f
    • Konstantin Osipov's avatar
      Implement a simple unit testing framework. Add the first unit test. · b620082e
      Konstantin Osipov authored
      Extend queue.h with STAILQ_SPLICE and STAILQ_REVERSE.
      Test the new functions in a simple unit testing framework.
      b620082e
    • Konstantin Osipov's avatar
      a263e05e
  2. Jun 13, 2012
  3. Jun 09, 2012
    • Konstantin Osipov's avatar
      Fix a regression with double unlock. · f9d6249b
      Konstantin Osipov authored
      Fix a regression I introduced while refactoring
      txn code with double unlock of txn->old_tuple.
      
      We would assign txn->old_tuple before actually taking
      a lock on it, then call txn_lock(), get an exception,
      and in txn_rollback() unlock a lock which we didn't take.
      
      This lead to an assertion failure or crash under concurrent
      load, when the same tuple was updated from multiple connections.
      f9d6249b
  4. Jun 08, 2012
  5. Jun 07, 2012
  6. Jun 06, 2012
    • Konstantin Osipov's avatar
      Implement error checks in WAL I/O. · e9b83a5e
      Konstantin Osipov authored
      Do not use buffered file I/O which doesn't
      give a precise account of failure, when it happens.
      
      Instead, batch writes to WAL or SNAP files and
      write batches using writev(). If writev() fails,
      we can accurately evaluate which requests (those that
      belong to the batch) were not written to disk.
      
      In case of a partial write, rollback the failed requests,
      and seek back to the end of the last fully written
      request.
      
      To support writev() and IO with file descriptors,
      implement nio library, which provides a set of
      EINTR- and error log- aware wrappers around syscalls.
      e9b83a5e
    • Konstantin Osipov's avatar
      103c06a7
  7. Jun 04, 2012
  8. Jun 01, 2012
  9. May 30, 2012
  10. May 29, 2012
  11. May 28, 2012
  12. May 25, 2012
Loading