| 1986 | } |
| 1987 | |
| 1988 | void propagateSubkeyExpire(redisDb *db, int type, robj *key, robj *subkey) |
| 1989 | { |
| 1990 | robj *argv[3]; |
| 1991 | redisCommand *cmd = nullptr; |
| 1992 | switch (type) |
| 1993 | { |
| 1994 | case OBJ_SET: |
| 1995 | argv[0] = shared.srem; |
| 1996 | argv[1] = key; |
| 1997 | argv[2] = subkey; |
| 1998 | cmd = cserver.sremCommand; |
| 1999 | break; |
| 2000 | |
| 2001 | case OBJ_HASH: |
| 2002 | argv[0] = shared.hdel; |
| 2003 | argv[1] = key; |
| 2004 | argv[2] = subkey; |
| 2005 | cmd = cserver.hdelCommand; |
| 2006 | break; |
| 2007 | |
| 2008 | case OBJ_ZSET: |
| 2009 | argv[0] = shared.zrem; |
| 2010 | argv[1] = key; |
| 2011 | argv[2] = subkey; |
| 2012 | cmd = cserver.zremCommand; |
| 2013 | break; |
| 2014 | |
| 2015 | case OBJ_CRON: |
| 2016 | return; // CRON jobs replicate in their own handler |
| 2017 | |
| 2018 | default: |
| 2019 | serverPanic("Unknown subkey type"); |
| 2020 | } |
| 2021 | |
| 2022 | if (g_pserver->aof_state != AOF_OFF) |
| 2023 | feedAppendOnlyFile(cmd,db->id,argv,3); |
| 2024 | // Active replicas do their own expiries, do not propogate |
| 2025 | if (!g_pserver->fActiveReplica) |
| 2026 | replicationFeedSlaves(g_pserver->slaves,db->id,argv,3); |
| 2027 | } |
| 2028 | |
| 2029 | /* Check if the key is expired. Note, this does not check subexpires */ |
| 2030 | int keyIsExpired(const redisDbPersistentDataSnapshot *db, robj *key) { |
no test coverage detected