summaryrefslogtreecommitdiff
path: root/storage/ndb/tools/restore
diff options
context:
space:
mode:
authorunknown <ndbdev@dl145c.mysql.com>2005-09-06 09:21:23 +0200
committerunknown <ndbdev@dl145c.mysql.com>2005-09-06 09:21:23 +0200
commit5ac4b631882c3b86e7d499d49620c48c3d890e36 (patch)
tree1840477eb8d180663c390c12acfeaefc37c6b0f0 /storage/ndb/tools/restore
parentf6c1d4191cf001ba9e895e174bec2f443b28dbc0 (diff)
parent7b2aacb73d43b8d6fa62167610c0cd1e734ffed9 (diff)
downloadmariadb-git-5ac4b631882c3b86e7d499d49620c48c3d890e36.tar.gz
Merge tulin@bk-internal.mysql.com:/home/bk/mysql-5.0
into dl145c.mysql.com:/home/ndbdev/tomas/mysql-5.1 storage/ndb/include/util/ndb_opts.h: Auto merged storage/ndb/src/kernel/blocks/ndbcntr/NdbcntrMain.cpp: Auto merged storage/ndb/src/kernel/error/ErrorReporter.cpp: Auto merged storage/ndb/src/kernel/error/ErrorReporter.hpp: Auto merged storage/ndb/src/kernel/main.cpp: Auto merged storage/ndb/src/kernel/vm/Emulator.cpp: Auto merged storage/ndb/src/kernel/vm/Emulator.hpp: Auto merged storage/ndb/src/mgmsrv/ConfigInfo.cpp: Auto merged storage/ndb/src/mgmsrv/MgmtSrvr.cpp: Auto merged storage/ndb/src/mgmsrv/Services.cpp: Auto merged storage/ndb/tools/Makefile.am: Auto merged storage/ndb/tools/ndb_condig.cpp: Auto merged storage/ndb/tools/restore/consumer_restore.cpp: Auto merged storage/ndb/tools/restore/restore_main.cpp: Auto merged
Diffstat (limited to 'storage/ndb/tools/restore')
-rw-r--r--storage/ndb/tools/restore/consumer_restore.cpp29
-rw-r--r--storage/ndb/tools/restore/restore_main.cpp47
2 files changed, 46 insertions, 30 deletions
diff --git a/storage/ndb/tools/restore/consumer_restore.cpp b/storage/ndb/tools/restore/consumer_restore.cpp
index 9dd8c4bf92d..5786bdac697 100644
--- a/storage/ndb/tools/restore/consumer_restore.cpp
+++ b/storage/ndb/tools/restore/consumer_restore.cpp
@@ -14,9 +14,12 @@
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */
+#include <NDBT_ReturnCodes.h>
#include "consumer_restore.hpp"
#include <NdbSleep.h>
+extern my_bool opt_core;
+
extern FilteredNdbOut err;
extern FilteredNdbOut info;
extern FilteredNdbOut debug;
@@ -472,7 +475,11 @@ bool BackupRestore::errorHandler(restore_callback_t *cb)
void BackupRestore::exitHandler()
{
release();
- exit(-1);
+ NDBT_ProgramExit(NDBT_FAILED);
+ if (opt_core)
+ abort();
+ else
+ exit(NDBT_FAILED);
}
@@ -506,7 +513,7 @@ BackupRestore::logEntry(const LogEntry & tup)
{
// Deep shit, TODO: handle the error
err << "Cannot start transaction" << endl;
- exit(-1);
+ exitHandler();
} // if
const NdbDictionary::Table * table = get_table(tup.m_table->m_dictTable);
@@ -514,7 +521,7 @@ BackupRestore::logEntry(const LogEntry & tup)
if (op == NULL)
{
err << "Cannot get operation: " << trans->getNdbError() << endl;
- exit(-1);
+ exitHandler();
} // if
int check = 0;
@@ -532,13 +539,13 @@ BackupRestore::logEntry(const LogEntry & tup)
default:
err << "Log entry has wrong operation type."
<< " Exiting...";
- exit(-1);
+ exitHandler();
}
if (check != 0)
{
err << "Error defining op: " << trans->getNdbError() << endl;
- exit(-1);
+ exitHandler();
} // if
Bitmask<4096> keys;
@@ -567,7 +574,7 @@ BackupRestore::logEntry(const LogEntry & tup)
if (check != 0)
{
err << "Error defining op: " << trans->getNdbError() << endl;
- exit(-1);
+ exitHandler();
} // if
}
@@ -596,7 +603,7 @@ BackupRestore::logEntry(const LogEntry & tup)
if (!ok)
{
err << "execute failed: " << errobj << endl;
- exit(-1);
+ exitHandler();
}
}
@@ -643,7 +650,7 @@ BackupRestore::tuple(const TupleS & tup)
{
// Deep shit, TODO: handle the error
ndbout << "Cannot start transaction" << endl;
- exit(-1);
+ exitHandler();
} // if
const TableS * table = tup.getTable();
@@ -652,7 +659,7 @@ BackupRestore::tuple(const TupleS & tup)
{
ndbout << "Cannot get operation: ";
ndbout << trans->getNdbError() << endl;
- exit(-1);
+ exitHandler();
} // if
// TODO: check return value and handle error
@@ -660,7 +667,7 @@ BackupRestore::tuple(const TupleS & tup)
{
ndbout << "writeTuple call failed: ";
ndbout << trans->getNdbError() << endl;
- exit(-1);
+ exitHandler();
} // if
for (int i = 0; i < tup.getNoOfAttributes(); i++)
@@ -694,7 +701,7 @@ BackupRestore::tuple(const TupleS & tup)
{
ndbout << "execute failed: ";
ndbout << trans->getNdbError() << endl;
- exit(-1);
+ exitHandler();
}
m_ndb->closeTransaction(trans);
if (ret == 0)
diff --git a/storage/ndb/tools/restore/restore_main.cpp b/storage/ndb/tools/restore/restore_main.cpp
index 62fccfa3082..af7c751fb67 100644
--- a/storage/ndb/tools/restore/restore_main.cpp
+++ b/storage/ndb/tools/restore/restore_main.cpp
@@ -20,6 +20,7 @@
#include <ndb_limits.h>
#include <NdbTCP.h>
#include <NdbOut.hpp>
+#include <NDBT_ReturnCodes.h>
#include "consumer_restore.hpp"
#include "consumer_printer.hpp"
@@ -118,14 +119,14 @@ get_one_option(int optid, const struct my_option *opt __attribute__((unused)),
if (ga_nodeId == 0)
{
printf("Error in --nodeid,-n setting, see --help\n");
- exit(1);
+ exit(NDBT_ProgramExit(NDBT_WRONGARGS));
}
break;
case 'b':
if (ga_backupId == 0)
{
printf("Error in --backupid,-b setting, see --help\n");
- exit(1);
+ exit(NDBT_ProgramExit(NDBT_WRONGARGS));
}
break;
}
@@ -138,7 +139,7 @@ readArguments(int *pargc, char*** pargv)
load_defaults("my",load_default_groups,pargc,pargv);
if (handle_options(pargc, pargv, my_long_options, get_one_option))
{
- exit(1);
+ exit(NDBT_ProgramExit(NDBT_WRONGARGS));
}
BackupPrinter* printer = new BackupPrinter();
@@ -229,6 +230,14 @@ free_data_callback()
}
const char * g_connect_string = 0;
+static void exitHandler(int code)
+{
+ NDBT_ProgramExit(code);
+ if (opt_core)
+ abort();
+ else
+ exit(code);
+}
int
main(int argc, char** argv)
@@ -237,7 +246,7 @@ main(int argc, char** argv)
if (!readArguments(&argc, &argv))
{
- return -1;
+ exitHandler(NDBT_FAILED);
}
g_connect_string = opt_connect_str;
@@ -249,7 +258,7 @@ main(int argc, char** argv)
if (!metaData.readHeader())
{
ndbout << "Failed to read " << metaData.getFilename() << endl << endl;
- return -1;
+ exitHandler(NDBT_FAILED);
}
const BackupFormat::FileHeader & tmp = metaData.getFileHeader();
@@ -267,20 +276,20 @@ main(int argc, char** argv)
if (res == 0)
{
ndbout_c("Restore: Failed to load content");
- return -1;
+ exitHandler(NDBT_FAILED);
}
if (metaData.getNoOfTables() == 0)
{
ndbout_c("Restore: The backup contains no tables ");
- return -1;
+ exitHandler(NDBT_FAILED);
}
if (!metaData.validateFooter())
{
ndbout_c("Restore: Failed to validate footer.");
- return -1;
+ exitHandler(NDBT_FAILED);
}
Uint32 i;
@@ -289,7 +298,7 @@ main(int argc, char** argv)
if (!g_consumers[i]->init())
{
clearConsumers();
- return -11;
+ exitHandler(NDBT_FAILED);
}
}
@@ -304,7 +313,7 @@ main(int argc, char** argv)
ndbout_c("Restore: Failed to restore table: %s. "
"Exiting...",
metaData[i]->getTableName());
- return -11;
+ exitHandler(NDBT_FAILED);
}
}
}
@@ -313,7 +322,7 @@ main(int argc, char** argv)
if (!g_consumers[i]->endOfTables())
{
ndbout_c("Restore: Failed while closing tables");
- return -11;
+ exitHandler(NDBT_FAILED);
}
if (ga_restore || ga_print)
@@ -326,7 +335,7 @@ main(int argc, char** argv)
if (!dataIter.readHeader())
{
ndbout << "Failed to read header of data file. Exiting..." ;
- return -11;
+ exitHandler(NDBT_FAILED);
}
@@ -344,12 +353,12 @@ main(int argc, char** argv)
{
ndbout_c("Restore: An error occured while restoring data. "
"Exiting...");
- return -1;
+ exitHandler(NDBT_FAILED);
}
if (!dataIter.validateFragmentFooter()) {
ndbout_c("Restore: Error validating fragment footer. "
"Exiting...");
- return -1;
+ exitHandler(NDBT_FAILED);
}
} // while (dataIter.readFragmentHeader(res))
@@ -357,7 +366,7 @@ main(int argc, char** argv)
{
err << "Restore: An error occured while restoring data. Exiting... "
<< "res=" << res << endl;
- return -1;
+ exitHandler(NDBT_FAILED);
}
@@ -373,7 +382,7 @@ main(int argc, char** argv)
if (!logIter.readHeader())
{
err << "Failed to read header of data file. Exiting..." << endl;
- return -1;
+ exitHandler(NDBT_FAILED);
}
const LogEntry * logEntry = 0;
@@ -387,7 +396,7 @@ main(int argc, char** argv)
{
err << "Restore: An restoring the data log. Exiting... res="
<< res << endl;
- return -1;
+ exitHandler(NDBT_FAILED);
}
logIter.validateFooter(); //not implemented
for (i= 0; i < g_consumers.size(); i++)
@@ -406,14 +415,14 @@ main(int argc, char** argv)
ndbout_c("Restore: Failed to finalize restore table: %s. "
"Exiting...",
metaData[i]->getTableName());
- return -11;
+ exitHandler(NDBT_FAILED);
}
}
}
}
}
clearConsumers();
- return 0;
+ return NDBT_ProgramExit(NDBT_OK);
} // main
template class Vector<BackupConsumer*>;