correctly grabbing the ownership of index files.

This commit is contained in:
Amos Bird 2018-08-20 20:18:01 +08:00
parent 431eef2167
commit dacce74706

View File

@ -194,6 +194,14 @@ bool Indexer_Parse(DiagnosticsPublisher *diag_pub, WorkingFiles *working_files,
}
}
// grab the ownership
if (reparse)
{
std::lock_guard<std::mutex> lock(vfs->mutex);
vfs->state[path_to_index].owner = g_thread_id;
vfs->state[path_to_index].stage = 0;
}
if (reparse < 2) {
LOG_S(INFO) << "load cache for " << path_to_index;
auto dependencies = prev->dependencies;
@ -207,11 +215,6 @@ bool Indexer_Parse(DiagnosticsPublisher *diag_pub, WorkingFiles *working_files,
IndexUpdate update = IndexUpdate::CreateDelta(nullptr, prev.get());
on_indexed->PushBack(std::move(update), request.is_interactive);
}
std::lock_guard<std::mutex> lock(vfs->mutex);
VFS::State &state = vfs->state[path_to_index];
if (state.owner == g_thread_id)
state.stage = 0;
return true;
}