mirror of
https://github.com/fluencelabs/redis
synced 2025-04-02 15:51:05 +00:00
For coverage testing use exit() instead of _exit() when termiating saving children.
This commit is contained in:
parent
4ce22375f4
commit
2cbdab903f
@ -263,7 +263,7 @@ gprof:
|
|||||||
$(MAKE) PROF="-pg"
|
$(MAKE) PROF="-pg"
|
||||||
|
|
||||||
gcov:
|
gcov:
|
||||||
$(MAKE) PROF="-fprofile-arcs -ftest-coverage"
|
$(MAKE) PROF="-fprofile-arcs -ftest-coverage -DCOVERAGE_TEST"
|
||||||
|
|
||||||
noopt:
|
noopt:
|
||||||
$(MAKE) OPTIMIZATION=""
|
$(MAKE) OPTIMIZATION=""
|
||||||
|
@ -803,9 +803,9 @@ int rewriteAppendOnlyFileBackground(void) {
|
|||||||
if (server.sofd > 0) close(server.sofd);
|
if (server.sofd > 0) close(server.sofd);
|
||||||
snprintf(tmpfile,256,"temp-rewriteaof-bg-%d.aof", (int) getpid());
|
snprintf(tmpfile,256,"temp-rewriteaof-bg-%d.aof", (int) getpid());
|
||||||
if (rewriteAppendOnlyFile(tmpfile) == REDIS_OK) {
|
if (rewriteAppendOnlyFile(tmpfile) == REDIS_OK) {
|
||||||
_exit(0);
|
exitFromChild(0);
|
||||||
} else {
|
} else {
|
||||||
_exit(1);
|
exitFromChild(1);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
/* Parent */
|
/* Parent */
|
||||||
|
@ -686,7 +686,7 @@ int rdbSaveBackground(char *filename) {
|
|||||||
if (server.ipfd > 0) close(server.ipfd);
|
if (server.ipfd > 0) close(server.ipfd);
|
||||||
if (server.sofd > 0) close(server.sofd);
|
if (server.sofd > 0) close(server.sofd);
|
||||||
retval = rdbSave(filename);
|
retval = rdbSave(filename);
|
||||||
_exit((retval == REDIS_OK) ? 0 : 1);
|
exitFromChild((retval == REDIS_OK) ? 0 : 1);
|
||||||
} else {
|
} else {
|
||||||
/* Parent */
|
/* Parent */
|
||||||
server.stat_fork_time = ustime()-start;
|
server.stat_fork_time = ustime()-start;
|
||||||
|
12
src/redis.c
12
src/redis.c
@ -356,6 +356,18 @@ long long mstime(void) {
|
|||||||
return ustime()/1000;
|
return ustime()/1000;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* After an RDB dump or AOF rewrite we exit from children using _exit() instead of
|
||||||
|
* exit(), because the latter may interact with the same file objects used by
|
||||||
|
* the parent process. However if we are testing the coverage normal exit() is
|
||||||
|
* used in order to obtain the right coverage information. */
|
||||||
|
void exitFromChild(int retcode) {
|
||||||
|
#ifdef COVERAGE_TEST
|
||||||
|
exit(retcode);
|
||||||
|
#else
|
||||||
|
_exit(retcode);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
/*====================== Hash table type implementation ==================== */
|
/*====================== Hash table type implementation ==================== */
|
||||||
|
|
||||||
/* This is an hash table type that uses the SDS dynamic strings libary as
|
/* This is an hash table type that uses the SDS dynamic strings libary as
|
||||||
|
@ -828,6 +828,7 @@ long long ustime(void);
|
|||||||
long long mstime(void);
|
long long mstime(void);
|
||||||
void getRandomHexChars(char *p, unsigned int len);
|
void getRandomHexChars(char *p, unsigned int len);
|
||||||
uint64_t crc64(const unsigned char *s, uint64_t l);
|
uint64_t crc64(const unsigned char *s, uint64_t l);
|
||||||
|
void exitFromChild(int retcode);
|
||||||
|
|
||||||
/* networking.c -- Networking and Client related operations */
|
/* networking.c -- Networking and Client related operations */
|
||||||
redisClient *createClient(int fd);
|
redisClient *createClient(int fd);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user