What steps will reproduce the problem?
1. Lets suppose all maps have completed and RDMA client received fetch requests
for all MOFs from JAVA at a time. Then we will add fetch requests to fetch list
and notify other threads on merge_man->cond.
{code}
g_task->merge_man->fetch_list.push_back(req);
pthread_cond_broadcast(&g_task->merge_man->cond);
pthread_mutex_unlock(&g_task->merge_man->lock);
{code}
2. By the time merge manager checked fetch list and fetch mops also.
{code}
while (manager->fetch_list.size() > 0) {
--
and
--
while (! manager->fetched_mops.empty() ) {
{code}
3. after broadcasting for all fetch requests merge manager may go to wait
{code}
log(lsTRACE, "before pthread_cond_wait");
pthread_cond_wait(&manager->cond, &manager->lock);
pthread_mutex_unlock(&manager->lock);
{code}
Later no one are notifying on &manager->cond so MergeManager thread may wait
infinitely.
What is the expected output? What do you see instead?
If no one are notifying within some interval merge manager should
wakeup(timeout) and check for any new fetch requests or fetched mops to be
processed.
I will provide patch If possible.
What version of the product are you using? On what operating system?
UDA 3.0
Please provide any additional information below.
Original issue reported on code.google.com by
chrajesh...@gmail.comon 6 Mar 2013 at 6:57