Skip to content

Commit

Permalink
Fix dead lock.
Browse files Browse the repository at this point in the history
Signed-off-by: vegetableysm <[email protected]>
  • Loading branch information
vegetableysm committed Aug 16, 2024
1 parent 2ced3bd commit 5e167d5
Show file tree
Hide file tree
Showing 2 changed files with 6 additions and 4 deletions.
4 changes: 2 additions & 2 deletions src/server/async/socket_server.cc
Original file line number Diff line number Diff line change
Expand Up @@ -574,7 +574,7 @@ bool SocketConnection::doGetBuffers(const json& root) {
RESPONSE_ON_ERROR(bulk_store_->GetUnsafe(ids, unsafe, objects));
VINEYARD_CHECK_OK(bulk_store_->MarkAsCold(ids, objects));
for (size_t i = 0; i < objects.size(); ++i) {
if (objects[i]->pointer == nullptr) {
if (objects[i]->pointer == nullptr && objects[i]->data_size > 0) {
VINEYARD_CHECK_OK(
bulk_store_->ReloadColdObject(ids[i], objects[i], false));
VINEYARD_CHECK_OK(bulk_store_->MarkAsCold(ids[i], objects[i]));
Expand Down Expand Up @@ -802,7 +802,7 @@ bool SocketConnection::doGetRemoteBuffers(const json& root) {
RESPONSE_ON_ERROR(bulk_store_->GetUnsafe(ids, unsafe, objects));
VINEYARD_CHECK_OK(bulk_store_->MarkAsCold(ids, objects));
for (size_t i = 0; i < objects.size(); ++i) {
if (objects[i]->pointer == nullptr) {
if (objects[i]->pointer == nullptr && objects[i]->data_size > 0) {
VINEYARD_CHECK_OK(
bulk_store_->ReloadColdObject(ids[i], objects[i], false));
VINEYARD_CHECK_OK(bulk_store_->MarkAsCold(ids[i], objects[i]));
Expand Down
6 changes: 4 additions & 2 deletions src/server/memory/usage.h
Original file line number Diff line number Diff line change
Expand Up @@ -396,6 +396,7 @@ class ColdObjectTracker
lru_map_t map_;
lru_list_t list_;
ska::flat_hash_map<ID, std::shared_ptr<P>> spilled_obj_;
friend class ColdObjectTracker;
};

public:
Expand Down Expand Up @@ -556,7 +557,8 @@ class ColdObjectTracker
*/
uint8_t* AllocateMemoryWithSpill(const size_t size, int* fd,
int64_t* map_size, ptrdiff_t* offset) {
std::lock_guard<std::mutex> locked(allocate_memory_mu_);
// std::lock_guard<std::mutex> locked(allocate_memory_mu_);
std::lock_guard<decltype(cold_obj_lru_.mu_)> locked(cold_obj_lru_.mu_);
uint8_t* pointer = nullptr;
std::cout << "Thread " << std::this_thread::get_id()
<< " before AllocateMemoryWithSpill;" << "size:" << size
Expand All @@ -574,7 +576,7 @@ class ColdObjectTracker
// 2. memory usage is above upper bound
if (pointer == nullptr ||
BulkAllocator::Allocated() >= self().mem_spill_upper_bound_) {
//std::unique_lock<std::mutex> locked(spill_mu_);
// std::unique_lock<std::mutex> locked(spill_mu_);

int64_t min_spill_size = 0;
if (pointer == nullptr) {
Expand Down

0 comments on commit 5e167d5

Please sign in to comment.