From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from smtpng1.m.smailru.net (smtpng1.m.smailru.net [94.100.181.251]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dev.tarantool.org (Postfix) with ESMTPS id 56AB64696C3 for ; Wed, 25 Mar 2020 02:44:49 +0300 (MSK) From: Vladislav Shpilevoy Date: Wed, 25 Mar 2020 00:44:45 +0100 Message-Id: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Subject: [Tarantool-patches] [PATCH v2 vshard 0/2] storage: introduce upgrade strategy List-Id: Tarantool development patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: tarantool-patches@dev.tarantool.org, olegrok@tarantool.org, yaroslav.dynnikov@tarantool.org The patchset introduces vshard.storage._call() API - one access point for all internal functions. It allows to hide them from the public usage behind one function, and to add/remove internal functions on read-only replicas using restart or hot code reload. The new call is going to be firstly used by the new discovery, which currently suffers from too long tx thread usage when fetches millions of buckets. The existing buckets_discovery() function can't be changed because it is public. So a new will be added inside _call(). To make it possible to introduce _call() and remove old functions the patchset describes and implements upgrade strategy, which was not really well thought through and developed until now. Branch: http://github.com/tarantool/vshard/tree/gerold103/gh-227-service-call Issue: https://github.com/tarantool/vshard/issues/227 Changes in v2: - Added upgrade atomicity compatible with 1.9 and 1.10 (no transactional DDL); - New unit/upgrade.test.lua test. Vladislav Shpilevoy (2): storage: introduce upgrade strategy storage: introduce vshard.storage._call() test/unit/box2.lua | 1 + test/unit/upgrade.result | 223 ++++++++++++++++++++++++++++ test/unit/upgrade.test.lua | 134 +++++++++++++++++ test/upgrade/box.lua | 9 ++ test/upgrade/storage_1_a.lua | 11 ++ test/upgrade/storage_1_b.lua | 1 + test/upgrade/storage_2_a.lua | 1 + test/upgrade/storage_2_b.lua | 1 + test/upgrade/suite.ini | 7 + test/upgrade/upgrade.result | 269 ++++++++++++++++++++++++++++++++++ test/upgrade/upgrade.test.lua | 98 +++++++++++++ vshard/storage/init.lua | 237 ++++++++++++++++++++++++++++-- 12 files changed, 983 insertions(+), 9 deletions(-) create mode 120000 test/unit/box2.lua create mode 100644 test/unit/upgrade.result create mode 100644 test/unit/upgrade.test.lua create mode 100644 test/upgrade/box.lua create mode 100644 test/upgrade/storage_1_a.lua create mode 120000 test/upgrade/storage_1_b.lua create mode 120000 test/upgrade/storage_2_a.lua create mode 120000 test/upgrade/storage_2_b.lua create mode 100644 test/upgrade/suite.ini create mode 100644 test/upgrade/upgrade.result create mode 100644 test/upgrade/upgrade.test.lua -- 2.21.1 (Apple Git-122.3)