@@ -76,6 +76,13 @@ void center::read_config()
76
76
// 交换主副配置指针
77
77
swap (telemeter::setting_copy, telemeter::setting); // atomic operation
78
78
79
+ LOG_INFO << " read config, interval: " << next_read_interval * 1000 << " s, current setting:" ;
80
+ LOG_INFO << " load record interval: " << telemeter::setting->mir_load_record_interval_ ;
81
+ LOG_INFO << " load database interval: " << telemeter::setting->mir_dblog_interval_ ;
82
+ LOG_INFO << " load balance interval: " << telemeter::setting->load_balance_interval_ ;
83
+ LOG_INFO << " max disbeat interval: " << telemeter::setting->mir_max_disbeat_time_ ;
84
+ LOG_INFO << " clear mirs data time: " << telemeter::setting->clear_mirs_data_time_ ;
85
+ LOG_INFO << " login cache time: " << telemeter::setting->cli_login_cache_time_ ;
79
86
// 挂起该进程
80
87
sleep (next_read_interval * 1000 );
81
88
}
@@ -92,6 +99,7 @@ void center::wait_cli_login()
92
99
93
100
// 纠正树形结构中cli信息的任务, 将交给线程池异步执行
94
101
auto correct_tree_structure = [&](uuid cli_id){
102
+ LOG_INFO << " correct info in tree-like structure of client id: " << cli_id;
95
103
for (auto & kvp : mirs_data_)
96
104
{
97
105
if (kvp.second .contains (cli_id))
@@ -196,6 +204,7 @@ void center::wait_cli_login()
196
204
197
205
// 数据库记录日志
198
206
// dblog(cli_login, uid);
207
+ LOG_INFO << " client login, uid: " << uid << " , reply mirs ip: " << available_mir.to_string ();
199
208
if (this ->all_cli_ .count (uid) == 0 )
200
209
this ->all_cli_ .insert (uid);
201
210
else
@@ -220,8 +229,10 @@ void center::wait_cli_login()
220
229
if (atom_mutex_ == false )
221
230
{
222
231
atom_mutex_ = true ;
232
+ uuid id = cookie_.front ();
223
233
cookie_.pop_front ();
224
234
atom_mutex_ = false ;
235
+ LOG_INFO << " erase login cache of client: " << id;
225
236
}
226
237
else
227
238
continue ;
@@ -314,6 +325,7 @@ void center::listen_mir_beat()
314
325
int i = 3 ; // 占位避免编译器报warning
315
326
// dblog(MIR_DISCONECT);
316
327
mirs_data_.erase (kvp.first );
328
+ LOG_INFO << " mirror disconnect: " << const_cast <IP*>(&kvp.first )->to_string ();
317
329
}
318
330
}
319
331
}
@@ -324,16 +336,28 @@ void center::listen_mir_beat()
324
336
325
337
void center::clear_mirs_data ()
326
338
{
327
- // while(true)
339
+ auto get_next_zeropoint = [](){
340
+ time_t t = time (NULL );
341
+ struct tm * tm= localtime (&t);
342
+ tm->tm_mday += 1 ;
343
+ tm->tm_hour = 0 ;
344
+ tm->tm_min = 0 ;
345
+ tm->tm_sec = 0 ;
346
+ return mktime (tm);
347
+ };
348
+
349
+ while (true )
328
350
{
329
- // sleep(nowtime - nextzeropoint + setting->clear_mirsdata_time);
330
- // mirs_data_.clear();
331
- // all_cli_.clear();
351
+ sleep (get_next_zeropoint () - time (NULL ) + telemeter::setting->clear_mirs_data_time_ );
352
+ mirs_data_.clear ();
353
+ all_cli_.clear ();
354
+ LOG_INFO << " clear mirrors data successfully" ;
332
355
}
333
356
}
334
357
335
358
IP center::load_balance ()
336
359
{
360
+ LOG_INFO << " load balance occurs" ;
337
361
// 暂时不优化
338
362
for (auto & kvp : mirs_data_)
339
363
{
@@ -379,7 +403,7 @@ void center::log_info(std::exception& e, const char* crush_file)
379
403
log << " Mirrors & dispatched client:\n " ;
380
404
for (auto & kvp : mirs_data_)
381
405
{
382
- log << " ip: " << kvp.first
406
+ log << " ip: " << const_cast <IP*>(& kvp.first )-> to_string ()
383
407
<< " load state: " << tostring (kvp.second .get_load_level ()) << ' \n ' ;
384
408
log << " dispatched client: \n " ;
385
409
for (auto uid : kvp.second .get_dispatched_cli ())
0 commit comments