List:Commits« Previous MessageNext Message »
From:Ole John Aske Date:September 25 2012 11:37am
Subject:bzr push into mysql-5.1-telco-7.0 branch (ole.john.aske:4990 to 4991)
Bug#14550056
View as plain text  
 4991 Ole John Aske	2012-09-25
      Fix for bug#14550056 BUSY WAIT IN DBTC::REMOVEMARKERFORFAILEDAPI IF CLIENT DISCONNECT WITH OPEN TXNS
      
      In case Dbtc::removeMarkerForFailedAPI() waits for open transactions to be terminated,
      it should do that with a 'sendSignalWithDelay(..., GSN_CONTINUEB, 1ms, ...)', instead of
      a plain 'sendSignal()' which will cause a busy loop.

    modified:
      storage/ndb/src/kernel/blocks/dbtc/DbtcMain.cpp
 4990 Maitrayi Sabaratnam	2012-09-25
      Bug#14329309 - ADD NUMBER OF RETRIES AND DELAY BETWEEN RETRIES AS START OPTIONS TO NDBD

    modified:
      storage/ndb/src/kernel/angel.cpp
      storage/ndb/src/kernel/angel.hpp
      storage/ndb/src/kernel/main.cpp
      storage/ndb/src/kernel/ndbd.cpp
      storage/ndb/src/kernel/ndbd.hpp
      storage/ndb/src/kernel/vm/Configuration.cpp
      storage/ndb/src/kernel/vm/Configuration.hpp
      storage/ndb/src/mgmapi/mgmapi.cpp
=== modified file 'storage/ndb/src/kernel/blocks/dbtc/DbtcMain.cpp'
--- a/storage/ndb/src/kernel/blocks/dbtc/DbtcMain.cpp	2012-09-13 08:05:29 +0000
+++ b/storage/ndb/src/kernel/blocks/dbtc/DbtcMain.cpp	2012-09-25 11:27:32 +0000
@@ -1173,9 +1173,13 @@ Dbtc::removeMarkerForFailedAPI(Signal* s
         /**
          * The record is still active
          *
-         * Don't remove it, but continueb instead
+         * Don't remove it, but continueb retry with a short delay
          */
-	break;
+        signal->theData[0] = TcContinueB::ZHANDLE_FAILED_API_NODE_REMOVE_MARKERS;
+        signal->theData[1] = nodeId;
+        signal->theData[2] = iter.bucket;
+        sendSignalWithDelay(cownref, GSN_CONTINUEB, signal, 1, 3);
+        return;
       }
       sendRemoveMarkers(signal, iter.curr.p);
       m_commitAckMarkerHash.release(iter.curr);
@@ -1183,8 +1187,9 @@ Dbtc::removeMarkerForFailedAPI(Signal* s
       break;
     } 
     m_commitAckMarkerHash.next(iter);
-  }
+  } // for (... i<RT_BREAK ...)
   
+  // Takes a RT-break to avoid starving other activity
   signal->theData[0] = TcContinueB::ZHANDLE_FAILED_API_NODE_REMOVE_MARKERS;
   signal->theData[1] = nodeId;
   signal->theData[2] = iter.bucket;

No bundle (reason: useless for push emails).
Thread
bzr push into mysql-5.1-telco-7.0 branch (ole.john.aske:4990 to 4991)Bug#14550056Ole John Aske26 Sep