| 5571 | } |
| 5572 | |
| 5573 | void replicationNotifyLoadedKey(redisDb *db, robj_roptr key, robj_roptr val, long long expire) { |
| 5574 | if (!g_pserver->fActiveReplica || listLength(g_pserver->slaves) == 0) |
| 5575 | return; |
| 5576 | |
| 5577 | // Send a digest over to the replicas |
| 5578 | rio r; |
| 5579 | |
| 5580 | createDumpPayload(&r, val, key.unsafe_robjcast()); |
| 5581 | |
| 5582 | redisObjectStack objPayload; |
| 5583 | initStaticStringObject(objPayload, r.io.buffer.ptr); |
| 5584 | redisObjectStack objTtl; |
| 5585 | initStaticStringObject(objTtl, sdscatprintf(sdsempty(), "%lld", expire)); |
| 5586 | redisObjectStack objMvcc; |
| 5587 | initStaticStringObject(objMvcc, sdscatprintf(sdsempty(), "%" PRIu64, mvccFromObj(val))); |
| 5588 | redisObject *argv[5] = {shared.mvccrestore, key.unsafe_robjcast(), &objMvcc, &objTtl, &objPayload}; |
| 5589 | |
| 5590 | replicationFeedSlaves(g_pserver->slaves, db->id, argv, 5); |
| 5591 | |
| 5592 | sdsfree(szFromObj(&objTtl)); |
| 5593 | sdsfree(szFromObj(&objMvcc)); |
| 5594 | sdsfree(r.io.buffer.ptr); |
| 5595 | } |
| 5596 | |
| 5597 | void replicateSubkeyExpire(redisDb *db, robj_roptr key, robj_roptr subkey, long long expire) { |
| 5598 | if (!g_pserver->fActiveReplica || listLength(g_pserver->slaves) == 0) |
no test coverage detected