@@ -86,6 +86,7 @@ if not M then
86
86
total_bucket_count = 0 ,
87
87
errinj = {
88
88
ERRINJ_CFG = false ,
89
+ ERRINJ_CFG_OUTDATED_DELAY = false ,
89
90
ERRINJ_RELOAD = false ,
90
91
ERRINJ_CFG_DELAY = false ,
91
92
ERRINJ_LONG_RECEIVE = false ,
@@ -964,9 +965,11 @@ local function recovery_step_by_type(type)
964
965
if err == nil then
965
966
err = ' unknown'
966
967
end
967
- log .info (start_format , type )
968
- log .error (' Error during recovery of bucket %s on replicaset ' ..
969
- ' %s: %s' , bucket_id , peer_id , err )
968
+ if err .name ~= ' OBJECT_IS_OUTDATED' then
969
+ log .info (start_format , type )
970
+ log .error (' Error during recovery of bucket %s ' ..
971
+ ' on replicaset %s: %s' , bucket_id , peer_id , err )
972
+ end
970
973
is_step_empty = false
971
974
end
972
975
goto continue
@@ -1854,7 +1857,7 @@ local function bucket_send_xc(bucket_id, destination, opts, exception_guard)
1854
1857
{bucket_id , id , data }, opts )
1855
1858
bucket_generation =
1856
1859
bucket_guard_xc (bucket_generation , bucket_id , sendg )
1857
- if not status then
1860
+ if not status and err . name ~= ' OBJECT_IS_OUTDATED ' then
1858
1861
return status , lerror .make (err )
1859
1862
end
1860
1863
limit = consts .BUCKET_CHUNK_SIZE
@@ -1866,7 +1869,7 @@ local function bucket_send_xc(bucket_id, destination, opts, exception_guard)
1866
1869
end
1867
1870
status , err = master_call (replicaset , ' vshard.storage.bucket_recv' ,
1868
1871
{bucket_id , id , data }, opts )
1869
- if not status then
1872
+ if not status and err . name ~= ' OBJECT_IS_OUTDATED ' then
1870
1873
return status , lerror .make (err )
1871
1874
end
1872
1875
while M .errinj .ERRINJ_LAST_SEND_DELAY do
@@ -1896,7 +1899,7 @@ local function bucket_send_xc(bucket_id, destination, opts, exception_guard)
1896
1899
-- the same bucket is activated on the destination.
1897
1900
status , err = master_call (replicaset , ' vshard.storage.bucket_recv' ,
1898
1901
{bucket_id , id , {}, {is_last = true }}, opts )
1899
- if not status then
1902
+ if not status and err . name ~= ' OBJECT_IS_OUTDATED ' then
1900
1903
return status , lerror .make (err )
1901
1904
end
1902
1905
return true
@@ -2901,9 +2904,11 @@ local function rebalancer_service_f(service)
2901
2904
rs , ' vshard.storage.rebalancer_apply_routes' , {src_routes },
2902
2905
{timeout = consts .REBALANCER_APPLY_ROUTES_TIMEOUT })
2903
2906
if not status then
2904
- log .error (service :set_status_error (
2905
- ' Error during routes appying on "%s": %s. ' ..
2906
- ' Try rebalance later' , rs , lerror .make (err )))
2907
+ if err .name ~= ' OBJECT_IS_OUTDATED' then
2908
+ log .error (service :set_status_error (
2909
+ ' Error during routes appying on "%s": %s. ' ..
2910
+ ' Try rebalance later' , rs , lerror .make (err )))
2911
+ end
2907
2912
service :set_activity (' idling' )
2908
2913
lfiber .sleep (consts .REBALANCER_WORK_INTERVAL )
2909
2914
goto continue
@@ -3757,6 +3762,9 @@ local function storage_cfg_xc(cfgctx)
3757
3762
lschema .cfg (new_cfg )
3758
3763
lreplicaset .rebind_replicasets (new_replicasets , M .replicasets )
3759
3764
lreplicaset .outdate_replicasets (M .replicasets )
3765
+ while M .errinj .ERRINJ_CFG_OUTDATED_DELAY do
3766
+ lfiber .sleep (0.01 )
3767
+ end
3760
3768
lreplicaset .create_workers (new_replicasets )
3761
3769
M .replicasets = new_replicasets
3762
3770
M .this_replicaset = new_replicasets [replicaset_id ]
0 commit comments