- 02 10月, 2013 1 次提交
-
-
由 antirez 提交于
Previously the event was not logged but instead the node reported an unknown packet type received.
-
- 01 10月, 2013 2 次提交
- 30 9月, 2013 6 次提交
-
-
由 antirez 提交于
The new algorithm does not check replies time as checking for the currentEpoch in the reply ensures that the reply is about the current election process.
-
由 antirez 提交于
-
由 antirez 提交于
The old algorithm used a PROMOTED flag and explicitly checks about slave->master convertions. Wit the new cluster meta-data propagation algorithm we just look at the configEpoch to check if we need to reconfigure slots, then: 1) If a node is a master but it reaches zero served slots becuase of reconfiguration. 2) If a node is a slave but the master reaches zero served slots because of a reconfiguration. We switch as a replica of the new slots owner.
-
由 antirez 提交于
We need to: 1) Increment the configEpoch. 2) Save it to disk and fsync the file. 3) Broadcast the PONG with the new configuration. If other nodes will receive the updated configuration we need to be sure to restart with this new config in the event of a crash.
-
由 antirez 提交于
-
由 antirez 提交于
-
- 27 9月, 2013 1 次提交
-
-
由 antirez 提交于
-
- 26 9月, 2013 4 次提交
- 25 9月, 2013 4 次提交
- 20 9月, 2013 2 次提交
-
-
由 antirez 提交于
First change: now there is no need to be a master in order to detect a failure, however the majority of masters signaling PFAIL or FAIL is needed. This change is important because it allows slaves rejoining the cluster after a partition to sense the FAIL condition so that eventually all the nodes agree on failures.
-
由 antirez 提交于
The time is sent in requests, and copied back in reply packets. This way the receiver can compare the time field in a reply with its local clock and check the age of the request associated with this reply. This is an easy way to discard delayed replies. Note that only a clock is used here, that is the one of the node sending the packet. The receiver only copies the field back into the reply, so no synchronization is needed between clocks of different hosts.
-
- 04 9月, 2013 5 次提交
- 03 9月, 2013 3 次提交
- 26 8月, 2013 1 次提交
-
-
由 antirez 提交于
This feature was implemented in the initial days of the Redis Cluster implementaiton but is not a good idea at all. 1) It depends on clocks to be synchronized, that is already very bad. 2) Moreover it adds a bug where the pong time is updated via gossip so no new PING is ever sent by the current node, with the effect of no PONG received, no update of tables, no clearing of PFAIL flag. In general to trust other nodes about the reachability of other nodes is a broken distributed programming model.
-
- 22 8月, 2013 4 次提交
-
-
由 antirez 提交于
The commit using listenToPort() introduced this bug by no longer creating the event handler to handle incoming messages from the cluster bus.
-
由 antirez 提交于
-
由 antirez 提交于
This was broken by the IPv6 support patches.
-
由 antirez 提交于
Somewhat a previous commit broken this so CLUSTER MEET was no longer working.
-
- 21 8月, 2013 1 次提交
-
-
由 antirez 提交于
-
- 24 7月, 2013 1 次提交
-
-
由 antirez 提交于
Actaully the string is modified in-place and a reallocation is never needed, so there is no need to return the new sds string pointer as return value of the function, that is now just "void".
-
- 22 7月, 2013 1 次提交
-
-
由 antirez 提交于
Previously two string encodings were used for string objects: 1) REDIS_ENCODING_RAW: a string object with obj->ptr pointing to an sds stirng. 2) REDIS_ENCODING_INT: a string object where the obj->ptr void pointer is casted to a long. This commit introduces a experimental new encoding called REDIS_ENCODING_EMBSTR that implements an object represented by an sds string that is not modifiable but allocated in the same memory chunk as the robj structure itself. The chunk looks like the following: +--------------+-----------+------------+--------+----+ | robj data... | robj->ptr | sds header | string | \0 | +--------------+-----+-----+------------+--------+----+ | ^ +-----------------------+ The robj->ptr points to the contiguous sds string data, so the object can be manipulated with the same functions used to manipulate plan string objects, however we need just on malloc and one free in order to allocate or release this kind of objects. Moreover it has better cache locality. This new allocation strategy should benefit both the memory usage and the performances. A performance gain between 60 and 70% was observed during micro-benchmarks, however there is more work to do to evaluate the performance impact and the memory usage behavior.
-
- 09 7月, 2013 1 次提交
-
-
由 antirez 提交于
-
- 08 7月, 2013 3 次提交
-
-
由 Geoff Garside 提交于
Any places which I feel might want to be updated to work differently with IPv6 have been marked with a comment starting "IPV6:". Currently the only comments address places where an IP address is combined with a port using the standard : separated form. These may want to be changed when printing IPv6 addresses to wrap the address in [] such as [2001:db8::c0:ffee]:6379 instead of 2001:db8::c0:ffee:6379 as the latter format is a technically valid IPv6 address and it is hard to distinguish the IPv6 address component from the port unless you know the port is supposed to be there.
-
由 Geoff Garside 提交于
In two places buffers have been created with a size of 128 bytes which could be reduced to INET6_ADDRSTRLEN to still hold a full IP address. These places have been marked as they are presently big enough to handle the needs of storing a printable IPv6 address.
-
由 Geoff Garside 提交于
Changes the sockaddr_in to a sockaddr_storage. Attempts to convert the IP address into an AF_INET or AF_INET6 before returning an "Invalid IP address" error. Handles converting the sockaddr from either AF_INET or AF_INET6 back into a string for storage in the clusterNode ip field.
-