Skip to content

Releases: snower/slock

v2.1.12

07 May 07:16

Choose a tag to compare

Changelog

  • 175b141 Optimize command protocol parsing
  • e882597 Update CI benchmark concurrency configuration
  • a252030 Corrected the behavior so that RemoveLockManager prioritizes returning lock-free freeLockManagers.
  • c9a1723 Fixed concurrent locking handling in freeLockManager and optimized admin info output.
  • e45af06 Optimize freeLockManager by adding freeLockManagerQueue as a secondary free queue.
  • 544766d Optimize CI load testing concurrency
  • 94ca80d Update the TestLock_OverWait test cases
  • 225193b Correct the admin command in BinaryServerProtocol to flush the write buffer before switching protocols.
  • d25fc5c Add write buffering support to the Write function of BinaryServerProtocol
  • 6cb6310 Add TreeLock and Exector to perform benchmark stress testing
  • eaf0a8a Correct treeLock processing timing
  • ab1de4d Optimize client write buffer to maintain order
  • 630d6c3 Optimize Transparency and ReplicationClient write buffer logic
  • 143da30 Modify test cases
  • 8186466 Optimize LockManager acquisition and release logic and refCount update
  • 1f0abd1 Optimize PriorityMutex data layout and high-priority lock handling
  • 09ff8aa Update output copy
  • 4a8277e Optimize the logic for handling AofChannel pushAofLock being pushed.
  • 168aad3 Optimize the definitions of PriorityMutex and ReplicationBufferMutex data structures
  • 6f623d8 Optimize code
  • 8697b7c update PriorityMutex test cases
  • d9b8a99 Add PriorityMutex test cases
  • ba846da The priority of PriorityMutex on its first activation has been fixed so that it is never removed.
  • cbf67fd Update PriorityMutex from level 3 to level 4 priority.
  • be7633c Fixed an issue where idle AOF queue reclamation would spin-lock before reaching a threshold.
  • a427645 Optimize the reclamation of free memory
  • 267664b Fixed the issue where LongWaitLockQueue and MillisecondWaitLockQueue were not set to nil after acquiring a free LockQueue.
  • ccc09d2 change version to 2.1.12

v2.1.11

28 Apr 09:35

Choose a tag to compare

Changelog

  • e377e3b The data passed in the call, lock, and unlock instructions cannot exceed the 1MB limit.
  • d923f04 Optimize concurrency logic
  • 7394cd8 Update test script
  • 4a2fd84 Corrects the BinaryServerProtocol write buffer from potentially not being flushed in the event of an exception.
  • 2a48c64 Add write buffer to BinaryServerProtocol
  • c9efca9 The Shrink issue in the queue was fixed, but it still caused problems at the queue head.
  • a45c802 The issue has been fixed: Tail in the queue will have an index of -1 at segment boundaries.
  • 42a7499 Corrected BGREWRITEAOF and REWRITEAOF command processing
  • becc92b Fixed issues in the admin panel where FLUSHALL would panic on an uninitialized database, an empty REPLSET command would crash due to out-of-bounds access, SLAVEOF in follower mode would be ignored with a false success, an AOF rewrite status check used an incorrect lock, and an incorrect configuration item was found in CONFIG SET AOF_FILE_REWRITE_SIZE.
  • 951f171 Update naming
  • d37ee45 The optimization of ReplicationServer's SendProcess did not reset wdataSize after flushing data.
  • ac56d76 Optimize ReplicationServer's SendProcess for sending data by adding a write buffer to reduce I/O writes.
  • 82a2640 Add logic to reclaim idle ReplicationAckLocks in ReplicationAckDB
  • 05b4441 Optimize ReplicationBufferQueue's ResetQueueItems to only recycle items that have already been sent.
  • d06126a Optimize LockDB init and deinit, LockManager, admin info output AOF, and Subscribe output freeLockCount information.
  • 3a801a0 Added support for AofChannel and SubscribeChannel idle lock reclamation
  • 70fc513 Optimizing the idle connections of TransparencyManager can be completely disabled.
  • d8741e6 Optimize Arbiter concurrent locking issues
  • a9ec5e1 Optimize TransparencyBinaryClientProtocol to disable duplicate processing issues
  • 24d6148 Fixed an issue where Transparency did not close the connection correctly.
  • cc3990a Modify test cases
  • 963c9b5 Correcting the checkIdleTimeout logic error in TransparencyManager
  • c1dd1dc Add the number of databases that cannot create LockManagers using a lock-free method.
  • 55452de add TestLockManagerWaitQueueRePushPriorityRingQueueSwitchesMode test cases
  • 84881dd Modify test cases
  • aa63185 Optimize the initial size of the Lock Queue
  • 736abb7 The LockManagerWaitQueue has been optimized by removing the priorityQueue field, which indicates whether it is in priority mode, and instead using fastIndex, where -1 indicates that it is in priority queue mode.
  • 8a678e7 Fixed the issue where ReplicationManager did not acquire locks after WaitServerSynced timeout.
  • 3dddfb8 Fixed a boundary condition issue where ReplicationServer received initial data when the ring buffer was empty.
  • 4ca83b7 Fixed an issue where ResetQueueItems retained the old nextItem when being recycled to the free queue; instead, it now adds active nodes to the free queue.
  • a0155de Optimize the ReplicationBufferQueue free queue to ensure sequential use of the head and tail, guaranteeing continuous memory read and write operations.
  • efd1552 fixed the judgment that sendFiles has been completed.
  • e0b1e8d Corrected the judgment that sendFiles has been completed.
  • 8336970 Fixed the bug where ProcessLeaderAofed deleted commandAofs.
  • d7927f5 Before scaling up LockManagerLockQueue and LockManagerWaitQueue, a cleanup process should be performed.
  • 2b4bd1d Correction: In the "wait for the lock to be woken up and enter the REQUIRE_ACKED process" branch of wakeUpWaitLock(), the waitLock was not removed from the waiting state.
  • f055e9f Optimize FreeLock reset isAof state
  • 584196c Optimize LockManagerLockQueue and NewLockManagerWaitQueue push to directly append after fastQueue initialization.
  • a5a0c1d Fixed an issue where lower-priority wait locks would be silently lost during LockManagerPriorityRingQueue Push.
  • d52e12d Fixed the issue where LockManager's Pop and Head queues were not checking for nil.
  • dfacba2 Fixed LockManager lock queue management
  • b4af54d Optimize LockManager wait queue and lock queue management
  • 5411cb3 Optimize the time.After method within the loop by creating a reused time.Timer before the loop begins.
  • 6c51131 Optimize field layout
  • be78b04 Optimize LockManagerData comparison
  • 8ba2520 Correct the calculation of usedBufferSize in ReplicationBufferQueue
  • 78615f5 Corrected the RLock and RUNlock calls of ReplicationBufferMutex.
  • 076de9c Optimize ReplicationBufferQueue to reduce pointer calls to ReplicationBufferMutex.
  • 2636493 Optimize the recycling strategies for LongWaitLockFreeQueue and MillisecondWaitLockFreeQueue.
  • 7a941f0 Update the default configuration file
  • 92a47d8 Correct the TestLockDBFreeCollectorCollectShrinksFreePools test case.
  • d3e456f Update LockManager instance creation batch
  • 54b7708 upgrade go 1.19
  • d6804a3 The admin info command updates CPU and Coroutine related metrics.
  • 2f1aece Update startup script
  • 3d5b306 Remove the independently calculated freeLockCommandCount from slock.
  • 7f8c812 Fixed the issue where freeLockCommandCount was not decremented after SLockFreeCollector was idle.
  • fcedd38 Update default configuration
  • 348ab5b Optimize Queue by adding freeQueue to reclaim node memory allocated after execution stack operations.
  • 836ca00 Improved free memory reclamation and optimized memory usage.
  • 7687932 Optimize the locking logic of ReplicationBufferQueue
  • cf0aa14 Fixed the issue of reclaiming idle command, lock, and lockManager objects.
  • 2f03a46 fix bugs
  • 029766d Corrected the TestReplicationBufferQueue_Reduplicated test case.
  • a360e34 Fixed the issue of closing the glock waiter when the ReplicationBufferQueue is closed.
  • 02679d6 Optimize the use of chan struct{} as a signal notification
  • e4ec0e8 Optimize ReplicationBuffer before sending data upon expansion
  • 0192d45 Add a Command, Lock, and LockManager to reclaim free queues.
  • 41f6130 fix connection free command buffer configuration
  • 3e7c7f2 Optimize connection free command buffer configuration
  • 810540c Fixed the SubscribeEnabled option declaration and added it to build test 1.26.
  • ef2f74a Event subscription support is disabled by default and needs to be enabled via parameters.
  • a60ee0b change version 2.1.11

v2.1.10

08 Jan 09:29

Choose a tag to compare

Changelog

  • ee73f99 The AOF (Analog-Based Functions) function's expiration check no longer excludes whether it's a LockWithUpdateFlag directive.
  • 3ab6d0c change version to 2.1.10

v2.1.9

30 Dec 09:00

Choose a tag to compare

Changelog

  • a40c18e Fixed an issue where setting the minimum value of 1 for AOF expiration time calculation could prevent follower nodes from unlocking.
  • f45fd8c change version to 2.1.9

v2.1.8

18 Dec 11:47

Choose a tag to compare

Changelog

  • edbcea8 The wait queue reset should now set priorityQueue to its initial value of false.
  • a1af4dd Fixed the logic for checking if the priorities are the same when adding a Lock to the wait queue.
  • df3521b To optimize the data synchronization to the follower, the RCOUNT_IS_PRIORITY flag should be synchronized.
  • a565118 When modifying the wait priority queue Push Lock, it is necessary to check whether rcount is a priority value.
  • f629a7f Corrected the logic for determining whether the priorities of the wait queues are the same.
  • 275a7f3 Correct PriorityLock test cases
  • 2ddda46 The wait queue is optimized so that a priority queue is created only when the priorities are different.
  • c00342d change version to 2.1.8
  • d8337f8 The higher the priority of the wait queue rcout, the higher the priority should be.
  • 32b7a7a When optimizing rcount as a priority, if it has a higher priority than the current maximum priority of the wait lock, it will not enter the waiting queue. Additionally, the check for identical locks should be modified to include a check for whether rcount is the same.

v2.1.7

09 Dec 11:43

Choose a tag to compare

Changelog

  • 218274e When optimizing rcount, priority should be prioritized so that the flush logic is not executed.
  • f5343de Correct TreeLock implementation
  • 0281791 Correct TreeLock implementation
  • 08e8258 Optimize TreeLock implementation
  • 6e57645 The update implementation allows skipping waits by using higher priority waits.
  • 69009d4 When the update implements LOCK_FLAG_LOCK_TREE_LOCK, it allows you to choose to skip the wait.
  • 142eff0 Adding a lock count of 0xfff allows skipping the current waiting test case.
  • 473370f When the lock count is optimized to 0xfff, the current wait can be skipped.
  • d9546b4 change version to 2.1.7

v2.1.6

08 Sep 08:37

Choose a tag to compare

Changelog

  • 7e246d1 Optimize the use of read-write locks in the Database global map
  • e1f2584 github action add golang 1.25 build test
  • cd2f9ea update readme
  • 5b7eda1 Optimize and correct unlock to specify data and execute processing logic at the last unlock.
  • 1939750 change version to 2.1.6

v2.1.5

14 Aug 09:27

Choose a tag to compare

Full Changelog: v2.1.4...v2.1.5

v2.1.4

05 Jan 14:15

Choose a tag to compare

Changelog

  • 491d74c Optimize high and low priority lock judgment to ensure atomicity
  • 7b567da change version to 2.1.4
  • 898d6b9 Optimize the concurrent check logic when starting Lock

v2.1.3

31 Dec 09:50

Choose a tag to compare

Changelog

  • 3b24dab Optimize LockKey hash algorithm
  • 80f5df5 Corrected variable naming
  • 3c050f9 Revert "Using the murmur hash algorithm"
  • 1093f02 Merge pull request #3 from snower/feature/murmur3
  • c9e4e32 update github action
  • d5dc3df Using the murmur hash algorithm
  • aa64e4d Fixed: You should first shut down the DB to stop clearing the timeout queue, then shut down the AOF and replication synchronization to ensure that all data can be flushed to disk.
  • f93773c The optimization does not use parameters marked with _
  • 106db63 Optimize the shutdown order to ensure that all data is processed
  • 043a8d8 Optimize GetOrNewLockManager
  • 0d1b8a9 Optimize active master node switching to ensure that all executing and background execution commands are completed
  • b78fd75 Optimizing when Lock Update, if the lock needs to be updated and the current Lock has a LockCommand waiting to be executed, it will be cleared so that it can be overwritten with the new LockCommand.
  • 1e517cf Fixed the issue where a background command that acquires a LockManager and locks it may release the normally acquired LockManager.
  • 8966f99 remove github action build-test golang version 1.24
  • 9b0e83f update github action build-test golang version
  • 1c83be2 Optimize initNewLockManager
  • d9d9dca Optimize the background command execution settings to activate low priority locks for non-system busy activation without counting usage counts
  • 4031051 Optimize the logic of acquiring or releasing LockManager from the FreeLockManager queue
  • 724fa19 Optimize the management of command status information, high and low priority locks, and background execution pool related information
  • 9707e1d fix management command output status information
  • 1abee47 Optimize the background execution command to start two coroutines for each concurrent queue
  • 8cb016d Optimize and add background execution commands to the corresponding concurrent lock queue
  • 2d76b52 change version to 2.1.3
  • 6d71ede Fix the exception of judging whether refCount is zero when RemoveLockManager
  • 1f6bba4 Optimize the lock-free concurrency control logic of GetOrNewLockManager and RemoveLockManager
  • 50977ae Optimize LockData to include LockCommand execution and add LowSetPriority to execute before subsequent commands to ensure consistency
  • 80f436d Optimize low-priority locks to distinguish different application settings in different scenarios
  • 408ea51 Corrected the problem of handling the LockData being the Lock command and judging that it must be the same dbid exception