From 06ab901376e7193b65fe9b5edc666876049d97c4 Mon Sep 17 00:00:00 2001 From: unknown Date: Mon, 13 Jun 2005 09:09:50 +0200 Subject: [PATCH] bug#10294 - ndb restore with #concurrent transactions < parallelism Enable retry on startTransaction ndb/tools/restore/consumer_restore.cpp: Enable retry on startTransaction==NULL --- ndb/tools/restore/consumer_restore.cpp | 24 ++++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/ndb/tools/restore/consumer_restore.cpp b/ndb/tools/restore/consumer_restore.cpp index 9d161773bd2..d782a561e6a 100644 --- a/ndb/tools/restore/consumer_restore.cpp +++ b/ndb/tools/restore/consumer_restore.cpp @@ -288,12 +288,11 @@ void BackupRestore::tuple_a(restore_callback_t *cb) cb->connection = m_ndb->startTransaction(); if (cb->connection == NULL) { - /* - if (errorHandler(cb)) - { + if (errorHandler(cb)) + { + m_ndb->sendPollNdb(3000, 1); continue; - } - */ + } exitHandler(); } // if @@ -409,9 +408,17 @@ void BackupRestore::cback(int result, restore_callback_t *cb) */ bool BackupRestore::errorHandler(restore_callback_t *cb) { - NdbError error= cb->connection->getNdbError(); - m_ndb->closeTransaction(cb->connection); - cb->connection= 0; + NdbError error; + if(cb->connection) + { + error= cb->connection->getNdbError(); + m_ndb->closeTransaction(cb->connection); + cb->connection= 0; + } + else + { + error= m_ndb->getNdbError(); + } Uint32 sleepTime = 100 + cb->retries * 300; @@ -426,6 +433,7 @@ bool BackupRestore::errorHandler(restore_callback_t *cb) break; case NdbError::TemporaryError: + err << "Temporary error: " << error << endl; NdbSleep_MilliSleep(sleepTime); return true; // RETRY