Skip to content
Snippets Groups Projects
  1. Sep 09, 2016
  2. Sep 08, 2016
  3. Sep 07, 2016
    • Roman Tsisyk's avatar
      vinyl: clean up test/vinyl/ suite · f8100077
      Roman Tsisyk authored
      * Remove useless ./vinyl/lock and test/vinyl/suite.lua
      * Fix vinyl/info.test.lua
      
      Follow up ca00c503 and
                24a5e45b
      f8100077
    • Roman Tsisyk's avatar
      vinyl: add min_key to struct vy_range · bfe23238
      Roman Tsisyk authored
      Fixes #1743
      Fixes #1749
      bfe23238
    • Roman Tsisyk's avatar
      vinyl: fix vinyl/info.test.lua · 24a5e45b
      Roman Tsisyk authored
      24a5e45b
    • Vladimir Davydov's avatar
      vinyl: zap index->lock · 4986e878
      Vladimir Davydov authored
      All manipulations on range tree are now done from the tx thread, while
      worker threads only write runs to disk, so the lock is not needed any
      longer.
      4986e878
    • Vladimir Davydov's avatar
      vinyl: split vy_dump into begin and commit stages · f991838a
      Vladimir Davydov authored
      Call 'begin' from task->execute and 'commit' from task->complete.
      'begin' writes runs to the disk, while 'commit' manipulates the range
      tree, renames range files and updates range index. After this change we
      don't need index->lock anymore - the next patch gets rid of it.
      
      This patch makes vy_task look like a real mess - we probably should keep
      arguments for different tasks as structs in a union. Also, the wrappers
      around vy_dump_{begin,commit} as well as vy_range_compact_{begin,commit}
      doesn't look very helpful. But let's leave mere cleanups and refactoring
      up to the following patches.
      
      Closes #1685
      f991838a
    • Vladimir Davydov's avatar
      vinyl: split vy_range_compact into begin and commit stages · 4007b7a6
      Vladimir Davydov authored
      Call 'begin' from task->execute and 'commit' from task->complete.
      'begin' writes runs to the disk, while 'commit' manipulates the range
      tree, renames range files and updates range index. This is a step
      towards removal of index->lock.
      4007b7a6
    • Vladimir Davydov's avatar
      vinyl: switch vy_task to vtable · 6bf24021
      Vladimir Davydov authored
      We need one more operation apart from 'execute'. It is 'complete', which
      may be used to finish the task from the scheduler context and perhaps
      schedule another task. So let's switch vy_task to vtable. Note,
      'complete' is only called if 'execute' finished successfully.
      6bf24021
    • Vladimir Davydov's avatar
      vinyl: fix merge iterator · 263e3098
      Vladimir Davydov authored
      It doesn't work if there are more than 2 sources. The fix is
      self-obvious.
      
      Closes #1725
      263e3098
    • Svyatoslav Feldsherov's avatar
      Remove bps_tree prefix · dac925fd
      Svyatoslav Feldsherov authored
      Fixes #1695
      dac925fd
    • Nick Zavaritsky's avatar
      Socket overhaul (1) · 287e157b
      Nick Zavaritsky authored
       * Internally, libev maintains a list of watchers for each monitored fd.
         Add ev_io_closing(fd), does ev_feed_event() for each watcher affected.
      
       * Add coio_close()  [Public API]
         Wakes all fibers blocked in coio_wait() AND closes the fd.
         Prerequisite for #886 Non-blocking popen.
      
       * Lua socket switched to coio_close(); stop tracking
         waiters explicitly.
      
       * socket ::= { _gc_socket = <ffi:struct gc_socket> }, _gc_socket
         was previously known as socket. Gc_socket stores the fd in
         immutable field.
      
       * Overall socket module cleanup.
      287e157b
    • Nick Zavaritsky's avatar
      Replace ffi greeting_decode with luac · 0e457085
      Nick Zavaritsky authored
      Not a performance bottleneck & ffi is less maintainable.
      0e457085
    • Georgy Kirichenko's avatar
      ca00c503
  4. Sep 06, 2016
    • Konstantin Osipov's avatar
      vinyl: run size is a function of range size; fix races · 9bd64449
      Konstantin Osipov authored
      Make run size a function of range size.
      This makes the races still inherent in vinyl easily exposable.
      Fix the race by better tracking index version in vy_dump() and
      protecting vy_read_iterator_open with a read lock over entire index.
      
      @todo:
      * vy_read_iterator_open() is entirely useless exactly because of the
        race it opens up a window for, a race between open() and get():
        get() has to invoke vy_read_check_versions() and *reopen* the
        iterator again! The iterator API must be reworked to remove
        a useless call, which has to be invoked on demand anyway.
      
      * the race is caused by a broken assertion in the vy_range_tree
        (range index), because vy_dump adds a new run to a range and
        updates run page index, which is used for range comparison in the
        tree. If we change the comparator to use range->minkey, the race
        will be completely gone, because manipulation with the run list will not
        affect range->minkey.
      9bd64449
    • Konstantin Osipov's avatar
      vinyl: remove an unused member, optimize vy_tx_write() · cbfb7e8c
      Konstantin Osipov authored
      Transaction write set is key ordered. We don't need to maintain
      a range list of ranges changed by a transaction - a single range
      is touched only once when flushed by the write set.
      Update range planner metrics when the range is changed.
      cbfb7e8c
    • Roman Tsisyk's avatar
      Debian: add forgotten systemd-tmpfiles configuration, fix warnings · 57b641ab
      Roman Tsisyk authored
      Closes: #1739
      Closes: #1740
      57b641ab
    • Konstantin Osipov's avatar
      vinyl: cleanup and actualize a few configuration parameters · 8dfa71c2
      Konstantin Osipov authored
      * remove dump_age_period; not much added value compared to
        dump_age itself;
      * remove dump_wm; dump_wm is a global constant that
        sets the maximal run size in a range; it must be a function of
        range size, which is defined per space; it's better to estimate
        it automatically (we may vary run size depending on the
        temperature of the run).
      * remove dump_prio; we're abandoning zone-based scheduler,
        and this was merely a handle to prioritize dumps of runs in red
        zone;
      * provide reasonable defaults for dump_age (40 seconds) and
        compact_wm (begin merge when there are at least two runs in a range)
      * update tests
      8dfa71c2
Loading