Commit 859bc1d0 authored by mskold/marty@mysql.com/quadfish.(none)'s avatar mskold/marty@mysql.com/quadfish.(none)
Browse files

Added random sleeps before retrying temporarly failed DICT signals, to avoid race conditions

parent ab547213
Loading
Loading
Loading
Loading
+18 −1
Original line number Diff line number Diff line
@@ -35,6 +35,7 @@
#include "NdbBlobImpl.hpp"
#include <AttributeHeader.hpp>
#include <my_sys.h>
#include <NdbSleep.h>

#define DEBUG_PRINT 0
#define INCOMPATIBLE_VERSION -2
@@ -886,7 +887,23 @@ NdbDictInterface::dictSignal(NdbApiSignal* signal,
{
  DBUG_ENTER("NdbDictInterface::dictSignal");
  DBUG_PRINT("enter", ("useMasterNodeId: %d", useMasterNodeId));
  for(Uint32 i = 0; i<RETRIES; i++){

  int sleep = 50;
  int mod = 5;

  for(Uint32 i = 0; i<RETRIES; i++)
  {
    if (i > 0)
      NdbSleep_MilliSleep(sleep + 10 * (rand() % mod));
    if (i == RETRIES / 2)
    {
      mod = 10;
    }
    if (i == 3*RETRIES/4)
    {
      sleep = 100;
    }

    //if (useMasterNodeId == 0)
    m_buffer.clear();