Releases: tarantool/vshard
0.1.38
Date: 01-11-2025
Tag: 0.1.38
Compatibility
VShard 0.1.38 is fully compatible with the previous VShard versions.
Bugs fixed
0.1.37
0.1.36
0.1.35
Date: 08-08-2025
Tag: 0.1.35
Compatibility
VShard 0.1.35 is fully compatible with the previous VShard versions.
Bugs fixed
0.1.34
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_schemaoption, which allows disabling fetching schema in vshard connections (#408). - 
bucket_idsoption in partialmap_callrwcan now be a key-value table in addition to an array. Whenbucket_idsis 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 hadupstream = nilinbox.info.replication(#513). - 
Fixed GC not deleting outdated bucket routes from memory (#546).
 - 
Fixed a router not retrying
TRANSFER_IN_PROGRESSerror (#548). - 
Fixed the rebalancer being blocked for timeout of
map_callrwrequest, when partialmap_callrwfailed 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
0.1.32
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
0.1.31
Date: 29-01-2025
Tag: 0.1.31
Compatibility
VShard 0.1.31 is fully compatible with the previous VShard versions.
Bugs fixed
0.1.30
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_idsforvshard.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).