Releases: ctripcorp/crdt-module
release-1.0.10
Upgrade urgency HIGH: Compared with the previous version, there are some improvements, mainly:
Major things:
- [bugfix] redis-server crash when the zrange command uses wrong parameters
release-1.0.9
Upgrade urgency LOW: Compared with the previous version, there are some improvements, mainly:
Major things:
- [feature] add kv object supports counter related commands
- [feature] add data structure of sorted set scores
- [feature] add data structure of set
release-1.0.8
================================================================================
XRedis-CRDT 1.0.8 Released Mon Nov 9 17:40:18 CST 2020
================================================================================
Upgrade urgency HIGH: Compared with the previous version, there are some improvements, mainly:
Major things:
- [bugfix] master and slave or master and master synchronization fail When copying binary data memory, copy to \0 even if there is more data
- [bugfix] redis-server crash when use the wrong gid after del and hset conflict is resolved
release-1.0.7
================================================================================
XRedis-CRDT 1.0.7 Released Fri Sep 11 19:29:37 CST 2020
================================================================================
Upgrade urgency LOW: Compared with the previous version, there are some improvements, mainly:
Major things:
* [feature] multi/exec supported for crdt circumstance.
* [opt] rdb dump/load accelerate by optimizing vector-clock's serialize/deserialize function
* [opt] rdb dump/load accelerate by optimizing CRC64 algorithm
* [opt] value/tombstone is now a non co-exist peer
* [bugfix] master-master full sync would lead to a data inconsis.(previous mechanism will ignore crdt objects with diff gid. however, same key merge during one full sync before the other, would cause a skipping crdt object due to the gid is not its own)
* [bugfix] fix the issue when we're retrieving data from normal(open-source) redis server master, that stream would be doubled by the origin op and crdt op.
* [bugfix] GC could cause a data inconsis when setting K on a non-tombstone site will propagate it to a tombstone site
release-1.0.6
XRedis-CRDT 1.0.6 Sat Aug 29 21:04:25 CST 2020
Upgrade urgency LOW: Compared with the previous version, there are some improvements, mainly:
Major things:
- [bugfix] redis-server crash when load non-crdt hash object(encoding=obj_encoding_ht)
- [bugfix] redis-server crash when hashtombstone and kv value merge
- [opt] master_is_crdt default is true
release-1.0.5
XRedis-CRDT 1.0.5 Release Note
XRedis-CRDT 1.0.5 Released Sat Aug 8 20:59:30 CST 2020
Upgrade urgency LOW: Compared with the previous version, there are some improvements, mainly:
Major things:
- [bugfix] a out-of-bound memory access will happen when loading RDB file.
- [opt] master-master psync: an enhanced partial sync implementation is now allowed for master-master replication while master-slave switching.
-
slave now is able to record offsets for peer-masters replication.
-
PSYNC2.0 also works for master-master replication.
- [opt] shrink down conflict by reducing simutenously expiration.
- [opt] seeking for peer-master is theoretically faster than before.
- [opt] better performance for master-master replication stream offset calculation.
release-1.0.3
XRedis-CRDT 1.0.3 Released Tue Jun 9 15:58:31 CST 2020
Upgrade urgency LOW: Compared with the previous version, there are some improvements, mainly:
Major things:
- crdtServer and server now shares a same repl_id and repl_id2
- reduce log by ignoring expire conflict when merge
- crdt slave now will consider it as master if its master is norm redis
The last change includes a little tricky change that, though we consider the crdt redis slave as a master(when its master is a original redis),
there's still a piece of special logic for stable expire data.
Which, as a consequnce, redis will create another global dict to store keys when receiving expire commands as a slave,
and the dict will never be freed once the redis turning into a master.
In this circumstance, we surely will cause a mem leak, as we're actually transfering the RDB into commands, to make original redis'
RDB compitable for CRDT ones, thus, expire command is executing on crdt server which will consider itself as a slave previously.
Finally, the fix is simple, we make crdt redis thought it was a master when it's actually a slave of an original redis.