diff options
author | Salvatore Sanfilippo <antirez@gmail.com> | 2020-06-08 11:02:00 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-06-08 11:02:00 +0200 |
commit | 265a7e7ec7d6b632a3efae3b6d1f1349ca790633 (patch) | |
tree | 4e18dfde93fc02baea40490f80ea2f30405eeaa3 /src | |
parent | cfffda83fbad7d0428670512e56818e742306049 (diff) | |
parent | 5d0774d62f4904db0ea0593c773a280ddc718d83 (diff) | |
download | redis-265a7e7ec7d6b632a3efae3b6d1f1349ca790633.tar.gz |
Merge pull request #7357 from soloestoy/bugfix-aof-keepttl
AOF: append origin SET if no expire option
Diffstat (limited to 'src')
-rw-r--r-- | src/aof.c | 21 |
1 files changed, 13 insertions, 8 deletions
@@ -611,19 +611,24 @@ void feedAppendOnlyFile(struct redisCommand *cmd, int dictid, robj **argv, int a } else if (cmd->proc == setCommand && argc > 3) { int i; robj *exarg = NULL, *pxarg = NULL; - /* Translate SET [EX seconds][PX milliseconds] to SET and PEXPIREAT */ - buf = catAppendOnlyGenericCommand(buf,3,argv); for (i = 3; i < argc; i ++) { if (!strcasecmp(argv[i]->ptr, "ex")) exarg = argv[i+1]; if (!strcasecmp(argv[i]->ptr, "px")) pxarg = argv[i+1]; } serverAssert(!(exarg && pxarg)); - if (exarg) - buf = catAppendOnlyExpireAtCommand(buf,server.expireCommand,argv[1], - exarg); - if (pxarg) - buf = catAppendOnlyExpireAtCommand(buf,server.pexpireCommand,argv[1], - pxarg); + + if (exarg || pxarg) { + /* Translate SET [EX seconds][PX milliseconds] to SET and PEXPIREAT */ + buf = catAppendOnlyGenericCommand(buf,3,argv); + if (exarg) + buf = catAppendOnlyExpireAtCommand(buf,server.expireCommand,argv[1], + exarg); + if (pxarg) + buf = catAppendOnlyExpireAtCommand(buf,server.pexpireCommand,argv[1], + pxarg); + } else { + buf = catAppendOnlyGenericCommand(buf,argc,argv); + } } else { /* All the other commands don't need translation or need the * same translation already operated in the command vector |