|
Ran
|
Jobs
1
|
Files
514
|
Run time
2min
|
Badge
README BADGES
|
push
github
vinyl: fix race between manual compaction and range splitting To force compaction, index:compact() sets the needs_compaction flag on all ranges of the target LSM tree. When a range is split, the new ranges inherit this flag. The problem is that there's a yield caused by vy_log_tx_commit() between setting the flag in vy_lsm_split_range() and adding the new ranges to the LSM tree. If vinyl_index_compact() is called while vy_lsm_split_range() is waiting for vy_log_tx_commit() to complete, the needs_compaction flag will be set for the old range but not for the new ranges hence compaction won't be triggered for them. This breaks assumptions made by some tests (select_consistency_test, for example). Fix this issue by setting the needs_compaction flag right before modifying the LSM tree, after the vylog record is committed. Note that vy_lsm_coalesce_range() isn't affected because it already sets the flag after the vylog write. Closes #11019 NO_DOC=bug fix NO_TEST=checked by existing tests; difficult to reproduce NO_CHANGELOG=minor issue; unlikely to happen; no adverse effects; easy to work around (just call index:compact() again) (cherry picked from commit 501ef6165)
68805 of 122095 branches covered (56.35%)
3 of 3 new or added lines in 1 file covered. (100.0%)
32 existing lines in 17 files now uncovered.101492 of 116211 relevant lines covered (87.33%)
1962454.01 hits per line
| Lines | Coverage | ∆ | File |
|---|---|---|---|
| 1 |
90.51 |
-0.63% | src/box/engine.c |
| 1 |
94.74 |
-1.75% | src/box/engine.h |
| 1 |
95.89 |
-0.05% | src/box/iproto.cc |
| 1 |
85.48 |
-1.61% | src/box/lua/ctl.c |
| 1 |
92.45 |
-0.47% | src/box/recovery.cc |
| 1 |
95.28 |
0.0% | src/box/replication.cc |
| 1 |
93.56 |
-0.16% | src/box/txn_limbo.c |
| 1 |
90.14 |
-0.08% | src/box/vy_log.c |
| 1 |
93.62 |
-0.53% | src/box/vy_range.c |
| 1 |
84.39 |
0.23% | src/box/xlog.c |
| 1 |
92.93 |
-0.1% | src/lib/core/fiber.c |
| 2 |
86.27 |
-0.42% | src/box/vy_stmt.c |
| 2 |
97.46 |
0.0% | src/lib/msgpuck/msgpuck.h |
| 3 |
90.65 |
-0.1% | src/box/box.cc |
| 3 |
94.44 |
-0.98% | src/box/gc.c |
| 5 |
92.16 |
-0.23% | src/box/vinyl.c |
| 6 |
94.66 |
-1.23% | src/box/vy_read_iterator.c |
| ID | Job ID | Ran | Files | Coverage | |
|---|---|---|---|---|---|
| 1 | 13459363141.1 | 514 |
87.33 |
GitHub Action Run |
| Coverage | ∆ | File | Lines | Relevant | Covered | Missed | Hits/Line | Branch Hits | Branch Misses |
|---|