mirror of
https://github.com/MariaDB/server.git
synced 2025-01-19 21:42:35 +01:00
ndb -
fix test_event -n EventOperationApplier storage/ndb/test/ndbapi/test_event.cpp: fix potential race storage/ndb/test/src/HugoCalculator.cpp: genrate longer varsize keys
This commit is contained in:
parent
ee05abd661
commit
44e5052f76
2 changed files with 34 additions and 5 deletions
|
@ -500,6 +500,12 @@ int runEventMixedLoad(NDBT_Context* ctx, NDBT_Step* step)
|
|||
int records = ctx->getNumRecords();
|
||||
HugoTransactions hugoTrans(*ctx->getTab());
|
||||
|
||||
if(ctx->getPropertyWait("LastGCI", ~(Uint32)0))
|
||||
{
|
||||
g_err << "FAIL " << __LINE__ << endl;
|
||||
return NDBT_FAILED;
|
||||
}
|
||||
|
||||
while(loops -- && !ctx->isTestStopped())
|
||||
{
|
||||
hugoTrans.clearTable(GETNDB(step), 0);
|
||||
|
@ -606,9 +612,11 @@ int runEventApplier(NDBT_Context* ctx, NDBT_Step* step)
|
|||
goto end;
|
||||
}
|
||||
|
||||
ctx->setProperty("LastGCI", ~(Uint32)0);
|
||||
ctx->broadcast();
|
||||
|
||||
while(!ctx->isTestStopped())
|
||||
{
|
||||
int r;
|
||||
int count= 0;
|
||||
Uint32 stop_gci= ~0;
|
||||
Uint64 curr_gci = 0;
|
||||
|
@ -778,7 +786,7 @@ int runEventApplier(NDBT_Context* ctx, NDBT_Step* step)
|
|||
|
||||
if (trans->getNdbError().status == NdbError::PermanentError)
|
||||
{
|
||||
g_err << "Ignoring execute " << r << " failed "
|
||||
g_err << "Ignoring execute failed "
|
||||
<< trans->getNdbError().code << " "
|
||||
<< trans->getNdbError().message << endl;
|
||||
|
||||
|
@ -788,7 +796,7 @@ int runEventApplier(NDBT_Context* ctx, NDBT_Step* step)
|
|||
}
|
||||
else if (noRetries++ == 10)
|
||||
{
|
||||
g_err << "execute " << r << " failed "
|
||||
g_err << "execute failed "
|
||||
<< trans->getNdbError().code << " "
|
||||
<< trans->getNdbError().message << endl;
|
||||
trans->close();
|
||||
|
|
|
@ -89,6 +89,27 @@ HugoCalculator::float calcValue(int record, int attrib, int updates) const;
|
|||
HugoCalculator::double calcValue(int record, int attrib, int updates) const;
|
||||
#endif
|
||||
|
||||
static
|
||||
Uint32
|
||||
calc_len(Uint32 rvalue, int maxlen)
|
||||
{
|
||||
Uint32 minlen = 25;
|
||||
|
||||
if ((rvalue >> 16) < 4096)
|
||||
minlen = 15;
|
||||
else if ((rvalue >> 16) < 8192)
|
||||
minlen = 25;
|
||||
else if ((rvalue >> 16) < 16384)
|
||||
minlen = 35;
|
||||
else
|
||||
minlen = 64;
|
||||
|
||||
if (maxlen <= minlen)
|
||||
return maxlen;
|
||||
|
||||
return minlen + (rvalue % (maxlen - minlen));
|
||||
}
|
||||
|
||||
const char*
|
||||
HugoCalculator::calcValue(int record,
|
||||
int attrib,
|
||||
|
@ -178,7 +199,7 @@ HugoCalculator::calcValue(int record,
|
|||
break;
|
||||
case NdbDictionary::Column::Varbinary:
|
||||
case NdbDictionary::Column::Varchar:
|
||||
len = 1 + (myRand(&seed) % (len - 1));
|
||||
len = calc_len(myRand(&seed), len - 1);
|
||||
assert(len < 256);
|
||||
* outlen = len + 1;
|
||||
* buf = len;
|
||||
|
@ -186,7 +207,7 @@ HugoCalculator::calcValue(int record,
|
|||
goto write_char;
|
||||
case NdbDictionary::Column::Longvarchar:
|
||||
case NdbDictionary::Column::Longvarbinary:
|
||||
len = 1 + (myRand(&seed) % (len - 2));
|
||||
len = calc_len(myRand(&seed), len - 2);
|
||||
assert(len < 65536);
|
||||
* outlen = len + 2;
|
||||
int2store(buf, len);
|
||||
|
|
Loading…
Reference in a new issue