MCPcopy Create free account
hub / github.com/F-Stack/f-stack / getRDB

Function getRDB

app/redis-6.2.6/src/redis-cli.c:7195–7287  ·  view source on GitHub ↗

This function implements --rdb, so it uses the replication protocol in order * to fetch the RDB file from a remote server. */

Source from the content-addressed store, hash-verified

7193/* This function implements --rdb, so it uses the replication protocol in order
7194 * to fetch the RDB file from a remote server. */
7195static void getRDB(clusterManagerNode *node) {
7196 int fd;
7197 redisContext *s;
7198 char *filename;
7199 if (node != NULL) {
7200 assert(node->context);
7201 s = node->context;
7202 filename = clusterManagerGetNodeRDBFilename(node);
7203 } else {
7204 s = context;
7205 filename = config.rdb_filename;
7206 }
7207 static char eofmark[RDB_EOF_MARK_SIZE];
7208 static char lastbytes[RDB_EOF_MARK_SIZE];
7209 static int usemark = 0;
7210 unsigned long long payload = sendSync(s, eofmark);
7211 char buf[4096];
7212
7213 if (payload == 0) {
7214 payload = ULLONG_MAX;
7215 memset(lastbytes,0,RDB_EOF_MARK_SIZE);
7216 usemark = 1;
7217 fprintf(stderr,"SYNC sent to master, writing bytes of bulk transfer "
7218 "until EOF marker to '%s'\n", filename);
7219 } else {
7220 fprintf(stderr,"SYNC sent to master, writing %llu bytes to '%s'\n",
7221 payload, filename);
7222 }
7223
7224 int write_to_stdout = !strcmp(filename,"-");
7225 /* Write to file. */
7226 if (write_to_stdout) {
7227 fd = STDOUT_FILENO;
7228 } else {
7229 fd = open(filename, O_CREAT|O_WRONLY, 0644);
7230 if (fd == -1) {
7231 fprintf(stderr, "Error opening '%s': %s\n", filename,
7232 strerror(errno));
7233 exit(1);
7234 }
7235 }
7236
7237 while(payload) {
7238 ssize_t nread, nwritten;
7239
7240 nread = readConn(s,buf,(payload > sizeof(buf)) ? sizeof(buf) : payload);
7241 if (nread <= 0) {
7242 fprintf(stderr,"I/O Error reading RDB payload from socket\n");
7243 exit(1);
7244 }
7245 nwritten = write(fd, buf, nread);
7246 if (nwritten != nread) {
7247 fprintf(stderr,"Error writing data to file: %s\n",
7248 (nwritten == -1) ? strerror(errno) : "short write");
7249 exit(1);
7250 }
7251 payload -= nread;
7252

Callers 2

mainFunction · 0.85

Calls 11

sendSyncFunction · 0.85
memsetFunction · 0.85
strcmpFunction · 0.85
readConnFunction · 0.85
redisFreeFunction · 0.85
sdsfreeFunction · 0.85
writeFunction · 0.70
closeFunction · 0.70
memcpyFunction · 0.50
memmoveFunction · 0.50

Tested by

no test coverage detected