Skip to content

Commit 72de3e2

Browse files
committed
Support reset of cache with sharding keys
Part of #166
1 parent 8523e5c commit 72de3e2

File tree

3 files changed

+33
-0
lines changed

3 files changed

+33
-0
lines changed

crud/common/sharding_key.lua

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -117,6 +117,11 @@ function sharding_key_module.fetch_on_router(space_name, conn)
117117
return cache.ddl_sharding_keys
118118
end
119119

120+
function sharding_key_module.update_sharding_keys_cache(space_name)
121+
cache.drop_caches()
122+
return sharding_key_module.fetch_on_router(space_name)
123+
end
124+
120125
-- Make sure sharding key definition is a part of primary key.
121126
function sharding_key_module.is_part_of_pk(space_name, space_format,
122127
primary_index, sharding_key_def)

test/helper.lua

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -233,4 +233,13 @@ function helpers.get_other_storage_bucket_id(cluster, bucket_id)
233233
]], {bucket_id})
234234
end
235235

236+
function helpers.update_sharding_keys_cache(cluster, space_name)
237+
return cluster.main_server.net_box:eval([[
238+
local sharding_key = require('crud.common.sharding_key')
239+
240+
local space_name = ...
241+
return sharding_key.update_sharding_keys_cache(space_name)
242+
]], {space_name})
243+
end
244+
236245
return helpers

test/integration/ddl_sharding_key_test.lua

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -527,6 +527,25 @@ pgroup:add('test_delete_secondary_idx', function(g)
527527
t.assert_equals(result, nil)
528528
end)
529529

530+
pgroup:add('test_update_sharding_keys_cache', function(g)
531+
local space_name = 'customers_name_key'
532+
local sharding_key = helpers.update_sharding_keys_cache(g.cluster, space_name)
533+
t.assert_equals(sharding_key, {'name'})
534+
535+
helpers.call_on_servers(g.cluster, {'s1-master', 's2-master'}, function(server)
536+
server.net_box:call('set_sharding_key', {space_name, {'age'}})
537+
end)
538+
sharding_key = helpers.update_sharding_keys_cache(g.cluster, space_name)
539+
t.assert_equals(sharding_key, {'age'})
540+
541+
-- Recover sharding key.
542+
helpers.call_on_servers(g.cluster, {'s1-master', 's2-master'}, function(server)
543+
server.net_box:call('set_sharding_key', {space_name, {'name'}})
544+
end)
545+
sharding_key = helpers.update_sharding_keys_cache(g.cluster, space_name)
546+
t.assert_equals(sharding_key, {'name'})
547+
end)
548+
530549
pgroup:add('test_non_unique_index', function(g)
531550
local space_name = 'customers_name_key_non_uniq_index'
532551
local tuple = {6, box.NULL, 'Victor', 58}

0 commit comments

Comments
 (0)