• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

tarantool / tarantool / 12610
83%
master: 88%

Build:
Build:
LAST BUILD BRANCH: tests_2Kb
DEFAULT BRANCH: master
Ran 26 Jun 2018 07:32PM UTC
Jobs 1
Files 301
Run time 38s
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

pending completion
12610

push

travis-ci

kostja
vinyl: fix read iterator skips source after reading cache

If a source is used on a read iteration (i.e. the key at which it is
positioned is the next best match or, in terms of the read iterator
implementation, its front_id matches the read iterator front_id), its
history is cleaned up, see vy_read_iterator_apply_history(). This breaks
the logic behind vy_read_src_is_behind(), which assumes that the history
always points to the last used key. As a result, a source may be
mistakenly skipped, as illustrated below:

  Fiber 1                               Fiber 2
  -------                               -------
  1. Opens read iterator.
  2. Advances it to the next key.
     The returned key was read from
     a mem or run (not from cache).
     The source's history is emptied.
                                        Adds a chain containing
                                        the key read by fiber 1
                                        to the cache.
  3. Continues iteration, reads
     next few keys from the cache
     until the chain ends. The source
     used at step 2 is skipped.
  4. Calls vy_read_src_is_behind()
     on the source used at step 2 and
     skipped at step 3. It returns
     false, because its history is
     empty, thus skipping keys stored
     in it.

Fix this bug by moving the code that checks whether a source iterator
needs to be advanced from vy_read_src_is_behind() to source iterator
'skip' method, because there we always know the last key returned by
the iterator.

Basically, this returns the code we had before commit b4d57284d270
("vinyl: consolidate skip optimization checks in read iterator").

Closes #3477

28 of 28 new or added lines in 5 files covered. (100.0%)

39571 of 48295 relevant lines covered (81.94%)

887898.4 hits per line

Jobs
ID Job ID Ran Files Coverage
3 12610.3 (TARGET=coverage) 26 Jun 2018 07:32PM UTC 0
81.94
Travis Job 12610.3
Source Files on build 12610
Detailed source file information is not available for this build.
  • Back to Repo
  • Travis Build #12610
  • 13f4355c on github
  • Prev Build on 1.10 (#12609)
  • Next Build on 1.10 (#12624)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc