Merge pull request #2636 from badboy/cluster-lock-fix

Cluster lock fix
This commit is contained in:
Salvatore Sanfilippo 2015-07-17 11:00:44 +02:00
commit bcb4d09123
2 changed files with 7 additions and 1 deletions

View File

@ -358,6 +358,11 @@ void clusterSaveConfigOrDie(int do_fsync) {
* On success REDIS_OK is returned, otherwise an error is logged and
* the function returns REDIS_ERR to signal a lock was not acquired. */
int clusterLockConfig(char *filename) {
/* flock() does not exist on Solaris
* and a fcntl-based solution won't help, as we constantly re-open that file,
* which will release _all_ locks anyway
*/
#if !defined(__sun)
/* To lock it, we need to open the file in a way it is created if
* it does not exist, otherwise there is a race condition with other
* processes. */
@ -385,6 +390,8 @@ int clusterLockConfig(char *filename) {
}
/* Lock acquired: leak the 'fd' by not closing it, so that we'll retain the
* lock to the file as long as the process exists. */
#endif /* __sun */
return REDIS_OK;
}

View File

@ -53,7 +53,6 @@
#include <sys/resource.h>
#include <sys/utsname.h>
#include <locale.h>
#include <sys/sysctl.h>
#include <sys/socket.h>
/* Our shared "common" objects */