11local fio = require (' fio' )
2+ local fiber = require (' fiber' )
23
34local t = require (' luatest' )
45
@@ -176,7 +177,7 @@ pgroup.test_gc_on_storage = function(g)
176177 })
177178end
178179
179- pgroup .test_close_gc_on_router = function (g )
180+ pgroup .test_gc_rv_not_referenced_on_router = function (g )
180181 local _ , err = g .cluster .main_server .net_box :eval ([[
181182 local crud = require('crud')
182183 local foo, err = crud.readview({name = 'foo'})
@@ -187,17 +188,65 @@ pgroup.test_close_gc_on_router = function(g)
187188 collectgarbage("collect")
188189 collectgarbage("collect")
189190 ]] )
191+ fiber .sleep (1 )
190192 t .assert_equals (err , nil )
191193 local res = {}
192- helpers .call_on_storages (g .cluster , function (server , replicaset , res )
194+ helpers .call_on_storages (g .cluster , function (server )
193195 local instance_res = server .net_box :eval ([[
194196 return box.read_view.list()]] )
195- res [ replicaset . alias ] = instance_res
196- end , res )
197- t .assert_equals (res , {[ " s-1 " ] = {}, [ " s-2 " ] = {}})
197+ table.insert ( res , instance_res )
198+ end , res )
199+ t .assert_equals (res , {{}, {}, {}, {}})
198200
199201end
200202
203+ pgroup .test_gc_rv_referenced_on_router = function (g )
204+ helpers .insert_objects (g , ' customers' , {
205+ {
206+ id = 1 , name = " Elizabeth" , last_name = " Jackson" ,
207+ age = 12 , city = " New York" ,
208+ }, {
209+ id = 2 , name = " Mary" , last_name = " Brown" ,
210+ age = 46 , city = " Los Angeles" ,
211+ }, {
212+ id = 3 , name = " David" , last_name = " Smith" ,
213+ age = 33 , city = " Los Angeles" ,
214+ }, {
215+ id = 4 , name = " William" , last_name = " White" ,
216+ age = 81 , city = " Chicago" ,
217+ },
218+ })
219+
220+ local _ , err = g .cluster .main_server .net_box :eval ([[
221+ local crud = require('crud')
222+ local foo, err = crud.readview({name = 'foo'})
223+ if err ~= nil then
224+ return nil, err
225+ end
226+ collectgarbage("collect")
227+ collectgarbage("collect")
228+ rawset(_G, 'foo', foo)
229+ ]] )
230+ fiber .sleep (1 )
231+ t .assert_equals (err , nil )
232+ local obj , err = g .cluster .main_server .net_box :eval ([[
233+ local crud = require('crud')
234+ local foo = rawget(_G, 'foo')
235+ local result, err = foo:select('customers', nil, {fullscan = true})
236+
237+ foo:close()
238+ return result, err
239+ ]] )
240+
241+ t .assert_equals (err , nil )
242+ t .assert_equals (obj .rows , {
243+ {1 , 477 , " Elizabeth" , " Jackson" , 12 , " New York" },
244+ {2 , 401 , " Mary" , " Brown" , 46 , " Los Angeles" },
245+ {3 , 2804 , " David" , " Smith" , 33 , " Los Angeles" },
246+ {4 , 1161 , " William" , " White" , 81 , " Chicago" },
247+ })
248+ end
249+
201250pgroup .test_close = function (g )
202251 local _ , err = g .cluster .main_server .net_box :eval ([[
203252 local crud = require('crud')
@@ -209,12 +258,12 @@ pgroup.test_close = function(g)
209258 ]] )
210259 t .assert_equals (err , nil )
211260 local res = {}
212- helpers .call_on_storages (g .cluster , function (server , replicaset , res )
261+ helpers .call_on_storages (g .cluster , function (server )
213262 local instance_res = server .net_box :eval ([[
214263 return box.read_view.list()]] )
215- res [ replicaset . alias ] = instance_res
216- end , res )
217- t .assert_equals (res , {[ " s-1 " ] = {}, [ " s-2 " ] = {}})
264+ table.insert ( res , instance_res )
265+ end , res )
266+ t .assert_equals (res , {{}, {}, {}, {}})
218267
219268end
220269
0 commit comments