1
This commit is contained in:
parent
139cb17a92
commit
3a4714d07c
@ -2,6 +2,7 @@
|
|||||||
|
|
||||||
#include <a8/openssl.h>
|
#include <a8/openssl.h>
|
||||||
#include <a8/udplog.h>
|
#include <a8/udplog.h>
|
||||||
|
#include <a8/timer.h>
|
||||||
|
|
||||||
#include "dbengine.h"
|
#include "dbengine.h"
|
||||||
#include "jsondatamgr.h"
|
#include "jsondatamgr.h"
|
||||||
@ -31,6 +32,15 @@ void DBEngine::Init()
|
|||||||
f8::DBPool::Instance()->Init();
|
f8::DBPool::Instance()->Init();
|
||||||
f8::DBPool::Instance()->SetThreadNum(16);
|
f8::DBPool::Instance()->SetThreadNum(16);
|
||||||
f8::DBPool::Instance()->on_dberror = OnDBError;
|
f8::DBPool::Instance()->on_dberror = OnDBError;
|
||||||
|
a8::Timer::Instance()->AddRepeatTimer
|
||||||
|
(
|
||||||
|
1000 * 3 + (rand() % 3000),
|
||||||
|
a8::XParams(),
|
||||||
|
[] (const a8::XParams& param)
|
||||||
|
{
|
||||||
|
DBEngine::Instance()->RefreshIdx();
|
||||||
|
}
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
void DBEngine::UnInit()
|
void DBEngine::UnInit()
|
||||||
@ -140,3 +150,44 @@ int DBEngine::GetInstanceId(long long crc32_code)
|
|||||||
}
|
}
|
||||||
return (crc32_code % mysql_cluster_conf->Size()) + 1;
|
return (crc32_code % mysql_cluster_conf->Size()) + 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void DBEngine::RefreshIdx()
|
||||||
|
{
|
||||||
|
std::shared_ptr<a8::XObject> mysql_cluster_conf =
|
||||||
|
JsonDataMgr::Instance()->GetMysqlClusterConf();
|
||||||
|
if (mysql_cluster_conf->Size() <= 0) {
|
||||||
|
abort();
|
||||||
|
}
|
||||||
|
|
||||||
|
auto on_ok =
|
||||||
|
[] (a8::XParams& param, const f8::DataSet* data_set)
|
||||||
|
{
|
||||||
|
long long instance_id = param.sender.GetInt64() + 1;
|
||||||
|
const std::vector<std::string>& row = (*data_set)[0];
|
||||||
|
long long friend_apply_idx = a8::XValue(row[0]);
|
||||||
|
long long event_idx = a8::XValue(row[1]);
|
||||||
|
DBEngine::Instance()->UpdateFriendApplyIdx(instance_id, friend_apply_idx);
|
||||||
|
DBEngine::Instance()->UpdateEventIdx(instance_id, event_idx);
|
||||||
|
};
|
||||||
|
auto on_error =
|
||||||
|
[] (a8::XParams& param, int error_code, const std::string& error_msg)
|
||||||
|
{
|
||||||
|
};
|
||||||
|
|
||||||
|
for (int i = 0; i < mysql_cluster_conf->Size(); ++i) {
|
||||||
|
a8::XObject conn_info = GetConnInfo(i);
|
||||||
|
DBEngine::Instance()->ExecAsyncQuery
|
||||||
|
(
|
||||||
|
conn_info,
|
||||||
|
"SELECT MAX(idx) FROM friend_apply UNION "
|
||||||
|
"SELECT MAX(idx) FROM event;",
|
||||||
|
{
|
||||||
|
},
|
||||||
|
a8::XParams()
|
||||||
|
.SetSender(i),
|
||||||
|
on_ok,
|
||||||
|
on_error,
|
||||||
|
i
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@ -43,6 +43,7 @@ private:
|
|||||||
|
|
||||||
private:
|
private:
|
||||||
int GetInstanceId(long long crc32_code);
|
int GetInstanceId(long long crc32_code);
|
||||||
|
void RefreshIdx();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
std::map<long long, long long> friend_apply_idx_hash_;
|
std::map<long long, long long> friend_apply_idx_hash_;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user