8000 Releases · tarantool/vshard · GitHub
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

Releases: tarantool/vshard

0.1.34

17 Jun 12:49
Compare
Choose a tag to compare

Date: 17-06-2025

Tag: 0.1.34

Compatibility

VShard 0.1.34 is almost fully compatible with previous VShard versions. Hot-reloading from an older version to 0.1.34 works. However, hot-reloading from 0.1.34 or later to a version earlier than 0.1.34 does not work and requires additional steps. Either the following code must be executed before the hot-reload, or a restart should be performed:

Before hot-reload from new to old on router

local function worker_cancel(module)
    local worker = module.worker
    if worker ~= nil and worker.fiber ~= nil then
        pcall(worker.fiber.cancel, worker.fiber)
    end
end

local function replicaset_workers_cancel_all(replicasets)
    for _, rs in pairs(replicasets) do
        worker_cancel(rs)
        for _, r in pairs(rs.replicas) do
            worker_cancel(r)
        end
    end
end

-- Execute on routers before reload:
for _, router in pairs(vshard.router.internal.routers) do
    replicaset_workers_cancel_all(router.replicasets)
end

-- Now hot reload can be done:
-- package.loaded['vshard.router'] = nil
-- vshard.router = require('vshard.router')

Before hot-reload from new to old on storage

local function worker_cancel(module)
    local worker = module.worker
    if worker ~= nil and worker.fiber ~= nil then
        pcall(worker.fiber.cancel, worker.fiber)
    end
end

local function replicaset_workers_cancel_all(replicasets)
    for _, rs in pairs(replicasets) do
        worker_cancel(rs)
        for _, r in pairs(rs.replicas) do
            worker_cancel(r)
        end
    end
end

-- Execute on storages before reload:
replicaset_workers_cancel_all(vshard.storage.internal.replicasets)

-- Now hot reload can be done:
-- package.loaded['vshard.storage'] = nil
-- vshard.storage = require('vshard.storage')

Ignoring these actions will result in duplicate internal services.

Functionality added or changed

  • vshard.storage.bucket_ref() has been optimized and now works faster (#285).

  • Master discovery has been optimized for better performance. However, the router can no longer discover multiple masters within a replicaset (#541, #549).

  • Introduced the connection_fetch_schema option, which allows disabling fetching schema in vshard connections (#408).

  • bucket_ids option in partial map_callrw can now be a key-value table in addition to an array. When bucket_ids is key-value table, the values are treated as split arguments, which are passed only to the replicasets that have the corresponding buckets (#539).

  • Introduced failover configuration options: failover_sequential_fail_count - how many failed requests must be done before marking replica as unhealthy; failover_interval - how often replicas are pinged; failover_replica_lag_limit - the maximum number of seconds replica can lag from master before it's marked as unhealthy (#505).

Bugs fixed

  • All types of read-only requests now skip dead replicas. Previously, it worked only for callro (#505).

  • Fixed vshard.storage.info(), which incorrectly showed alerts for all connected replicas, e.g. disconnected anon replicas caused alert. Now only replicas from configuration are shown (#493).

  • Fixed vshard.storage.info(), which could fail with LuaJIT error, if replica had upstream = nil in box.info.replication (#513).

  • Fixed GC not deleting outdated bucket routes from memory (#546).

  • Fixed a router not retrying TRANSFER_IN_PROGRESS error (#548).

  • Fixed the rebalancer being blocked for timeout of map_callrw request, when partial map_callrw failed with error (#554).

  • Fixed the failover assertion failure during rolling upgrade, which happened, if router was upgraded earlier than storage (#556).

  • Fixed failover lowering priority of a replica, if replica was disconnected from a master even for a moment (#512).

0.1.33

17 Apr 16:37
Compare
Choose a tag to compare

Date: 17-04-2025

Tag: 0.1.33

Compatibility

VShard 0.1.33 is fully compatible with the previous VShard versions.

Bugs fixed

  • Router and storage are now able to find a new master even if the old one hangs (#537).

0.1.32

12 Mar 10:02
Compare
Choose a tag to compare

Date: 12-03-2025

Tag: 0.1.32

Compatibility

VShard 0.1.32 is fully compatible with the previous VShard versions.

Functionality added or changed

  • The function vshard.router.bucket_discovery() is no longer available. Previously it was marked as "Router internal API" (#503).

Bugs fixed

  • Fixed the router leaking connections and spamming excess connections to unavailable storages (#517, #518).

0.1.31

29 Jan 13:17
Compare
Choose a tag to compare

Date: 29-01-2025

Tag: 0.1.31

Compatibility

VShard 0.1.31 is fully compatible with the previous VShard versions.

Bugs fixed

  • Router started accounting replication status and lowering priority of replicas which are too far behind the current master (#453, #487).
  • Fixed an error during alert construction in vshard.router.info() when named identification is used (#474).

0.1.30

14 Oct 19:05
Compare
Choose a tag to compare

Date: 14-10-2024

Tag: 0.1.30

Compatibility

VShard 0.1.30 is fully compatible with the previous VShard versions.

Functionality added or changed

  • New option bucket_ids for vshard.router.map_callrw(). It enables batch-call on a set of buckets on each of the affected replicasets. Like Map-Reduce, but on a subset of the cluster (#176).

0.1.29

16 Sep 14:52
Compare
Choose a tag to compare

Date: 16-09-2024

Tag: 0.1.29

Compatibility

VShard 0.1.29 is fully compatible with the previous VShard versions.

Bugs fixed

  • Fixed bucket GC and vshard.storage.sync() stalling due to master having a non-zero vclock[0] component or an unreachable replica not from vshard configuration (#490).

0.1.28

30 Aug 15:04
Compare
Choose a tag to compare

Date: 30-08-2024

Tag: 0.1.28

Compatibility

VShard 0.1.28 is fully compatible with the previous VShard versions.

Functionality added or changed

  • New option request_timeout was added to router.call{ro/re/bro/bre} requests. It must be <= timeout and by default is equal to timeout. When set, it controls how much time a single request to a replica may take, and when this time passes, router retries the request on the next replica in a round-robin manner as long as timeout is not elapsed (#484).

Bugs fixed

  • Router started accounting replicas not responding to pings and lowering their priority (#483).

0.1.27

29 Apr 21:21
Compare
Choose a tag to compare

Date: 29-04-2024

Tag: 0.1.27

Compatibility

VShard 0.1.27 is fully compatible with the previous VShard versions.

Functionality added or changed

  • vshard.router.info() and vshard.storage.info() now expose identification_mode as it was specified in the config.
  • vshard.storage.info() now contains uri field which contains the listen-URI of this instance and the user name which was used to configure the storage (#467).

Bugs fixed

  • Router and storage, when had master = 'auto' in their configs, could be stuck unable to discover a new master when the old one would suddenly disappear without any info (tarantool/vshard-ee#4).

0.1.26

17 Jan 21:18
Compare
Choose a tag to compare

Date: 17-01-2024

Tag: 0.1.26

Compatibility

VShard 0.1.26 is fully compatible with the previous VShard versions.

Bugs fixed

  • Fixed a bug in storage hot reload from earlier versions when named identification name_as_key was used in the config (gh-464).
  • Fixed the instance URIs in logs containing invalid IPv6 addresses when IPv6 was used.

0.1.25

21 Dec 09:34
Compare
Choose a tag to compare

Date: 21-12-2023

Tag: 0.1.25

Compatibility

VShard 0.1.25 is fully compatible with the previous VShard versions.

Functionality added or changed

  • Added support of master='auto' on the storage side. It makes the storages dynamically track who of them is the master (no election, only tracking and automatic role switch) (gh-429).
  • Introduced rebalancer flag for replicas and replicasets to be able to choose manually who of them should run the rebalancer service (gh-432).
  • Introduced rebalancer_mode which can be used to enforce manual or automatic rebalancer assignment, or turn the rebalancer off completely (gh-432).
  • Config can be used with instance and replicaset names instead of UUIDs - for that there is a new option identification_mode. When specified as uuid_as_key (default) the behaviour is like in 0.1.24 and before. The value name_as_key unlocks the new behaviour (gh-426).

Bugs fixed

  • Fixed a bug when bucket recovery and GC could sometimes do a bit more work than needed in case manual vshard.storage.bucket_send() was used (gh-434).
  • Fixed a bug when vshard.storage.send() could false-positively fail in the end or the beginning of its work (gh-433).
  • Fixed a bug that the router couldn't call storage functions implemented in C or having their Lua body stored in _func (gh-436).
0