int masterconn_init(void) { uint32_t ReconnectionDelay; uint32_t MetaDLFreq; masterconn *eptr; ReconnectionDelay = cfg_getuint32("MASTER_RECONNECTION_DELAY",5); MasterHost = cfg_getstr("MASTER_HOST","mfsmaster"); MasterPort = cfg_getstr("MASTER_PORT","9419"); BindHost = cfg_getstr("BIND_HOST","*"); Timeout = cfg_getuint32("MASTER_TIMEOUT",60); BackLogsNumber = cfg_getuint32("BACK_LOGS",50); BackMetaCopies = cfg_getuint32("BACK_META_KEEP_PREVIOUS",3); MetaDLFreq = cfg_getuint32("META_DOWNLOAD_FREQ",24); if (Timeout>65536) { Timeout=65535; } if (Timeout<10) { Timeout=10; } if (BackLogsNumber<5) { BackLogsNumber=5; } if (BackLogsNumber>10000) { BackLogsNumber=10000; } if (MetaDLFreq>(BackLogsNumber/2)) { MetaDLFreq=BackLogsNumber/2; } eptr = masterconnsingleton = malloc(sizeof(masterconn)); passert(eptr); eptr->masteraddrvalid = 0; eptr->mode = FREE; eptr->pdescpos = -1; eptr->logfd = NULL; eptr->metafd = -1; eptr->oldmode = 0; masterconn_findlastlogversion(); if (masterconn_initconnect(eptr)<0) { return -1; } reconnect_hook = main_timeregister(TIMEMODE_RUN_LATE,ReconnectionDelay,0,masterconn_reconnect); download_hook = main_timeregister(TIMEMODE_RUN_LATE,MetaDLFreq*3600,630,masterconn_metadownloadinit); main_destructregister(masterconn_term); main_pollregister(masterconn_desc,masterconn_serve); main_reloadregister(masterconn_reload); main_timeregister(TIMEMODE_RUN_LATE,60,0,masterconn_sessionsdownloadinit); main_timeregister(TIMEMODE_RUN_LATE,1,0,masterconn_metachanges_flush); return 0; }
int chartsdata_init (void) { struct itimerval uc,pc; it_set.it_interval.tv_sec = 0; it_set.it_interval.tv_usec = 0; it_set.it_value.tv_sec = 999; it_set.it_value.tv_usec = 999999; setitimer(ITIMER_VIRTUAL,&it_set,&uc); // user time setitimer(ITIMER_PROF,&it_set,&pc); // user time + system time main_timeregister(TIMEMODE_RUN_LATE,60,0,chartsdata_refresh); main_timeregister(TIMEMODE_RUN_LATE,3600,0,chartsdata_store); main_destructregister(chartsdata_term); return charts_init(calcdefs,statdefs,estatdefs,CHARTS_FILENAME); }
int matomlserv_init(void) { ListenHost = cfg_getstr("MATOML_LISTEN_HOST","*"); ListenPort = cfg_getstr("MATOML_LISTEN_PORT","9419"); lsock = tcpsocket(); if (lsock<0) { mfs_errlog(LOG_ERR,"master <-> metaloggers module: can't create socket"); return -1; } tcpnonblock(lsock); tcpnodelay(lsock); tcpreuseaddr(lsock); if (tcpsetacceptfilter(lsock)<0 && errno!=ENOTSUP) { mfs_errlog_silent(LOG_NOTICE,"master <-> metaloggers module: can't set accept filter"); } if (tcpstrlisten(lsock,ListenHost,ListenPort,100)<0) { mfs_arg_errlog(LOG_ERR,"master <-> metaloggers module: can't listen on %s:%s",ListenHost,ListenPort); return -1; } mfs_arg_syslog(LOG_NOTICE,"master <-> metaloggers module: listen on %s:%s",ListenHost,ListenPort); matomlservhead = NULL; ChangelogSecondsToRemember = cfg_getuint16("MATOML_LOG_PRESERVE_SECONDS",600); if (ChangelogSecondsToRemember>3600) { syslog(LOG_WARNING,"Number of seconds of change logs to be preserved in master is too big (%"PRIu16") - decreasing to 3600 seconds",ChangelogSecondsToRemember); ChangelogSecondsToRemember=3600; } main_reloadregister(matomlserv_reload); main_destructregister(matomlserv_term); main_canexitregister(matomlserv_canexit); main_pollregister(matomlserv_desc,matomlserv_serve); main_timeregister(TIMEMODE_SKIP_LATE,3600,0,matomlserv_status); return 0; }
int matomlserv_init(void) { ListenHost = cfg_getstr("MATOML_LISTEN_HOST","*"); ListenPort = cfg_getstr("MATOML_LISTEN_PORT","9419"); lsock = tcpsocket(); if (lsock<0) { mfs_errlog(LOG_ERR,"master <-> metaloggers module: can't create socket"); return -1; } tcpnonblock(lsock); tcpnodelay(lsock); tcpreuseaddr(lsock); if (tcpsetacceptfilter(lsock)<0 && errno!=ENOTSUP) { mfs_errlog_silent(LOG_NOTICE,"master <-> metaloggers module: can't set accept filter"); } if (tcpstrlisten(lsock,ListenHost,ListenPort,100)<0) { mfs_errlog(LOG_ERR,"master <-> metaloggers module: can't listen on socket"); return -1; } mfs_arg_syslog(LOG_NOTICE,"master <-> metaloggers module: listen on %s:%s",ListenHost,ListenPort); matomlservhead = NULL; main_reloadregister(matomlserv_reload); main_destructregister(matomlserv_term); main_pollregister(matomlserv_desc,matomlserv_serve); main_timeregister(TIMEMODE_SKIP_LATE,3600,0,matomlserv_status); return 0; }
static void state_refresh() { int havevip = checkvirtualip(); if( ismaster() ) { if(!havevip) { MFSLOG(LOG_ERR, "is master but have not the vip kill myself\n"); assert(0); } /* for master, nothing to deal with */ return; } /** * for session is not replayed in slave, we should load it * for now, changelog from master will be discarded * * Dongyang Zhang */ if(havevip) { MFSLOG(LOG_NOTICE, "slave got the vip, will switch to master"); set_state(MFS_STATE_MASTER); matocuserv_sessionsinit(NULL); main_timeregister(TIMEMODE_RUNONCE,1,0,chunk_jobs_main); main_timeregister(TIMEMODE_RUNONCE,1,0,fs_test_files); main_timeregister(TIMEMODE_RUNONCE,1,0,fsnodes_check_all_quotas); main_timeregister(TIMEMODE_RUNONCE,300,0,fs_emptytrash); main_timeregister(TIMEMODE_RUNONCE,60,0,fs_emptyreserved); main_timeregister(TIMEMODE_RUNONCE,60,0,fsnodes_freeinodes); main_timeregister(TIMEMODE_RUNONCE,3600,0,fs_dostoreall); } }
int masterconn_init(void) { uint32_t ReconnectionDelay; masterconn *eptr; ReconnectionDelay = cfg_getuint32("MASTER_RECONNECTION_DELAY",5); MasterHost = cfg_getstr("MASTER_HOST","mfsmaster"); MasterPort = cfg_getstr("MASTER_PORT","9419"); BindHost = cfg_getstr("BIND_HOST","*"); Timeout = cfg_getuint32("MASTER_TIMEOUT",10); BackLogsNumber = cfg_getuint32("BACK_LOGS",50); BackMetaCopies = cfg_getuint32("BACK_META_KEEP_PREVIOUS",3); if (Timeout>65536) { Timeout=65535; } if (Timeout<10) { Timeout=10; } if (BackLogsNumber<5) { BackLogsNumber=5; } if (BackLogsNumber>10000) { BackLogsNumber=10000; } eptr = masterconnsingleton = malloc(sizeof(masterconn)); passert(eptr); eptr->masteraddrvalid = 0; eptr->mode = FREE; eptr->pdescpos = -1; eptr->metafd = -1; eptr->oldmode = 0; currentlogversion = fs_getversion(); if (!fs_ismastermode() && masterconn_initconnect(eptr)<0) { return -1; } reconnect_hook = main_timeregister(TIMEMODE_RUN_LATE,ReconnectionDelay,0,masterconn_reconnect); main_destructregister(masterconn_term); main_pollregister(masterconn_desc,masterconn_serve); main_reloadregister(masterconn_reload); main_timeregister(TIMEMODE_RUN_LATE,60,0,masterconn_sessionsdownloadinit); return 0; }
int state_init() { int whethermaster = cfg_getuint32("MASTER_STATE", 1); g_virtual_ip = cfg_getstr("VIRTUAL_IP", ""); int havevip = checkvirtualip(); if( ( whethermaster && !havevip ) || ( !whethermaster && havevip ) ) { MFSLOG(LOG_ERR, "state : %d and havevip :%d conflict vip:%s\n", whethermaster, havevip, g_virtual_ip); return -1; } whethermaster ? set_state(MFS_STATE_MASTER) : set_state(MFS_STATE_SLAVE); main_timeregister(TIMEMODE_RUNALL, 2, 0, state_refresh); return 0; }