[tarantool-patches] Re: [PATCH 2/2] Fix discovery/reconfigure race
Alex Khatskevich
avkhatskevich at tarantool.org
Wed Jun 27 22:50:01 MSK 2018
>> ...
>> +--
>> +-- Check route_map is not filled with old replica objects after
>> +-- reconfigure.
>> +--
>> +-- Simulate long `callro`.
>> +vshard.router.internal.errinj.ERRINJ_LONG_DISCOVERY = true;
>> +---
>> +...
>> +while not vshard.router.internal.errinj.ERRINJ_LONG_DISCOVERY ==
>> 'waiting' do
>
> 1. Why 'not value == needed_value'? Why not 'value ~= needed_value'?
> And how
> does it work? I checked this thing in Lua and got these results:
>
> Please, investigate why your test passes even without this cycle again.
Priorities...
Fixed.
Test was passing because it always passes on the new implementation, and
fails only on old implementation and this cycle makes the probability
of failure 100% in this case.
After your finding, I have returned the old implementation and made sure
that it really fails.
>
>> + vshard.router.discovery_wakeup()
>> + fiber.sleep(0.02)
>> +end;
>> +---
>> +...
>> +vshard.router.cfg(cfg);
>> +---
>> +...
>> +route_map = vshard.router.internal.route_map
>> +for bucket_id, _ in pairs(route_map) do
>> + route_map[bucket_id] = nil
>> +end;
>
> 2. Why not just 'vshard.router.internal.route_map = {}' ?
Fixed
More information about the Tarantool-patches
mailing list