vinyl: unthrottle scheduler on manual checkpoint
Before this patch box.snapshot() bails out immediately if it sees that the scheduler is throttled due to errors. For instance: box.error.injection.set('ERRINJ_VY_RUN_WRITE', true) snapshot() -- fails due to ERRINJ_VY_RUN_WRITE box.error.injection.set('ERRINJ_VY_RUN_WRITE', false) snapshot() -- still fails despite the fact that injected error is unset As a result, one has to wait up to a minute to make a snapshot. The reason why throttling was introduced was to avoid flooding the log in case of repeating disk errors. What is more, to deal with schedule throttling in tests, we had to introduce a new error injection (ERRINJ_VY_SCHED_TIMEOUT). It reduces time duration during which the scheduler remains throttled, which is ugly and race prone. So, let's unthrottle scheduler when checkpoint process is launched via manual box.snapshot() invocation. Closes #3519
Showing
- src/box/vinyl.c 1 addition, 1 deletionsrc/box/vinyl.c
- src/box/vy_scheduler.c 14 additions, 7 deletionssrc/box/vy_scheduler.c
- src/box/vy_scheduler.h 1 addition, 1 deletionsrc/box/vy_scheduler.h
- test/box/errinj.result 0 additions, 8 deletionstest/box/errinj.result
- test/box/errinj.test.lua 0 additions, 2 deletionstest/box/errinj.test.lua
- test/vinyl/errinj.result 0 additions, 8 deletionstest/vinyl/errinj.result
- test/vinyl/errinj.test.lua 0 additions, 3 deletionstest/vinyl/errinj.test.lua
- test/vinyl/errinj_stat.result 0 additions, 8 deletionstest/vinyl/errinj_stat.result
- test/vinyl/errinj_stat.test.lua 0 additions, 2 deletionstest/vinyl/errinj_stat.test.lua
- test/vinyl/errinj_vylog.result 0 additions, 28 deletionstest/vinyl/errinj_vylog.result
- test/vinyl/errinj_vylog.test.lua 0 additions, 8 deletionstest/vinyl/errinj_vylog.test.lua
Loading
Please register or sign in to comment