Skip to content
Snippets Groups Projects
  1. Sep 01, 2015
  2. Aug 27, 2015
  3. Aug 26, 2015
    • Dmitry Simonenko's avatar
      sophia: switch to new storage scheme · b5e87307
      Dmitry Simonenko authored
      Support multi-part keys. Allow key duplicate
      compaction. Reduce storage cost, encode metadata,
      do not store msgpack (except value part).
      Reconstruct tuple on read using index schema.
      
      [replication]
      
      JOIN support temporary put to not working
      condition: there is no way to access possibly
      deleted space schema during the operation
      for a tuple reconstruction
      (multi-thread).
      
      recreate space key_def during join; enable join
      
      sophia: make every operation asynchronous
      
      sophia: fix join cursor and tests
      
      sophia: implement delayed update operation
      
      sophia: make delete write-only
      
      implement Handler::executeReplace
      
      sophia: merge fixes
      
      make upsert operation an engine specific
      
      sophia: make update logic common to memtx
      
      sophia-integration: switch to Sophia v1.2.3; implement upsert
      
      sophia: add half_commit mode support
      
      This mode disables conflict resolution for
      'prepared' transactions and solves the issue with
      concurrent write-write conflicts during wal write/yield.
      
      sophia: do not allocate tuple during replace or update; refactoring
      
      sophia: extend and reorganize test suite
      
      sophia: implement box.sophia()
      
      sophia: #681: support or produce error on space::alter
      
      sophia: extend recover tests
      
      sophia: add separate iterator tests
      
      box: enable per-engine select
      
          * add executeSelect() into engine handler API
          * add MemtxIndex; move preallocated m_position from Index to MemtxIndex
          * remove it->close()
          * remove IteratorGuard class
      
          note: Sysview and Sophia engines yet share the same select code in
          engine::executeSelect() (which does iterator alloc-free)
      
      box: remove close call from box_iterator_free()
      b5e87307
  4. Aug 12, 2015
  5. Jul 06, 2015
  6. Jun 15, 2015
  7. May 18, 2015
  8. Mar 07, 2015
    • Konstantin Osipov's avatar
      recovery: remove dead code which was chasing ghosts (attempt #2) · 039332da
      Konstantin Osipov authored
      Don't try to rename an .inprogrss file in recovery_finalize(): if
      recovery_finalize() can't open it, then xdir_scan() must have
      failed to open it as well, then the file can't end up in the index
      in the first place.
      
      Don't try to re-read a file 3 times (good number, eh), since this
      looks like chasing a ghost. If the original cause for these
      lines of code (lost) is still relevant, then a different fix will
      be necessary.
      
      The original code was apparently trying to cope with a potential
      race condition between local hot standby/replication relay and WAL
      writer, where WAL writer thread first creates a new WAL file, and
      only aft that closes the previous one, while local hot standby
      scans the directory, and then reads all files which it finds in
      the directory.
      
      Apparently, the author of the code believed that some data in the
      file may not be visible to the reader process after it was written
      by the writer process, and the reader could skip this data and
      switch to the next file. The switch can not be postponed, since,
      when reading the file, it's impossible to know whether it's an old
      corrupted file or a new one.
      
      Remove the code, since, according to Linux man page:
      
      POSIX requires that a read(2) which can be proved to occur after a
      write() has returned returns the new data. Note that not all
      filesystems are POSIX conforming.
      
      POSIX says:
      
      Writes can be serialized with respect to other reads and writes.
      If a read of file data can be proven (by any means) to occur after
      a write() of the data, it must reflect that write(), even if the
      calls are made by differen processes. A similar requirement
      applies to multiple write operations to t same file position. This
      is needed to guarantee the propagation of data fr write() calls to
      subsequent read() calls. This requirement is particularly
      significant for networked file systems, where some caching schemes
      violate these semantics.
      
      Note that this is specified in terms of read() and write(). The
      XSI extensions readv() and writev() also obey these semantics. A
      new "high-performance" write analog that did not follow these
      serialization requirements would also be permitted by this
      wording. This volume of IEEE 1003.1-2001 is also silent about any
      effects of application-level caching (such as that done by stdio).
      
      Reorder the events in wal_opt_rotate(): first close the old file,
      and only then open a new one.
      
      Fix a bug in replication that didn't take into account wal_dir_rescan_delay.
      This fix revealed a number of serious races in recovery_follow_f,
      which will be addressed separately.
      039332da
  9. Feb 10, 2015
    • Konstantin Osipov's avatar
      replication: use fibers coio in SUBCRIBE/JOIN · 659670e3
      Konstantin Osipov authored
      Rewrite replication to use cooperative I/O.
      Propagate replication exceptions to the main thread.
      Introduce a function which stats a thread with a running
      event machine in it.
      659670e3
    • Konstantin Osipov's avatar
      replication: run SUBSCRIBE command in a thread · 2051d614
      Konstantin Osipov authored
      Fix a few bugs related to destruction of resources allocated in a
      non-main thread.
      
      Remove replication_prefork() and all the code related to pushing
      a socket into another process.
      Add debug asserts to slab cache, to ensure it's used from a single
      thread only.
      2051d614
  10. Feb 03, 2015
  11. Feb 02, 2015
  12. Jan 26, 2015
  13. Jan 25, 2015
  14. Jan 24, 2015
  15. Jan 23, 2015
  16. Jan 14, 2015
    • Konstantin Osipov's avatar
      Implement coio_stat. · 084fbe61
      Konstantin Osipov authored
      Unit test coio_stat.
      
      Cleanup unit tests a bit: merge unit.h and test.h, which
      would duplicate each other.
      
      Fix a bug in trigger_atexit.test, which would not clean up after
      itself.
      084fbe61
  17. Dec 26, 2014
    • Konstantin Osipov's avatar
      Rename libcore to libserver. · a8dcee6f
      Konstantin Osipov authored
      libcore is a thick a thick bundle with almost everything.
      Rename it to libserver.
      
      Extract the minimal server core with fibers & exceptions into libcore.
      
      Add a prototype unit test for fibers.
      a8dcee6f
  18. Nov 13, 2014
    • Konstantin Osipov's avatar
      gh-578: review fixes · 3f7971ea
      Konstantin Osipov authored
      Fix obvious coding bugs in cord_cojoin/cord_join().
      
      Remove unnecessary constants & arguments.
      Keep an eye on the include dependencies becoming more messy.
      Clear the O_NONBLOCK flag in the join thread, which
      uses non-blocking API.
      Suspend I/O in the main thread event loop for the
      duration of replication join/subscribe.
      3f7971ea
  19. Nov 12, 2014
    • Konstantin Osipov's avatar
      A fix for gh-617 - add a separate fiber key for the current user. · fabb121c
      Konstantin Osipov authored
      Use cached user credentials for global access checks and store
      them in a separate fiber key.
      
      This fixes gh-617 and speeds up privilege checks.
      
      @todo: we need to add a linked list of all user sessions
      to the user cache, as well as all user setuid functions.
      These lists could be used to update privilege cache,
      get/update per-user statistics, disconnect sessions
      of a dropped user.
      fabb121c
  20. Oct 16, 2014
  21. Sep 08, 2014
  22. Jul 23, 2014
  23. Jul 21, 2014
  24. Jul 18, 2014
  25. Jul 17, 2014
  26. Feb 14, 2014
  27. Feb 12, 2014
    • Roman Tsisyk's avatar
      Explicitly use thread-local buffer for C++ exceptions · 250d031a
      Roman Tsisyk authored
      This patch explicitly saves Exception to a thread-local variable inside
      struct cord on tnt_raise(). This variable can be used to safetly
      re-throw last exception from any place (not only from catch() block).
      This technique requires exception to be thrown and catched by pointers.
      tnt_raise macros was rewritten and all 'catch (Exception &)' blocks were
      substituted with 'catch (Exception *e)'.
      
      This patch also adds a new feature to box.raise() function.
      When called without arguments box.raise() re-throws last exception (if
      any).
      
      These changes needed to implement proper handlings of exception for FFI
      calls.
      250d031a
  28. Feb 11, 2014
  29. Feb 08, 2014
  30. Feb 07, 2014
  31. Feb 04, 2014
    • Konstantin Osipov's avatar
      Fiber cord. · 5298465a
      Konstantin Osipov authored
      Introduce a structure to represent a thread with an event
      loop in it.
      
      Do not require a working event loop in say() or wal_opt_sync().
      5298465a
  32. Jan 17, 2014
  33. Jan 15, 2014
Loading