Lines Matching refs:server
71 struct redisServer server; /* server global state */ variable
312 int log_to_stdout = server.logfile[0] == '\0'; in serverLogRaw()
315 if (level < server.verbosity) return; in serverLogRaw()
317 fp = log_to_stdout ? stdout : fopen(server.logfile,"a"); in serverLogRaw()
331 if (server.sentinel_mode) { in serverLogRaw()
333 } else if (pid != server.pid) { in serverLogRaw()
336 role_char = (server.masterhost ? 'S':'M'); /* Slave or Master. */ in serverLogRaw()
344 if (server.syslog_enabled) syslog(syslogLevelMap[level], "%s", msg); in serverLogRaw()
354 if ((level&0xff) < server.verbosity) return; in serverLog()
371 int log_to_stdout = server.logfile[0] == '\0'; in serverLogFromHandler()
374 if ((level&0xff) < server.verbosity || (log_to_stdout && server.daemonize)) in serverLogFromHandler()
377 open(server.logfile, O_APPEND|O_CREAT|O_WRONLY, 0644); in serverLogFromHandler()
674 if (htNeedsResize(server.db[dbid].dict)) in tryResizeHashTables()
675 dictResize(server.db[dbid].dict); in tryResizeHashTables()
676 if (htNeedsResize(server.db[dbid].expires)) in tryResizeHashTables()
677 dictResize(server.db[dbid].expires); in tryResizeHashTables()
689 if (dictIsRehashing(server.db[dbid].dict)) { in incrementallyRehash()
690 dictRehashMilliseconds(server.db[dbid].dict,1); in incrementallyRehash()
694 if (dictIsRehashing(server.db[dbid].expires)) { in incrementallyRehash()
695 dictRehashMilliseconds(server.db[dbid].expires,1); in incrementallyRehash()
708 if (server.rdb_child_pid == -1 && server.aof_child_pid == -1) in updateDictResizePolicy()
738 server.stat_expiredkeys++; in activeExpireCycleTryExpire()
794 if (dbs_per_call > server.dbnum || timelimit_exit) in activeExpireCycle()
795 dbs_per_call = server.dbnum; in activeExpireCycle()
801 timelimit = 1000000*ACTIVE_EXPIRE_CYCLE_SLOW_TIME_PERC/server.hz/100; in activeExpireCycle()
810 redisDb *db = server.db+(current_db % server.dbnum); in activeExpireCycle()
895 long long t = mstime() - server.inst_metric[metric].last_sample_time; in trackInstantaneousMetric()
897 server.inst_metric[metric].last_sample_count; in trackInstantaneousMetric()
902 server.inst_metric[metric].samples[server.inst_metric[metric].idx] = in trackInstantaneousMetric()
904 server.inst_metric[metric].idx++; in trackInstantaneousMetric()
905 server.inst_metric[metric].idx %= STATS_METRIC_SAMPLES; in trackInstantaneousMetric()
906 server.inst_metric[metric].last_sample_time = mstime(); in trackInstantaneousMetric()
907 server.inst_metric[metric].last_sample_count = current_reading; in trackInstantaneousMetric()
916 sum += server.inst_metric[metric].samples[j]; in getInstantaneousMetric()
927 if (server.maxidletime && in clientsCronHandleTimeout()
932 (now - c->lastinteraction > server.maxidletime)) in clientsCronHandleTimeout()
946 } else if (server.cluster_enabled) { in clientsCronHandleTimeout()
962 time_t idletime = server.unixtime - c->lastinteraction; in clientsCronResizeQueryBuffer()
988 int numclients = listLength(server.clients); in clientsCron()
989 int iterations = numclients/server.hz; in clientsCron()
999 while(listLength(server.clients) && iterations--) { in clientsCron()
1006 listRotate(server.clients); in clientsCron()
1007 head = listFirst(server.clients); in clientsCron()
1023 if (server.active_expire_enabled && server.masterhost == NULL) in databasesCron()
1029 if (server.rdb_child_pid == -1 && server.aof_child_pid == -1) { in databasesCron()
1039 if (dbs_per_call > server.dbnum) dbs_per_call = server.dbnum; in databasesCron()
1043 tryResizeHashTables(resize_db % server.dbnum); in databasesCron()
1048 if (server.activerehashing) { in databasesCron()
1050 int work_done = incrementallyRehash(rehash_db % server.dbnum); in databasesCron()
1067 server.unixtime = time(NULL); in updateCachedTime()
1068 server.mstime = mstime(); in updateCachedTime()
1098 if (server.watchdog_period) watchdogScheduleSignal(server.watchdog_period); in serverCron()
1104 trackInstantaneousMetric(STATS_METRIC_COMMAND,server.stat_numcommands); in serverCron()
1106 server.stat_net_input_bytes); in serverCron()
1108 server.stat_net_output_bytes); in serverCron()
1122 server.lruclock = getLRUClock(); in serverCron()
1125 if (zmalloc_used_memory() > server.stat_peak_memory) in serverCron()
1126 server.stat_peak_memory = zmalloc_used_memory(); in serverCron()
1129 server.resident_set_size = zmalloc_get_rss(); in serverCron()
1133 if (server.shutdown_asap) { in serverCron()
1136 server.shutdown_asap = 0; in serverCron()
1141 for (j = 0; j < server.dbnum; j++) { in serverCron()
1144 size = dictSlots(server.db[j].dict); in serverCron()
1145 used = dictSize(server.db[j].dict); in serverCron()
1146 vkeys = dictSize(server.db[j].expires); in serverCron()
1155 if (!server.sentinel_mode) { in serverCron()
1159 listLength(server.clients)-listLength(server.slaves), in serverCron()
1160 listLength(server.slaves), in serverCron()
1173 if (server.rdb_child_pid == -1 && server.aof_child_pid == -1 && in serverCron()
1174 server.aof_rewrite_scheduled) in serverCron()
1180 if (server.rdb_child_pid != -1 || server.aof_child_pid != -1 || in serverCron()
1196 (int) server.rdb_child_pid, in serverCron()
1197 (int) server.aof_child_pid); in serverCron()
1198 } else if (pid == server.rdb_child_pid) { in serverCron()
1200 } else if (pid == server.aof_child_pid) { in serverCron()
1214 for (j = 0; j < server.saveparamslen; j++) { in serverCron()
1215 struct saveparam *sp = server.saveparams+j; in serverCron()
1221 if (server.dirty >= sp->changes && in serverCron()
1222 server.unixtime-server.lastsave > sp->seconds && in serverCron()
1223 (server.unixtime-server.lastbgsave_try > in serverCron()
1225 server.lastbgsave_status == C_OK)) in serverCron()
1229 rdbSaveBackground(server.rdb_filename); in serverCron()
1235 if (server.rdb_child_pid == -1 && in serverCron()
1236 server.aof_child_pid == -1 && in serverCron()
1237 server.aof_rewrite_perc && in serverCron()
1238 server.aof_current_size > server.aof_rewrite_min_size) in serverCron()
1240 long long base = server.aof_rewrite_base_size ? in serverCron()
1241 server.aof_rewrite_base_size : 1; in serverCron()
1242 long long growth = (server.aof_current_size*100/base) - 100; in serverCron()
1243 if (growth >= server.aof_rewrite_perc) { in serverCron()
1253 if (server.aof_flush_postponed_start) flushAppendOnlyFile(0); in serverCron()
1260 if (server.aof_last_write_status == C_ERR) in serverCron()
1276 if (server.cluster_enabled) clusterCron(); in serverCron()
1281 if (server.sentinel_mode) sentinelTimer(); in serverCron()
1296 if (server.rdb_child_pid == -1 && server.aof_child_pid == -1 && in serverCron()
1297 server.rdb_bgsave_scheduled && in serverCron()
1298 (server.unixtime-server.lastbgsave_try > CONFIG_BGSAVE_RETRY_DELAY || in serverCron()
1299 server.lastbgsave_status == C_OK)) in serverCron()
1301 if (rdbSaveBackground(server.rdb_filename) == C_OK) in serverCron()
1302 server.rdb_bgsave_scheduled = 0; in serverCron()
1305 server.cronloops++; in serverCron()
1306 return 1000/server.hz; in serverCron()
1319 if (server.cluster_enabled) clusterBeforeSleep(); in beforeSleep()
1323 if (server.active_expire_enabled && server.masterhost == NULL) in beforeSleep()
1328 if (server.get_ack_from_slaves) { in beforeSleep()
1334 replicationFeedSlaves(server.slaves, server.slaveseldb, argv, 3); in beforeSleep()
1338 server.get_ack_from_slaves = 0; in beforeSleep()
1343 if (listLength(server.clients_waiting_acks)) in beforeSleep()
1347 if (listLength(server.unblocked_clients)) in beforeSleep()
1452 getRandomHexChars(server.runid,CONFIG_RUN_ID_SIZE); in initServerConfig()
1453 server.configfile = NULL; in initServerConfig()
1454 server.executable = NULL; in initServerConfig()
1455 server.hz = CONFIG_DEFAULT_HZ; in initServerConfig()
1456 server.runid[CONFIG_RUN_ID_SIZE] = '\0'; in initServerConfig()
1457 server.arch_bits = (sizeof(long) == 8) ? 64 : 32; in initServerConfig()
1458 server.port = CONFIG_DEFAULT_SERVER_PORT; in initServerConfig()
1459 server.tcp_backlog = CONFIG_DEFAULT_TCP_BACKLOG; in initServerConfig()
1460 server.bindaddr_count = 0; in initServerConfig()
1461 server.unixsocket = NULL; in initServerConfig()
1462 server.unixsocketperm = CONFIG_DEFAULT_UNIX_SOCKET_PERM; in initServerConfig()
1463 server.ipfd_count = 0; in initServerConfig()
1464 server.sofd = -1; in initServerConfig()
1465 server.protected_mode = CONFIG_DEFAULT_PROTECTED_MODE; in initServerConfig()
1466 server.dbnum = CONFIG_DEFAULT_DBNUM; in initServerConfig()
1467 server.verbosity = CONFIG_DEFAULT_VERBOSITY; in initServerConfig()
1468 server.maxidletime = CONFIG_DEFAULT_CLIENT_TIMEOUT; in initServerConfig()
1469 server.tcpkeepalive = CONFIG_DEFAULT_TCP_KEEPALIVE; in initServerConfig()
1470 server.active_expire_enabled = 1; in initServerConfig()
1471 server.client_max_querybuf_len = PROTO_MAX_QUERYBUF_LEN; in initServerConfig()
1472 server.saveparams = NULL; in initServerConfig()
1473 server.loading = 0; in initServerConfig()
1474 server.logfile = zstrdup(CONFIG_DEFAULT_LOGFILE); in initServerConfig()
1475 server.syslog_enabled = CONFIG_DEFAULT_SYSLOG_ENABLED; in initServerConfig()
1476 server.syslog_ident = zstrdup(CONFIG_DEFAULT_SYSLOG_IDENT); in initServerConfig()
1477 server.syslog_facility = LOG_LOCAL0; in initServerConfig()
1478 server.daemonize = CONFIG_DEFAULT_DAEMONIZE; in initServerConfig()
1479 server.supervised = 0; in initServerConfig()
1480 server.supervised_mode = SUPERVISED_NONE; in initServerConfig()
1481 server.aof_state = AOF_OFF; in initServerConfig()
1482 server.aof_fsync = CONFIG_DEFAULT_AOF_FSYNC; in initServerConfig()
1483 server.aof_no_fsync_on_rewrite = CONFIG_DEFAULT_AOF_NO_FSYNC_ON_REWRITE; in initServerConfig()
1484 server.aof_rewrite_perc = AOF_REWRITE_PERC; in initServerConfig()
1485 server.aof_rewrite_min_size = AOF_REWRITE_MIN_SIZE; in initServerConfig()
1486 server.aof_rewrite_base_size = 0; in initServerConfig()
1487 server.aof_rewrite_scheduled = 0; in initServerConfig()
1488 server.aof_last_fsync = time(NULL); in initServerConfig()
1489 server.aof_rewrite_time_last = -1; in initServerConfig()
1490 server.aof_rewrite_time_start = -1; in initServerConfig()
1491 server.aof_lastbgrewrite_status = C_OK; in initServerConfig()
1492 server.aof_delayed_fsync = 0; in initServerConfig()
1493 server.aof_fd = -1; in initServerConfig()
1494 server.aof_selected_db = -1; /* Make sure the first time will not match */ in initServerConfig()
1495 server.aof_flush_postponed_start = 0; in initServerConfig()
1496 server.aof_rewrite_incremental_fsync = CONFIG_DEFAULT_AOF_REWRITE_INCREMENTAL_FSYNC; in initServerConfig()
1497 server.aof_load_truncated = CONFIG_DEFAULT_AOF_LOAD_TRUNCATED; in initServerConfig()
1498 server.pidfile = NULL; in initServerConfig()
1499 server.rdb_filename = zstrdup(CONFIG_DEFAULT_RDB_FILENAME); in initServerConfig()
1500 server.aof_filename = zstrdup(CONFIG_DEFAULT_AOF_FILENAME); in initServerConfig()
1501 server.requirepass = NULL; in initServerConfig()
1502 server.rdb_compression = CONFIG_DEFAULT_RDB_COMPRESSION; in initServerConfig()
1503 server.rdb_checksum = CONFIG_DEFAULT_RDB_CHECKSUM; in initServerConfig()
1504 server.stop_writes_on_bgsave_err = CONFIG_DEFAULT_STOP_WRITES_ON_BGSAVE_ERROR; in initServerConfig()
1505 server.activerehashing = CONFIG_DEFAULT_ACTIVE_REHASHING; in initServerConfig()
1506 server.notify_keyspace_events = 0; in initServerConfig()
1507 server.maxclients = CONFIG_DEFAULT_MAX_CLIENTS; in initServerConfig()
1508 server.bpop_blocked_clients = 0; in initServerConfig()
1509 server.maxmemory = CONFIG_DEFAULT_MAXMEMORY; in initServerConfig()
1510 server.maxmemory_policy = CONFIG_DEFAULT_MAXMEMORY_POLICY; in initServerConfig()
1511 server.maxmemory_samples = CONFIG_DEFAULT_MAXMEMORY_SAMPLES; in initServerConfig()
1512 server.hash_max_ziplist_entries = OBJ_HASH_MAX_ZIPLIST_ENTRIES; in initServerConfig()
1513 server.hash_max_ziplist_value = OBJ_HASH_MAX_ZIPLIST_VALUE; in initServerConfig()
1514 server.list_max_ziplist_size = OBJ_LIST_MAX_ZIPLIST_SIZE; in initServerConfig()
1515 server.list_compress_depth = OBJ_LIST_COMPRESS_DEPTH; in initServerConfig()
1516 server.set_max_intset_entries = OBJ_SET_MAX_INTSET_ENTRIES; in initServerConfig()
1517 server.zset_max_ziplist_entries = OBJ_ZSET_MAX_ZIPLIST_ENTRIES; in initServerConfig()
1518 server.zset_max_ziplist_value = OBJ_ZSET_MAX_ZIPLIST_VALUE; in initServerConfig()
1519 server.hll_sparse_max_bytes = CONFIG_DEFAULT_HLL_SPARSE_MAX_BYTES; in initServerConfig()
1520 server.shutdown_asap = 0; in initServerConfig()
1521 server.repl_ping_slave_period = CONFIG_DEFAULT_REPL_PING_SLAVE_PERIOD; in initServerConfig()
1522 server.repl_timeout = CONFIG_DEFAULT_REPL_TIMEOUT; in initServerConfig()
1523 server.repl_min_slaves_to_write = CONFIG_DEFAULT_MIN_SLAVES_TO_WRITE; in initServerConfig()
1524 server.repl_min_slaves_max_lag = CONFIG_DEFAULT_MIN_SLAVES_MAX_LAG; in initServerConfig()
1525 server.cluster_enabled = 0; in initServerConfig()
1526 server.cluster_node_timeout = CLUSTER_DEFAULT_NODE_TIMEOUT; in initServerConfig()
1527 server.cluster_migration_barrier = CLUSTER_DEFAULT_MIGRATION_BARRIER; in initServerConfig()
1528 server.cluster_slave_validity_factor = CLUSTER_DEFAULT_SLAVE_VALIDITY; in initServerConfig()
1529 server.cluster_require_full_coverage = CLUSTER_DEFAULT_REQUIRE_FULL_COVERAGE; in initServerConfig()
1530 server.cluster_configfile = zstrdup(CONFIG_DEFAULT_CLUSTER_CONFIG_FILE); in initServerConfig()
1531 server.migrate_cached_sockets = dictCreate(&migrateCacheDictType,NULL); in initServerConfig()
1532 server.next_client_id = 1; /* Client IDs, start from 1 .*/ in initServerConfig()
1533 server.loading_process_events_interval_bytes = (1024*1024*2); in initServerConfig()
1535 server.lruclock = getLRUClock(); in initServerConfig()
1542 server.masterauth = NULL; in initServerConfig()
1543 server.masterhost = NULL; in initServerConfig()
1544 server.masterport = 6379; in initServerConfig()
1545 server.master = NULL; in initServerConfig()
1546 server.cached_master = NULL; in initServerConfig()
1547 server.repl_master_initial_offset = -1; in initServerConfig()
1548 server.repl_state = REPL_STATE_NONE; in initServerConfig()
1549 server.repl_syncio_timeout = CONFIG_REPL_SYNCIO_TIMEOUT; in initServerConfig()
1550 server.repl_serve_stale_data = CONFIG_DEFAULT_SLAVE_SERVE_STALE_DATA; in initServerConfig()
1551 server.repl_slave_ro = CONFIG_DEFAULT_SLAVE_READ_ONLY; in initServerConfig()
1552 server.repl_down_since = 0; /* Never connected, repl is down since EVER. */ in initServerConfig()
1553 server.repl_disable_tcp_nodelay = CONFIG_DEFAULT_REPL_DISABLE_TCP_NODELAY; in initServerConfig()
1554 server.repl_diskless_sync = CONFIG_DEFAULT_REPL_DISKLESS_SYNC; in initServerConfig()
1555 server.repl_diskless_sync_delay = CONFIG_DEFAULT_REPL_DISKLESS_SYNC_DELAY; in initServerConfig()
1556 server.slave_priority = CONFIG_DEFAULT_SLAVE_PRIORITY; in initServerConfig()
1557 server.slave_announce_ip = CONFIG_DEFAULT_SLAVE_ANNOUNCE_IP; in initServerConfig()
1558 server.slave_announce_port = CONFIG_DEFAULT_SLAVE_ANNOUNCE_PORT; in initServerConfig()
1559 server.master_repl_offset = 0; in initServerConfig()
1562 server.repl_backlog = NULL; in initServerConfig()
1563 server.repl_backlog_size = CONFIG_DEFAULT_REPL_BACKLOG_SIZE; in initServerConfig()
1564 server.repl_backlog_histlen = 0; in initServerConfig()
1565 server.repl_backlog_idx = 0; in initServerConfig()
1566 server.repl_backlog_off = 0; in initServerConfig()
1567 server.repl_backlog_time_limit = CONFIG_DEFAULT_REPL_BACKLOG_TIME_LIMIT; in initServerConfig()
1568 server.repl_no_slaves_since = time(NULL); in initServerConfig()
1572 server.client_obuf_limits[j] = clientBufferLimitsDefaults[j]; in initServerConfig()
1583 server.commands = dictCreate(&commandTableDictType,NULL); in initServerConfig()
1584 server.orig_commands = dictCreate(&commandTableDictType,NULL); in initServerConfig()
1586 server.delCommand = lookupCommandByCString("del"); in initServerConfig()
1587 server.multiCommand = lookupCommandByCString("multi"); in initServerConfig()
1588 server.lpushCommand = lookupCommandByCString("lpush"); in initServerConfig()
1589 server.lpopCommand = lookupCommandByCString("lpop"); in initServerConfig()
1590 server.rpopCommand = lookupCommandByCString("rpop"); in initServerConfig()
1591 server.sremCommand = lookupCommandByCString("srem"); in initServerConfig()
1592 server.execCommand = lookupCommandByCString("exec"); in initServerConfig()
1595 server.slowlog_log_slower_than = CONFIG_DEFAULT_SLOWLOG_LOG_SLOWER_THAN; in initServerConfig()
1596 server.slowlog_max_len = CONFIG_DEFAULT_SLOWLOG_MAX_LEN; in initServerConfig()
1599 server.latency_monitor_threshold = CONFIG_DEFAULT_LATENCY_MONITOR_THRESHOLD; in initServerConfig()
1602 server.assert_failed = "<no assertion failed>"; in initServerConfig()
1603 server.assert_file = "<no file>"; in initServerConfig()
1604 server.assert_line = 0; in initServerConfig()
1605 server.bug_report_start = 0; in initServerConfig()
1606 server.watchdog_period = 0; in initServerConfig()
1631 if (access(server.executable,X_OK) == -1) return C_ERR; in restartServer()
1635 server.configfile && in restartServer()
1636 rewriteConfig(server.configfile) == -1) return C_ERR; in restartServer()
1644 for (j = 3; j < (int)server.maxclients + 1024; j++) close(j); in restartServer()
1648 execve(server.executable,server.exec_argv,environ); in restartServer()
1665 rlim_t maxfiles = server.maxclients+CONFIG_MIN_RESERVED_FDS; in adjustOpenFilesLimit()
1671 server.maxclients = 1024-CONFIG_MIN_RESERVED_FDS; in adjustOpenFilesLimit()
1703 int old_maxclients = server.maxclients; in adjustOpenFilesLimit()
1704 server.maxclients = bestlimit-CONFIG_MIN_RESERVED_FDS; in adjustOpenFilesLimit()
1705 if (server.maxclients < 1) { in adjustOpenFilesLimit()
1725 (unsigned long long) bestlimit, server.maxclients); in adjustOpenFilesLimit()
1745 if (somaxconn > 0 && somaxconn < server.tcp_backlog) { in checkTcpBacklogSettings()
1746 … because /proc/sys/net/core/somaxconn is set to the lower value of %d.", server.tcp_backlog, somax… in checkTcpBacklogSettings()
1776 if (server.bindaddr_count == 0) server.bindaddr[0] = NULL; in listenToPort()
1777 for (j = 0; j < server.bindaddr_count || j == 0; j++) { in listenToPort()
1778 if (server.bindaddr[j] == NULL) { in listenToPort()
1781 fds[*count] = anetTcp6Server(server.neterr,port,NULL, in listenToPort()
1782 server.tcp_backlog); in listenToPort()
1788 fds[*count] = anetTcpServer(server.neterr,port,NULL, in listenToPort()
1789 server.tcp_backlog); in listenToPort()
1799 } else if (strchr(server.bindaddr[j],':')) { in listenToPort()
1801 fds[*count] = anetTcp6Server(server.neterr,port,server.bindaddr[j], in listenToPort()
1802 server.tcp_backlog); in listenToPort()
1805 fds[*count] = anetTcpServer(server.neterr,port,server.bindaddr[j], in listenToPort()
1806 server.tcp_backlog); in listenToPort()
1811 server.bindaddr[j] ? server.bindaddr[j] : "*", in listenToPort()
1812 port, server.neterr); in listenToPort()
1827 server.stat_numcommands = 0; in resetServerStats()
1828 server.stat_numconnections = 0; in resetServerStats()
1829 server.stat_expiredkeys = 0; in resetServerStats()
1830 server.stat_evictedkeys = 0; in resetServerStats()
1831 server.stat_keyspace_misses = 0; in resetServerStats()
1832 server.stat_keyspace_hits = 0; in resetServerStats()
1833 server.stat_fork_time = 0; in resetServerStats()
1834 server.stat_fork_rate = 0; in resetServerStats()
1835 server.stat_rejected_conn = 0; in resetServerStats()
1836 server.stat_sync_full = 0; in resetServerStats()
1837 server.stat_sync_partial_ok = 0; in resetServerStats()
1838 server.stat_sync_partial_err = 0; in resetServerStats()
1840 server.inst_metric[j].idx = 0; in resetServerStats()
1841 server.inst_metric[j].last_sample_time = mstime(); in resetServerStats()
1842 server.inst_metric[j].last_sample_count = 0; in resetServerStats()
1843 memset(server.inst_metric[j].samples,0, in resetServerStats()
1844 sizeof(server.inst_metric[j].samples)); in resetServerStats()
1846 server.stat_net_input_bytes = 0; in resetServerStats()
1847 server.stat_net_output_bytes = 0; in resetServerStats()
1848 server.aof_delayed_fsync = 0; in resetServerStats()
1858 if (server.syslog_enabled) { in initServer()
1859 openlog(server.syslog_ident, LOG_PID | LOG_NDELAY | LOG_NOWAIT, in initServer()
1860 server.syslog_facility); in initServer()
1863 server.pid = getpid(); in initServer()
1864 server.current_client = NULL; in initServer()
1865 server.clients = listCreate(); in initServer()
1866 server.clients_to_close = listCreate(); in initServer()
1867 server.slaves = listCreate(); in initServer()
1868 server.monitors = listCreate(); in initServer()
1869 server.clients_pending_write = listCreate(); in initServer()
1870 server.slaveseldb = -1; /* Force to emit the first SELECT command. */ in initServer()
1871 server.unblocked_clients = listCreate(); in initServer()
1872 server.ready_keys = listCreate(); in initServer()
1873 server.clients_waiting_acks = listCreate(); in initServer()
1874 server.get_ack_from_slaves = 0; in initServer()
1875 server.clients_paused = 0; in initServer()
1876 server.system_memory_size = zmalloc_get_memory_size(); in initServer()
1880 server.el = aeCreateEventLoop(server.maxclients+CONFIG_FDSET_INCR); in initServer()
1881 server.db = zmalloc(sizeof(redisDb)*server.dbnum); in initServer()
1884 if (server.port != 0 && in initServer()
1885 listenToPort(server.port,server.ipfd,&server.ipfd_count) == C_ERR) in initServer()
1889 if (server.unixsocket != NULL) { in initServer()
1890 unlink(server.unixsocket); /* don't care if this fails */ in initServer()
1891 server.sofd = anetUnixServer(server.neterr,server.unixsocket, in initServer()
1892 server.unixsocketperm, server.tcp_backlog); in initServer()
1893 if (server.sofd == ANET_ERR) { in initServer()
1894 serverLog(LL_WARNING, "Opening Unix socket: %s", server.neterr); in initServer()
1897 anetNonBlock(NULL,server.sofd); in initServer()
1901 if (server.ipfd_count == 0 && server.sofd < 0) { in initServer()
1907 for (j = 0; j < server.dbnum; j++) { in initServer()
1908 server.db[j].dict = dictCreate(&dbDictType,NULL); in initServer()
1909 server.db[j].expires = dictCreate(&keyptrDictType,NULL); in initServer()
1910 server.db[j].blocking_keys = dictCreate(&keylistDictType,NULL); in initServer()
1911 server.db[j].ready_keys = dictCreate(&setDictType,NULL); in initServer()
1912 server.db[j].watched_keys = dictCreate(&keylistDictType,NULL); in initServer()
1913 server.db[j].eviction_pool = evictionPoolAlloc(); in initServer()
1914 server.db[j].id = j; in initServer()
1915 server.db[j].avg_ttl = 0; in initServer()
1917 server.pubsub_channels = dictCreate(&keylistDictType,NULL); in initServer()
1918 server.pubsub_patterns = listCreate(); in initServer()
1919 listSetFreeMethod(server.pubsub_patterns,freePubsubPattern); in initServer()
1920 listSetMatchMethod(server.pubsub_patterns,listMatchPubsubPattern); in initServer()
1921 server.cronloops = 0; in initServer()
1922 server.rdb_child_pid = -1; in initServer()
1923 server.aof_child_pid = -1; in initServer()
1924 server.rdb_child_type = RDB_CHILD_TYPE_NONE; in initServer()
1925 server.rdb_bgsave_scheduled = 0; in initServer()
1927 server.aof_buf = sdsempty(); in initServer()
1928 server.lastsave = time(NULL); /* At startup we consider the DB saved. */ in initServer()
1929 server.lastbgsave_try = 0; /* At startup we never tried to BGSAVE. */ in initServer()
1930 server.rdb_save_time_last = -1; in initServer()
1931 server.rdb_save_time_start = -1; in initServer()
1932 server.dirty = 0; in initServer()
1935 server.stat_starttime = time(NULL); in initServer()
1936 server.stat_peak_memory = 0; in initServer()
1937 server.resident_set_size = 0; in initServer()
1938 server.lastbgsave_status = C_OK; in initServer()
1939 server.aof_last_write_status = C_OK; in initServer()
1940 server.aof_last_write_errno = 0; in initServer()
1941 server.repl_good_slaves_count = 0; in initServer()
1946 if(aeCreateTimeEvent(server.el, 1, serverCron, NULL, NULL) == AE_ERR) { in initServer()
1953 for (j = 0; j < server.ipfd_count; j++) { in initServer()
1954 if (aeCreateFileEvent(server.el, server.ipfd[j], AE_READABLE, in initServer()
1961 if (server.sofd > 0 && aeCreateFileEvent(server.el,server.sofd,AE_READABLE, in initServer()
1965 if (server.aof_state == AOF_ON) { in initServer()
1966 server.aof_fd = open(server.aof_filename, in initServer()
1968 if (server.aof_fd == -1) { in initServer()
1979 if (server.arch_bits == 32 && server.maxmemory == 0) { in initServer()
1981 server.maxmemory = 3072LL*(1024*1024); /* 3 GB */ in initServer()
1982 server.maxmemory_policy = MAXMEMORY_NO_EVICTION; in initServer()
1985 if (server.cluster_enabled) clusterInit(); in initServer()
2024 retval1 = dictAdd(server.commands, sdsnew(c->name), c); in populateCommandTable()
2027 retval2 = dictAdd(server.orig_commands, sdsnew(c->name), c); in populateCommandTable()
2084 return dictFetchValue(server.commands, name); in lookupCommand()
2091 cmd = dictFetchValue(server.commands, name); in lookupCommandByCString()
2104 struct redisCommand *cmd = dictFetchValue(server.commands, name); in lookupCommandOrOriginal()
2106 if (!cmd) cmd = dictFetchValue(server.orig_commands,name); in lookupCommandOrOriginal()
2124 if (server.aof_state != AOF_OFF && flags & PROPAGATE_AOF) in propagate()
2127 replicationFeedSlaves(server.slaves,dbid,argv,argc); in propagate()
2148 if (server.loading) return; /* No propagation during loading. */ in alsoPropagate()
2155 redisOpArrayAppend(&server.also_propagate,cmd,dbid,argvcopy,argc,target); in alsoPropagate()
2226 if (listLength(server.monitors) && in call()
2227 !server.loading && in call()
2230 replicationFeedMonitors(c,server.monitors,c->db->id,c->argv,c->argc); in call()
2236 redisOpArrayInit(&server.also_propagate); in call()
2239 dirty = server.dirty; in call()
2243 dirty = server.dirty-dirty; in call()
2248 if (server.loading && c->flags & CLIENT_LUA) in call()
2254 if (c->flags & CLIENT_LUA && server.lua_caller) { in call()
2256 server.lua_caller->flags |= CLIENT_FORCE_REPL; in call()
2258 server.lua_caller->flags |= CLIENT_FORCE_AOF; in call()
2314 if (server.also_propagate.numops) { in call()
2319 for (j = 0; j < server.also_propagate.numops; j++) { in call()
2320 rop = &server.also_propagate.ops[j]; in call()
2329 redisOpArrayFree(&server.also_propagate); in call()
2331 server.stat_numcommands++; in call()
2370 if (server.requirepass && !c->authenticated && c->cmd->proc != authCommand) in processCommand()
2381 if (server.cluster_enabled && in processCommand()
2384 server.lua_caller->flags & CLIENT_MASTER) && in processCommand()
2392 if (n == NULL || n != server.cluster->myself) { in processCommand()
2408 if (server.maxmemory) { in processCommand()
2412 if (server.current_client == NULL) return C_ERR; in processCommand()
2425 if (((server.stop_writes_on_bgsave_err && in processCommand()
2426 server.saveparamslen > 0 && in processCommand()
2427 server.lastbgsave_status == C_ERR) || in processCommand()
2428 server.aof_last_write_status == C_ERR) && in processCommand()
2429 server.masterhost == NULL && in processCommand()
2434 if (server.aof_last_write_status == C_OK) in processCommand()
2440 strerror(server.aof_last_write_errno))); in processCommand()
2446 if (server.masterhost == NULL && in processCommand()
2447 server.repl_min_slaves_to_write && in processCommand()
2448 server.repl_min_slaves_max_lag && in processCommand()
2450 server.repl_good_slaves_count < server.repl_min_slaves_to_write) in processCommand()
2459 if (server.masterhost && server.repl_slave_ro && in processCommand()
2480 if (server.masterhost && server.repl_state != REPL_STATE_CONNECTED && in processCommand()
2481 server.repl_serve_stale_data == 0 && in processCommand()
2491 if (server.loading && !(c->cmd->flags & CMD_LOADING)) { in processCommand()
2497 if (server.lua_timedout && in processCommand()
2521 c->woff = server.master_repl_offset; in processCommand()
2522 if (listLength(server.ready_keys)) in processCommand()
2535 for (j = 0; j < server.ipfd_count; j++) close(server.ipfd[j]); in closeListeningSockets()
2536 if (server.sofd != -1) close(server.sofd); in closeListeningSockets()
2537 if (server.cluster_enabled) in closeListeningSockets()
2538 for (j = 0; j < server.cfd_count; j++) close(server.cfd[j]); in closeListeningSockets()
2539 if (unlink_unix_socket && server.unixsocket) { in closeListeningSockets()
2541 unlink(server.unixsocket); /* don't care if this fails */ in closeListeningSockets()
2557 if (server.rdb_child_pid != -1) { in prepareForShutdown()
2559 kill(server.rdb_child_pid,SIGUSR1); in prepareForShutdown()
2560 rdbRemoveTempFile(server.rdb_child_pid); in prepareForShutdown()
2563 if (server.aof_state != AOF_OFF) { in prepareForShutdown()
2566 if (server.aof_child_pid != -1) { in prepareForShutdown()
2569 if (server.aof_state == AOF_WAIT_REWRITE) { in prepareForShutdown()
2575 kill(server.aof_child_pid,SIGUSR1); in prepareForShutdown()
2579 aof_fsync(server.aof_fd); in prepareForShutdown()
2583 if ((server.saveparamslen > 0 && !nosave) || save) { in prepareForShutdown()
2586 if (rdbSave(server.rdb_filename) != C_OK) { in prepareForShutdown()
2598 if (server.daemonize || server.pidfile) { in prepareForShutdown()
2600 unlink(server.pidfile); in prepareForShutdown()
2610 server.sentinel_mode ? "Sentinel" : "Redis"); in prepareForShutdown()
2659 if (!server.requirepass) { in authCommand()
2661 } else if (!time_independent_strcmp(c->argv[1]->ptr, server.requirepass)) { in authCommand()
2762 addReplyMultiBulkLen(c, dictSize(server.commands)); in commandCommand()
2763 di = dictGetIterator(server.commands); in commandCommand()
2772 addReplyCommand(c, dictFetchValue(server.commands, c->argv[i]->ptr)); in commandCommand()
2775 addReplyLongLong(c, dictSize(server.commands)); in commandCommand()
2835 time_t uptime = server.unixtime-server.stat_starttime; in genRedisInfoString()
2856 if (server.cluster_enabled) mode = "cluster"; in genRedisInfoString()
2857 else if (server.sentinel_mode) mode = "sentinel"; in genRedisInfoString()
2894 server.arch_bits, in genRedisInfoString()
2902 server.runid, in genRedisInfoString()
2903 server.port, in genRedisInfoString()
2906 server.hz, in genRedisInfoString()
2907 (unsigned long) server.lruclock, in genRedisInfoString()
2908 server.executable ? server.executable : "", in genRedisInfoString()
2909 server.configfile ? server.configfile : ""); in genRedisInfoString()
2921 listLength(server.clients)-listLength(server.slaves), in genRedisInfoString()
2923 server.bpop_blocked_clients); in genRedisInfoString()
2935 size_t total_system_mem = server.system_memory_size; in genRedisInfoString()
2937 long long memory_lua = (long long)lua_gc(server.lua,LUA_GCCOUNT,0)*1024; in genRedisInfoString()
2943 if (zmalloc_used > server.stat_peak_memory) in genRedisInfoString()
2944 server.stat_peak_memory = zmalloc_used; in genRedisInfoString()
2947 bytesToHuman(peak_hmem,server.stat_peak_memory); in genRedisInfoString()
2950 bytesToHuman(used_memory_rss_hmem,server.resident_set_size); in genRedisInfoString()
2951 bytesToHuman(maxmemory_hmem,server.maxmemory); in genRedisInfoString()
2973 server.resident_set_size, in genRedisInfoString()
2975 server.stat_peak_memory, in genRedisInfoString()
2981 server.maxmemory, in genRedisInfoString()
2984 zmalloc_get_fragmentation_ratio(server.resident_set_size), in genRedisInfoString()
3008 server.loading, in genRedisInfoString()
3009 server.dirty, in genRedisInfoString()
3010 server.rdb_child_pid != -1, in genRedisInfoString()
3011 (intmax_t)server.lastsave, in genRedisInfoString()
3012 (server.lastbgsave_status == C_OK) ? "ok" : "err", in genRedisInfoString()
3013 (intmax_t)server.rdb_save_time_last, in genRedisInfoString()
3014 (intmax_t)((server.rdb_child_pid == -1) ? in genRedisInfoString()
3015 -1 : time(NULL)-server.rdb_save_time_start), in genRedisInfoString()
3016 server.aof_state != AOF_OFF, in genRedisInfoString()
3017 server.aof_child_pid != -1, in genRedisInfoString()
3018 server.aof_rewrite_scheduled, in genRedisInfoString()
3019 (intmax_t)server.aof_rewrite_time_last, in genRedisInfoString()
3020 (intmax_t)((server.aof_child_pid == -1) ? in genRedisInfoString()
3021 -1 : time(NULL)-server.aof_rewrite_time_start), in genRedisInfoString()
3022 (server.aof_lastbgrewrite_status == C_OK) ? "ok" : "err", in genRedisInfoString()
3023 (server.aof_last_write_status == C_OK) ? "ok" : "err"); in genRedisInfoString()
3025 if (server.aof_state != AOF_OFF) { in genRedisInfoString()
3034 (long long) server.aof_current_size, in genRedisInfoString()
3035 (long long) server.aof_rewrite_base_size, in genRedisInfoString()
3036 server.aof_rewrite_scheduled, in genRedisInfoString()
3037 sdslen(server.aof_buf), in genRedisInfoString()
3040 server.aof_delayed_fsync); in genRedisInfoString()
3043 if (server.loading) { in genRedisInfoString()
3046 off_t remaining_bytes = server.loading_total_bytes- in genRedisInfoString()
3047 server.loading_loaded_bytes; in genRedisInfoString()
3049 perc = ((double)server.loading_loaded_bytes / in genRedisInfoString()
3050 (server.loading_total_bytes+1)) * 100; in genRedisInfoString()
3052 elapsed = time(NULL)-server.loading_start_time; in genRedisInfoString()
3057 eta = (elapsed*remaining_bytes)/(server.loading_loaded_bytes+1); in genRedisInfoString()
3066 (intmax_t) server.loading_start_time, in genRedisInfoString()
3067 (unsigned long long) server.loading_total_bytes, in genRedisInfoString()
3068 (unsigned long long) server.loading_loaded_bytes, in genRedisInfoString()
3099 server.stat_numconnections, in genRedisInfoString()
3100 server.stat_numcommands, in genRedisInfoString()
3102 server.stat_net_input_bytes, in genRedisInfoString()
3103 server.stat_net_output_bytes, in genRedisInfoString()
3106 server.stat_rejected_conn, in genRedisInfoString()
3107 server.stat_sync_full, in genRedisInfoString()
3108 server.stat_sync_partial_ok, in genRedisInfoString()
3109 server.stat_sync_partial_err, in genRedisInfoString()
3110 server.stat_expiredkeys, in genRedisInfoString()
3111 server.stat_evictedkeys, in genRedisInfoString()
3112 server.stat_keyspace_hits, in genRedisInfoString()
3113 server.stat_keyspace_misses, in genRedisInfoString()
3114 dictSize(server.pubsub_channels), in genRedisInfoString()
3115 listLength(server.pubsub_patterns), in genRedisInfoString()
3116 server.stat_fork_time, in genRedisInfoString()
3117 dictSize(server.migrate_cached_sockets)); in genRedisInfoString()
3126 server.masterhost == NULL ? "master" : "slave"); in genRedisInfoString()
3127 if (server.masterhost) { in genRedisInfoString()
3130 if (server.master) in genRedisInfoString()
3131 slave_repl_offset = server.master->reploff; in genRedisInfoString()
3132 else if (server.cached_master) in genRedisInfoString()
3133 slave_repl_offset = server.cached_master->reploff; in genRedisInfoString()
3142 ,server.masterhost, in genRedisInfoString()
3143 server.masterport, in genRedisInfoString()
3144 (server.repl_state == REPL_STATE_CONNECTED) ? in genRedisInfoString()
3146 server.master ? in genRedisInfoString()
3147 ((int)(server.unixtime-server.master->lastinteraction)) : -1, in genRedisInfoString()
3148 server.repl_state == REPL_STATE_TRANSFER, in genRedisInfoString()
3152 if (server.repl_state == REPL_STATE_TRANSFER) { in genRedisInfoString()
3157 (server.repl_transfer_size - server.repl_transfer_read), in genRedisInfoString()
3158 (int)(server.unixtime-server.repl_transfer_lastio) in genRedisInfoString()
3162 if (server.repl_state != REPL_STATE_CONNECTED) { in genRedisInfoString()
3165 (intmax_t)server.unixtime-server.repl_down_since); in genRedisInfoString()
3170 server.slave_priority, in genRedisInfoString()
3171 server.repl_slave_ro); in genRedisInfoString()
3176 listLength(server.slaves)); in genRedisInfoString()
3180 if (server.repl_min_slaves_to_write && in genRedisInfoString()
3181 server.repl_min_slaves_max_lag) { in genRedisInfoString()
3184 server.repl_good_slaves_count); in genRedisInfoString()
3187 if (listLength(server.slaves)) { in genRedisInfoString()
3192 listRewind(server.slaves,&li); in genRedisInfoString()
3235 server.master_repl_offset, in genRedisInfoString()
3236 server.repl_backlog != NULL, in genRedisInfoString()
3237 server.repl_backlog_size, in genRedisInfoString()
3238 server.repl_backlog_off, in genRedisInfoString()
3239 server.repl_backlog_histlen); in genRedisInfoString()
3279 server.cluster_enabled); in genRedisInfoString()
3286 for (j = 0; j < server.dbnum; j++) { in genRedisInfoString()
3289 keys = dictSize(server.db[j].dict); in genRedisInfoString()
3290 vkeys = dictSize(server.db[j].expires); in genRedisInfoString()
3294 j, keys, vkeys, server.db[j].avg_ttl); in genRedisInfoString()
3316 listAddNodeTail(server.monitors,c); in monitorCommand()
3390 if (server.maxmemory_samples <= EVICTION_SAMPLES_ARRAY_SIZE) { in evictionPoolPopulate()
3393 samples = zmalloc(sizeof(samples[0])*server.maxmemory_samples); in evictionPoolPopulate()
3396 count = dictGetSomeKeys(sampledict,samples,server.maxmemory_samples); in evictionPoolPopulate()
3450 int slaves = listLength(server.slaves); in freeMemoryIfNeeded()
3460 listRewind(server.slaves,&li); in freeMemoryIfNeeded()
3470 if (server.aof_state != AOF_OFF) { in freeMemoryIfNeeded()
3471 mem_used -= sdslen(server.aof_buf); in freeMemoryIfNeeded()
3476 if (mem_used <= server.maxmemory) return C_OK; in freeMemoryIfNeeded()
3478 if (server.maxmemory_policy == MAXMEMORY_NO_EVICTION) in freeMemoryIfNeeded()
3482 mem_tofree = mem_used - server.maxmemory; in freeMemoryIfNeeded()
3488 for (j = 0; j < server.dbnum; j++) { in freeMemoryIfNeeded()
3492 redisDb *db = server.db+j; in freeMemoryIfNeeded()
3495 if (server.maxmemory_policy == MAXMEMORY_ALLKEYS_LRU || in freeMemoryIfNeeded()
3496 server.maxmemory_policy == MAXMEMORY_ALLKEYS_RANDOM) in freeMemoryIfNeeded()
3498 dict = server.db[j].dict; in freeMemoryIfNeeded()
3500 dict = server.db[j].expires; in freeMemoryIfNeeded()
3505 if (server.maxmemory_policy == MAXMEMORY_ALLKEYS_RANDOM || in freeMemoryIfNeeded()
3506 server.maxmemory_policy == MAXMEMORY_VOLATILE_RANDOM) in freeMemoryIfNeeded()
3513 else if (server.maxmemory_policy == MAXMEMORY_ALLKEYS_LRU || in freeMemoryIfNeeded()
3514 server.maxmemory_policy == MAXMEMORY_VOLATILE_LRU) in freeMemoryIfNeeded()
3549 else if (server.maxmemory_policy == MAXMEMORY_VOLATILE_TTL) { in freeMemoryIfNeeded()
3550 for (k = 0; k < server.maxmemory_samples; k++) { in freeMemoryIfNeeded()
3589 server.stat_evictedkeys++; in freeMemoryIfNeeded()
3643 if (!server.pidfile) server.pidfile = zstrdup(CONFIG_DEFAULT_PID_FILE); in createPidFile()
3646 FILE *fp = fopen(server.pidfile,"w"); in createPidFile()
3703 if (server.cluster_enabled) mode = "cluster"; in redisAsciiArt()
3704 else if (server.sentinel_mode) mode = "sentinel"; in redisAsciiArt()
3707 if (server.syslog_enabled) { in redisAsciiArt()
3714 mode, server.port, in redisAsciiArt()
3723 mode, server.port, in redisAsciiArt()
3749 if (server.shutdown_asap && sig == SIGINT) { in sigShutdownHandler()
3753 } else if (server.loading) { in sigShutdownHandler()
3758 server.shutdown_asap = 1; in sigShutdownHandler()
3800 if (server.aof_state == AOF_ON) { in loadDataFromDisk()
3801 if (loadAppendOnlyFile(server.aof_filename) == C_OK) in loadDataFromDisk()
3804 if (rdbLoad(server.rdb_filename) == C_OK) { in loadDataFromDisk()
3823 if (server.cluster_enabled) server_mode = " [cluster]"; in redisSetProcTitle()
3824 else if (server.sentinel_mode) server_mode = " [sentinel]"; in redisSetProcTitle()
3828 server.bindaddr_count ? server.bindaddr[0] : "*", in redisSetProcTitle()
3829 server.port, in redisSetProcTitle()
3972 server.sentinel_mode = checkForSentinelMode(argc,argv); in main()
3977 server.executable = getAbsolutePath(argv[0]); in main()
3978 server.exec_argv = zmalloc(sizeof(char*)*(argc+1)); in main()
3979 server.exec_argv[argc] = NULL; in main()
3980 for (j = 0; j < argc; j++) server.exec_argv[j] = zstrdup(argv[j]); in main()
3985 if (server.sentinel_mode) { in main()
4020 server.configfile = getAbsolutePath(configfile); in main()
4023 zfree(server.exec_argv[j]); in main()
4024 server.exec_argv[j] = zstrdup(server.configfile); in main()
4050 if (server.sentinel_mode && configfile && *configfile == '-') { in main()
4061 …ig. In order to specify a config file use %s /path/to/%s.conf", argv[0], server.sentinel_mode ? "s… in main()
4064 server.supervised = redisIsSupervised(server.supervised_mode); in main()
4065 int background = server.daemonize && !server.supervised; in main()
4069 if (background || server.pidfile) createPidFile(); in main()
4074 if (!server.sentinel_mode) { in main()
4081 if (server.cluster_enabled) { in main()
4089 if (server.ipfd_count > 0) in main()
4090 … serverLog(LL_NOTICE,"The server is now ready to accept connections on port %d", server.port); in main()
4091 if (server.sofd > 0) in main()
4092 … serverLog(LL_NOTICE,"The server is now ready to accept connections at %s", server.unixsocket); in main()
4098 if (server.maxmemory > 0 && server.maxmemory < 1024*1024) { in main()
4099 … 1MB (current value is %llu bytes). Are you sure this is what you really want?", server.maxmemory); in main()
4102 aeSetBeforeSleepProc(server.el,beforeSleep); in main()
4103 aeMain(server.el); in main()
4104 aeDeleteEventLoop(server.el); in main()