提交 f30822e3 编写于 作者: Y Yu Kun

Merge remote-tracking branch 'upstream/branch-0.5.0' into branch-0.5.0-yk


Former-commit-id: e1c7a2e0cb6925a2a7004af1c5a45bbf7057879e
......@@ -15,6 +15,7 @@ Please mark all change in change log and use the ticket from JIRA.
- MS-620 - Get table row counts display wrong error code
- MS-637 - out of memory when load too many tasks
- MS-640 - Cache object size calculate incorrect
- MS-641 - Segment fault(signal 11) in PickToLoad
## Improvement
- MS-552 - Add and change the easylogging library
......
......@@ -158,8 +158,9 @@ TaskTableItem::Dump() {
std::vector<uint64_t>
TaskTable::PickToLoad(uint64_t limit) {
std::lock_guard<std::mutex> lock(mutex_);
size_t count = 0;
for (int j = last_finish_ + 1; j < table_.size(); ++j) {
for (uint64_t j = last_finish_ + 1; j < table_.size(); ++j) {
if (not table_[j]) {
SERVER_LOG_WARNING << "table[" << j << "] is nullptr";
}
......@@ -186,6 +187,7 @@ TaskTable::PickToLoad(uint64_t limit) {
std::vector<uint64_t>
TaskTable::PickToExecute(uint64_t limit) {
std::lock_guard<std::mutex> lock(mutex_);
std::vector<uint64_t> indexes;
bool cross = false;
for (uint64_t i = last_finish_ + 1, count = 0; i < table_.size() && count < limit; ++i) {
......@@ -202,7 +204,7 @@ TaskTable::PickToExecute(uint64_t limit) {
void
TaskTable::Put(TaskPtr task) {
std::lock_guard<std::mutex> lock(id_mutex_);
std::lock_guard<std::mutex> lock(mutex_);
auto item = std::make_shared<TaskTableItem>();
item->id = id_++;
item->task = std::move(task);
......@@ -216,7 +218,7 @@ TaskTable::Put(TaskPtr task) {
void
TaskTable::Put(std::vector<TaskPtr>& tasks) {
std::lock_guard<std::mutex> lock(id_mutex_);
std::lock_guard<std::mutex> lock(mutex_);
for (auto& task : tasks) {
auto item = std::make_shared<TaskTableItem>();
item->id = id_++;
......@@ -232,6 +234,7 @@ TaskTable::Put(std::vector<TaskPtr>& tasks) {
TaskTableItemPtr
TaskTable::Get(uint64_t index) {
std::lock_guard<std::mutex> lock(mutex_);
return table_[index];
}
......
......@@ -150,6 +150,7 @@ class TaskTable {
public:
TaskTableItemPtr& operator[](uint64_t index) {
std::lock_guard<std::mutex> lock(mutex_);
return table_[index];
}
......@@ -244,7 +245,7 @@ class TaskTable {
private:
std::uint64_t id_ = 0;
mutable std::mutex id_mutex_;
mutable std::mutex mutex_;
std::deque<TaskTableItemPtr> table_;
std::function<void(void)> subscriber_ = nullptr;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册