Skip to content
Snippets Groups Projects
  1. Oct 09, 2012
    • Konstantin Osipov's avatar
      fiber_create(), palloc(): throw OOM exception · 6755c708
      Konstantin Osipov authored
      Now that the network layer is exception aware, slowly
      transit with the rest of Tarantool subsistems to
      exception-based error handling model.
      
      Make sure fiber_create() throws an exception
      if there is insufficient memory for fiber or its
      stack. Make the rest of the code aware of the change.
      6755c708
  2. Oct 08, 2012
    • Konstantin Osipov's avatar
      Dont' malloc() struct coio. · bba8f4af
      Konstantin Osipov authored
      Dont' malloc() struct coio.
      It's tiny and safe (unless ev_io_start() is done) to pass
      around by value.
      bba8f4af
    • Konstantin Osipov's avatar
      Extract cooperative IO from fiber.m. · 4a76b67f
      Konstantin Osipov authored
      Make all subsystems (administrative console,
      replication, memcached, binary protocol) use exception-based
      socket API (sio.m).
      
      Remove all fiber members related to socket I/O.
      Remove fiber->peer and fiber->cookie.
      The idea of the cookie is to preserve in the WAL
      the originator of the request. This information is, however,
      lost when saving a snapshot. To my knowledge there is no use
      of this functionality, apart from pretty-printing
      the WAL.
      
      Peer is like cookie, but is textual and is used
      for logging. However, now, as long as network errors
      occur outside fiber context, most of the usefulness
      is lost. The only remaining case is when someone is
      trying to execute a write request on a read-only port.
      
      For all other cases, sio.m already supplies SocketError
      with peer name, and this is where it's most useful.
      4a76b67f
    • Konstantin Osipov's avatar
      Make it possible to pass variadic arguments to fiber_call. · 1615d219
      Konstantin Osipov authored
      Change a single void * pointer passed to fiber_create
      to a variadic list passed to every fiber_call().
      1615d219
  3. Oct 05, 2012
    • Konstantin Osipov's avatar
      Extract netwrok I/O from fiber I/O and make it exception-safe. Step 1. · fcb34167
      Konstantin Osipov authored
      Introduce two levels of new API: sio.h (the basic
      socket IO) and evio.h (libev integrated socket IO).
      
      Start changing the code base to use the new API.
      Begin with replication.m.
      fcb34167
    • Konstantin Osipov's avatar
      Refactoring: make sure row applier is called with context. · a48b9108
      Konstantin Osipov authored
      When we recover either from a remote source or
      from local log file/snapshot, a module "apply row" function
      is invoked. Up until now this function
      was invoked with a single argument - the row to apply,
      and there were no context which would be passed around.
      
      This worked fine as long as fibers were "all inclusive" --
      i.e. contained all possible context which a function may need.
      
      Now, when networking API and IO handles are split from
      struct fiber, they need to be passed around explicitly,
      in particular, into row apply function.
      
      Prepeare the code base for this.
      a48b9108
    • Konstantin Osipov's avatar
      Update AUTHORS · 8e464b42
      Konstantin Osipov authored
      8e464b42
  4. Oct 04, 2012
  5. Oct 05, 2012
  6. Oct 04, 2012
  7. Oct 03, 2012
  8. Oct 02, 2012
  9. Sep 30, 2012
  10. Sep 26, 2012
  11. Sep 24, 2012
  12. Sep 21, 2012
  13. Sep 19, 2012
  14. Sep 18, 2012
  15. Sep 17, 2012
  16. Sep 16, 2012
    • Konstantin Osipov's avatar
    • Konstantin Osipov's avatar
      A fix and a test case for Bug#1051006 · 52a25610
      Konstantin Osipov authored
      A fix and a test case for Bug#1051006
      "Tree iterators return garbage if an index is modified between calls"
      
      Mark in a deleted node in sptree.h that it's been  put into the
      garbage heap. When iterting over a garbage collected node, skip it,
      and go up the stack until we find the first valid node.
      
      This breaks the "sorted" quality of tree iterators in case there
      are modifications between invocations of an iterator:
      it is possible that a node is deleted and recycled, and we don't see
      it in the iterator. When we go up the stack, we can jump to a different
      part of the range than the one the recycled node belongs to.
      . With this fix, it is also possible, that the iteration goes more
      than once over entire tree range. But it's a good enough quick fix for a
      crashing expire loop, which uses the tree iterator over the primary key to
      scan the entire range and deletes expired keys on the go (additionally,
      deletions may occur between invocations of the expire loop).
      52a25610
  17. Sep 14, 2012
Loading