Commit 35bfea94 authored by jonas@eel.(none)'s avatar jonas@eel.(none)

ndb -

Add abort option to lots of Hugo code, 
as it assumes it and default value has changed
parent 8619dfc2
...@@ -94,7 +94,7 @@ HugoTransactions::scanReadRecords(Ndb* pNdb, ...@@ -94,7 +94,7 @@ HugoTransactions::scanReadRecords(Ndb* pNdb,
} }
} }
check = pTrans->execute(NoCommit); check = pTrans->execute(NoCommit, AbortOnError);
if( check == -1 ) { if( check == -1 ) {
const NdbError err = pTrans->getNdbError(); const NdbError err = pTrans->getNdbError();
if (err.status == NdbError::TemporaryError){ if (err.status == NdbError::TemporaryError){
...@@ -245,183 +245,7 @@ HugoTransactions::scanReadRecords(Ndb* pNdb, ...@@ -245,183 +245,7 @@ HugoTransactions::scanReadRecords(Ndb* pNdb,
} }
} }
check = pTrans->execute(NoCommit); check = pTrans->execute(NoCommit, AbortOnError);
if( check == -1 ) {
const NdbError err = pTrans->getNdbError();
if (err.status == NdbError::TemporaryError){
ERR(err);
closeTransaction(pNdb);
NdbSleep_MilliSleep(50);
retryAttempt++;
continue;
}
ERR(err);
closeTransaction(pNdb);
return NDBT_FAILED;
}
// Abort after 1-100 or 1-records rows
int ranVal = rand();
int abortCount = ranVal % (records == 0 ? 100 : records);
bool abortTrans = false;
if (abort > 0){
// Abort if abortCount is less then abortPercent
if (abortCount < abortPercent)
abortTrans = true;
}
int eof;
int rows = 0;
while((eof = pOp->nextResult(true)) == 0){
rows++;
if (calc.verifyRowValues(&row) != 0){
closeTransaction(pNdb);
return NDBT_FAILED;
}
if (abortCount == rows && abortTrans == true){
ndbout << "Scan is aborted" << endl;
g_info << "Scan is aborted" << endl;
pOp->close();
if( check == -1 ) {
ERR(pTrans->getNdbError());
closeTransaction(pNdb);
return NDBT_FAILED;
}
closeTransaction(pNdb);
return NDBT_OK;
}
}
if (eof == -1) {
const NdbError err = pTrans->getNdbError();
if (err.status == NdbError::TemporaryError){
ERR_INFO(err);
closeTransaction(pNdb);
NdbSleep_MilliSleep(50);
switch (err.code){
case 488:
case 245:
case 490:
// Too many active scans, no limit on number of retry attempts
break;
default:
retryAttempt++;
}
continue;
}
ERR(err);
closeTransaction(pNdb);
return NDBT_FAILED;
}
closeTransaction(pNdb);
g_info << rows << " rows have been read" << endl;
if (records != 0 && rows != records){
g_err << "Check expected number of records failed" << endl
<< " expected=" << records <<", " << endl
<< " read=" << rows << endl;
return NDBT_FAILED;
}
return NDBT_OK;
}
return NDBT_FAILED;
}
#define RESTART_SCAN 99
int
HugoTransactions::scanUpdateRecords(Ndb* pNdb,
int records,
int abortPercent,
int parallelism){
if(m_defaultScanUpdateMethod == 1){
return scanUpdateRecords1(pNdb, records, abortPercent, parallelism);
} else if(m_defaultScanUpdateMethod == 2){
return scanUpdateRecords2(pNdb, records, abortPercent, parallelism);
} else {
return scanUpdateRecords3(pNdb, records, abortPercent, parallelism);
}
}
// Scan all records exclusive and update
// them one by one
int
HugoTransactions::scanUpdateRecords1(Ndb* pNdb,
int records,
int abortPercent,
int parallelism){
return scanUpdateRecords3(pNdb, records, abortPercent, 1);
}
// Scan all records exclusive and update
// them batched by asking nextScanResult to
// give us all cached records before fetching new
// records from db
int
HugoTransactions::scanUpdateRecords2(Ndb* pNdb,
int records,
int abortPercent,
int parallelism){
return scanUpdateRecords3(pNdb, records, abortPercent, parallelism);
}
int
HugoTransactions::scanUpdateRecords3(Ndb* pNdb,
int records,
int abortPercent,
int parallelism){
int retryAttempt = 0;
int check, a;
NdbScanOperation *pOp;
while (true){
restart:
if (retryAttempt++ >= m_retryMax){
g_info << "ERROR: has retried this operation " << retryAttempt
<< " times, failing!" << endl;
return NDBT_FAILED;
}
pTrans = pNdb->startTransaction();
if (pTrans == NULL) {
const NdbError err = pNdb->getNdbError();
ERR(err);
if (err.status == NdbError::TemporaryError){
NdbSleep_MilliSleep(50);
continue;
}
return NDBT_FAILED;
}
pOp = getScanOperation(pTrans);
if (pOp == NULL) {
ERR(pTrans->getNdbError());
closeTransaction(pNdb);
return NDBT_FAILED;
}
if( pOp->readTuplesExclusive(parallelism) ) {
ERR(pTrans->getNdbError());
closeTransaction(pNdb);
return NDBT_FAILED;
}
// Read all attributes from this table
for(a=0; a<tab.getNoOfColumns(); a++){
if((row.attributeStore(a) = pOp->getValue(tab.getColumn(a)->getName())) == NULL){
ERR(pTrans->getNdbError());
closeTransaction(pNdb);
return NDBT_FAILED;
}
}
check = pTrans->execute(NoCommit);
if( check == -1 ) { if( check == -1 ) {
const NdbError err = pTrans->getNdbError(); const NdbError err = pTrans->getNdbError();
ERR(err); ERR(err);
...@@ -474,7 +298,7 @@ restart: ...@@ -474,7 +298,7 @@ restart:
} while((check = pOp->nextResult(false)) == 0); } while((check = pOp->nextResult(false)) == 0);
if(check != -1){ if(check != -1){
check = pTrans->execute(Commit); check = pTrans->execute(Commit, AbortOnError);
if(check != -1) if(check != -1)
m_latest_gci = pTrans->getGCI(); m_latest_gci = pTrans->getGCI();
pTrans->restart(); pTrans->restart();
...@@ -587,14 +411,14 @@ HugoTransactions::loadTable(Ndb* pNdb, ...@@ -587,14 +411,14 @@ HugoTransactions::loadTable(Ndb* pNdb,
closeTrans = false; closeTrans = false;
if (!abort) if (!abort)
{ {
check = pTrans->execute( Commit ); check = pTrans->execute(Commit, AbortOnError);
if(check != -1) if(check != -1)
m_latest_gci = pTrans->getGCI(); m_latest_gci = pTrans->getGCI();
pTrans->restart(); pTrans->restart();
} }
else else
{ {
check = pTrans->execute( NoCommit ); check = pTrans->execute(NoCommit, AbortOnError);
if (check != -1) if (check != -1)
{ {
check = pTrans->execute( Rollback ); check = pTrans->execute( Rollback );
...@@ -603,7 +427,7 @@ HugoTransactions::loadTable(Ndb* pNdb, ...@@ -603,7 +427,7 @@ HugoTransactions::loadTable(Ndb* pNdb,
} }
} else { } else {
closeTrans = false; closeTrans = false;
check = pTrans->execute( NoCommit ); check = pTrans->execute(NoCommit, AbortOnError);
} }
if(check == -1 ) { if(check == -1 ) {
const NdbError err = pTrans->getNdbError(); const NdbError err = pTrans->getNdbError();
...@@ -717,7 +541,7 @@ HugoTransactions::fillTable(Ndb* pNdb, ...@@ -717,7 +541,7 @@ HugoTransactions::fillTable(Ndb* pNdb,
} }
// Execute the transaction and insert the record // Execute the transaction and insert the record
check = pTrans->execute( Commit, CommitAsMuchAsPossible ); check = pTrans->execute(Commit, CommitAsMuchAsPossible );
if(check == -1 ) { if(check == -1 ) {
const NdbError err = pTrans->getNdbError(); const NdbError err = pTrans->getNdbError();
closeTransaction(pNdb); closeTransaction(pNdb);
...@@ -829,7 +653,7 @@ HugoTransactions::pkReadRecords(Ndb* pNdb, ...@@ -829,7 +653,7 @@ HugoTransactions::pkReadRecords(Ndb* pNdb,
return NDBT_FAILED; return NDBT_FAILED;
} }
check = pTrans->execute(Commit); check = pTrans->execute(Commit, AbortOnError);
if( check == -1 ) { if( check == -1 ) {
const NdbError err = pTrans->getNdbError(); const NdbError err = pTrans->getNdbError();
...@@ -950,7 +774,7 @@ HugoTransactions::pkUpdateRecords(Ndb* pNdb, ...@@ -950,7 +774,7 @@ HugoTransactions::pkUpdateRecords(Ndb* pNdb,
return NDBT_FAILED; return NDBT_FAILED;
} }
check = pTrans->execute(NoCommit); check = pTrans->execute(NoCommit, AbortOnError);
if( check == -1 ) { if( check == -1 ) {
const NdbError err = pTrans->getNdbError(); const NdbError err = pTrans->getNdbError();
...@@ -991,7 +815,7 @@ HugoTransactions::pkUpdateRecords(Ndb* pNdb, ...@@ -991,7 +815,7 @@ HugoTransactions::pkUpdateRecords(Ndb* pNdb,
if(check != 2) if(check != 2)
break; break;
if((check = pTrans->execute(NoCommit)) != 0) if((check = pTrans->execute(NoCommit, , AbortOnError)) != 0)
break; break;
} }
if(check != 1 || rows_found != batch) if(check != 1 || rows_found != batch)
...@@ -1019,7 +843,7 @@ HugoTransactions::pkUpdateRecords(Ndb* pNdb, ...@@ -1019,7 +843,7 @@ HugoTransactions::pkUpdateRecords(Ndb* pNdb,
return NDBT_FAILED; return NDBT_FAILED;
} }
} }
check = pTrans->execute(Commit); check = pTrans->execute(Commit, AbortOnError);
} }
if( check == -1 ) { if( check == -1 ) {
const NdbError err = pTrans->getNdbError(); const NdbError err = pTrans->getNdbError();
...@@ -1119,7 +943,7 @@ HugoTransactions::pkInterpretedUpdateRecords(Ndb* pNdb, ...@@ -1119,7 +943,7 @@ HugoTransactions::pkInterpretedUpdateRecords(Ndb* pNdb,
} }
} }
check = pTrans->execute(NoCommit); check = pTrans->execute(NoCommit, AbortOnError);
if( check == -1 ) { if( check == -1 ) {
const NdbError err = pTrans->getNdbError(); const NdbError err = pTrans->getNdbError();
...@@ -1194,7 +1018,7 @@ HugoTransactions::pkInterpretedUpdateRecords(Ndb* pNdb, ...@@ -1194,7 +1018,7 @@ HugoTransactions::pkInterpretedUpdateRecords(Ndb* pNdb,
check = pTrans->execute(Commit); check = pTrans->execute(Commit, AbortOnError);
if( check == -1 ) { if( check == -1 ) {
const NdbError err = pTrans->getNdbError(); const NdbError err = pTrans->getNdbError();
...@@ -1274,7 +1098,7 @@ HugoTransactions::pkDelRecords(Ndb* pNdb, ...@@ -1274,7 +1098,7 @@ HugoTransactions::pkDelRecords(Ndb* pNdb,
return NDBT_FAILED; return NDBT_FAILED;
} }
check = pTrans->execute(Commit); check = pTrans->execute(Commit, AbortOnError);
if( check == -1) { if( check == -1) {
const NdbError err = pTrans->getNdbError(); const NdbError err = pTrans->getNdbError();
...@@ -1387,7 +1211,7 @@ HugoTransactions::lockRecords(Ndb* pNdb, ...@@ -1387,7 +1211,7 @@ HugoTransactions::lockRecords(Ndb* pNdb,
int lockCount = lockTime / sleepInterval; int lockCount = lockTime / sleepInterval;
int commitCount = 0; int commitCount = 0;
do { do {
check = pTrans->execute(NoCommit); check = pTrans->execute(NoCommit, AbortOnError);
if( check == -1) { if( check == -1) {
const NdbError err = pTrans->getNdbError(); const NdbError err = pTrans->getNdbError();
...@@ -1413,7 +1237,7 @@ HugoTransactions::lockRecords(Ndb* pNdb, ...@@ -1413,7 +1237,7 @@ HugoTransactions::lockRecords(Ndb* pNdb,
} while (commitCount < lockCount); } while (commitCount < lockCount);
// Really commit the trans, puuh! // Really commit the trans, puuh!
check = pTrans->execute(Commit); check = pTrans->execute(Commit, AbortOnError);
if( check == -1) { if( check == -1) {
const NdbError err = pTrans->getNdbError(); const NdbError err = pTrans->getNdbError();
...@@ -1543,7 +1367,7 @@ HugoTransactions::indexReadRecords(Ndb* pNdb, ...@@ -1543,7 +1367,7 @@ HugoTransactions::indexReadRecords(Ndb* pNdb,
} }
} }
check = pTrans->execute(Commit); check = pTrans->execute(Commit, AbortOnError);
check = (check == -1 ? -1 : !ordered ? check : sOp->nextResult(true)); check = (check == -1 ? -1 : !ordered ? check : sOp->nextResult(true));
if( check == -1 ) { if( check == -1 ) {
const NdbError err = pTrans->getNdbError(); const NdbError err = pTrans->getNdbError();
...@@ -1684,7 +1508,7 @@ HugoTransactions::indexUpdateRecords(Ndb* pNdb, ...@@ -1684,7 +1508,7 @@ HugoTransactions::indexUpdateRecords(Ndb* pNdb,
} }
} }
check = pTrans->execute(NoCommit); check = pTrans->execute(NoCommit, AbortOnError);
check = (check == -1 ? -1 : !ordered ? check : sOp->nextResult(true)); check = (check == -1 ? -1 : !ordered ? check : sOp->nextResult(true));
if( check == -1 ) { if( check == -1 ) {
const NdbError err = pTrans->getNdbError(); const NdbError err = pTrans->getNdbError();
...@@ -1756,7 +1580,7 @@ HugoTransactions::indexUpdateRecords(Ndb* pNdb, ...@@ -1756,7 +1580,7 @@ HugoTransactions::indexUpdateRecords(Ndb* pNdb,
} }
} }
check = pTrans->execute(Commit); check = pTrans->execute(Commit, AbortOnError);
if( check == -1 ) { if( check == -1 ) {
const NdbError err = pTrans->getNdbError(); const NdbError err = pTrans->getNdbError();
ERR(err); ERR(err);
......
...@@ -121,7 +121,7 @@ UtilTransactions::clearTable3(Ndb* pNdb, ...@@ -121,7 +121,7 @@ UtilTransactions::clearTable3(Ndb* pNdb,
goto failed; goto failed;
} }
if(pTrans->execute(NoCommit) != 0){ if(pTrans->execute(NoCommit, AbortOnError) != 0){
err = pTrans->getNdbError(); err = pTrans->getNdbError();
if(err.status == NdbError::TemporaryError){ if(err.status == NdbError::TemporaryError){
ERR(err); ERR(err);
...@@ -141,7 +141,7 @@ UtilTransactions::clearTable3(Ndb* pNdb, ...@@ -141,7 +141,7 @@ UtilTransactions::clearTable3(Ndb* pNdb,
} while((check = pOp->nextResult(false)) == 0); } while((check = pOp->nextResult(false)) == 0);
if(check != -1){ if(check != -1){
check = pTrans->execute(Commit); check = pTrans->execute(Commit, AbortOnError);
pTrans->restart(); pTrans->restart();
} }
...@@ -245,7 +245,7 @@ UtilTransactions::copyTableData(Ndb* pNdb, ...@@ -245,7 +245,7 @@ UtilTransactions::copyTableData(Ndb* pNdb,
} }
} }
check = pTrans->execute(NoCommit); check = pTrans->execute(NoCommit, AbortOnError);
if( check == -1 ) { if( check == -1 ) {
ERR(pTrans->getNdbError()); ERR(pTrans->getNdbError());
closeTransaction(pNdb); closeTransaction(pNdb);
...@@ -262,7 +262,7 @@ UtilTransactions::copyTableData(Ndb* pNdb, ...@@ -262,7 +262,7 @@ UtilTransactions::copyTableData(Ndb* pNdb,
} }
} while((eof = pOp->nextResult(false)) == 0); } while((eof = pOp->nextResult(false)) == 0);
check = pTrans->execute(Commit); check = pTrans->execute(Commit, AbortOnError);
pTrans->restart(); pTrans->restart();
if( check == -1 ) { if( check == -1 ) {
const NdbError err = pTrans->getNdbError(); const NdbError err = pTrans->getNdbError();
...@@ -414,7 +414,7 @@ UtilTransactions::scanReadRecords(Ndb* pNdb, ...@@ -414,7 +414,7 @@ UtilTransactions::scanReadRecords(Ndb* pNdb,
} }
// ************************************************* // *************************************************
check = pTrans->execute(NoCommit); check = pTrans->execute(NoCommit, AbortOnError);
if( check == -1 ) { if( check == -1 ) {
const NdbError err = pTrans->getNdbError(); const NdbError err = pTrans->getNdbError();
...@@ -520,7 +520,7 @@ UtilTransactions::selectCount(Ndb* pNdb, ...@@ -520,7 +520,7 @@ UtilTransactions::selectCount(Ndb* pNdb,
} }
check = pTrans->execute(NoCommit); check = pTrans->execute(NoCommit, AbortOnError);
if( check == -1 ) { if( check == -1 ) {
ERR(pTrans->getNdbError()); ERR(pTrans->getNdbError());
closeTransaction(pNdb); closeTransaction(pNdb);
...@@ -693,7 +693,7 @@ restart: ...@@ -693,7 +693,7 @@ restart:
} }
} }
check = pTrans->execute(NoCommit); check = pTrans->execute(NoCommit, AbortOnError);
if( check == -1 ) { if( check == -1 ) {
const NdbError err = pTrans->getNdbError(); const NdbError err = pTrans->getNdbError();
...@@ -956,7 +956,7 @@ UtilTransactions::readRowFromTableAndIndex(Ndb* pNdb, ...@@ -956,7 +956,7 @@ UtilTransactions::readRowFromTableAndIndex(Ndb* pNdb,
printf("\n"); printf("\n");
#endif #endif
scanTrans->refresh(); scanTrans->refresh();
check = pTrans1->execute(Commit); check = pTrans1->execute(Commit, AbortOnError);
if( check == -1 ) { if( check == -1 ) {
const NdbError err = pTrans1->getNdbError(); const NdbError err = pTrans1->getNdbError();
...@@ -1078,7 +1078,7 @@ UtilTransactions::verifyOrderedIndex(Ndb* pNdb, ...@@ -1078,7 +1078,7 @@ UtilTransactions::verifyOrderedIndex(Ndb* pNdb,
abort(); abort();
} }
check = pTrans->execute(NoCommit); check = pTrans->execute(NoCommit, AbortOnError);
if( check == -1 ) { if( check == -1 ) {
const NdbError err = pTrans->getNdbError(); const NdbError err = pTrans->getNdbError();
...@@ -1137,7 +1137,7 @@ UtilTransactions::verifyOrderedIndex(Ndb* pNdb, ...@@ -1137,7 +1137,7 @@ UtilTransactions::verifyOrderedIndex(Ndb* pNdb,
goto error; goto error;
} }
check = pTrans->execute(NoCommit); check = pTrans->execute(NoCommit, AbortOnError);
if(check) if(check)
goto error; goto error;
...@@ -1376,7 +1376,7 @@ loop: ...@@ -1376,7 +1376,7 @@ loop:
} }
} }
if( pTrans->execute(NoCommit) == -1 ) { if( pTrans->execute(NoCommit, AbortOnError) == -1 ) {
ERR(err= pTrans->getNdbError()); ERR(err= pTrans->getNdbError());
goto error; goto error;
} }
......
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