ndb - bug#24949

  make sure not too poll to long, in case of hb-failure of last db-node
parent 05dd5fc2
...@@ -1276,9 +1276,9 @@ Ndb::waitCompletedTransactions(int aMilliSecondsToWait, ...@@ -1276,9 +1276,9 @@ Ndb::waitCompletedTransactions(int aMilliSecondsToWait,
NDB_TICKS currTime = NdbTick_CurrentMillisecond(); NDB_TICKS currTime = NdbTick_CurrentMillisecond();
NDB_TICKS maxTime = currTime + (NDB_TICKS)waitTime; NDB_TICKS maxTime = currTime + (NDB_TICKS)waitTime;
theMinNoOfEventsToWakeUp = noOfEventsToWaitFor; theMinNoOfEventsToWakeUp = noOfEventsToWaitFor;
const int maxsleep = aMilliSecondsToWait > 10 ? 10 : aMilliSecondsToWait;
do { do {
if (waitTime < 1000) waitTime = 1000; poll_guard->wait_for_input(maxsleep);
poll_guard->wait_for_input(waitTime);
if (theNoOfCompletedTransactions >= (Uint32)noOfEventsToWaitFor) { if (theNoOfCompletedTransactions >= (Uint32)noOfEventsToWaitFor) {
break; break;
}//if }//if
......
...@@ -1385,15 +1385,13 @@ int PollGuard::wait_for_input_in_loop(int wait_time, bool forceSend) ...@@ -1385,15 +1385,13 @@ int PollGuard::wait_for_input_in_loop(int wait_time, bool forceSend)
m_tp->forceSend(m_block_no); m_tp->forceSend(m_block_no);
else else
m_tp->checkForceSend(m_block_no); m_tp->checkForceSend(m_block_no);
if (wait_time == -1) //Means wait forever
response_time= WAITFOR_RESPONSE_TIMEOUT;
else
response_time= wait_time;
NDB_TICKS curr_time = NdbTick_CurrentMillisecond(); NDB_TICKS curr_time = NdbTick_CurrentMillisecond();
NDB_TICKS max_time = curr_time + (NDB_TICKS)wait_time; NDB_TICKS max_time = curr_time + (NDB_TICKS)wait_time;
const int maxsleep = (wait_time == -1 || wait_time > 10) ? 10 : wait_time;
do do
{ {
wait_for_input(response_time); wait_for_input(maxsleep);
Uint32 state= m_waiter->get_state(); Uint32 state= m_waiter->get_state();
if (state == NO_WAIT) if (state == NO_WAIT)
{ {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment