1
0
mirror of https://github.com/mariadb-corporation/mariadb-columnstore-engine.git synced 2025-07-30 19:23:07 +03:00

MCOL-259. Reload the Columnstore.xml if ERR_DATA_OFFLINE would be thrown. If still broke, throw anyway.

This commit is contained in:
David Hall
2016-08-11 15:35:19 -05:00
parent e0805141ac
commit b9bbb67549
3 changed files with 23 additions and 3 deletions

View File

@ -365,7 +365,17 @@ void pDictionaryScan::sendPrimitiveMessages()
msgLbidCount = remainingLbids;
if (dbRootConnectionMap->find(dbroot) == dbRootConnectionMap->end())
{
// MCOL-259 force a reload of the xml. This usualy fixes it.
std::cout << "dictionary forcing reload of columnstore.xml for dbRootConnectionMap" << std::endl;
oamCache->forceReload();
dbRootConnectionMap = oamCache->getDBRootToConnectionMap();
if (dbRootConnectionMap->find(dbroot) == dbRootConnectionMap->end())
{
std::cout << "dictionary still not in dbRootConnectionMap" << std::endl;
throw IDBExcept(ERR_DATA_OFFLINE);
}
}
sendAPrimitiveMessage(primMsg, msgLbidStart, msgLbidCount, (*dbRootConnectionMap)[dbroot]);
primMsg.restart();

View File

@ -1621,7 +1621,17 @@ void TupleBPS::makeJobs(vector<Job> *jobs)
// a necessary DB root is offline
if (dbRootConnectionMap->find(scannedExtents[i].dbRoot) == dbRootConnectionMap->end())
{
// MCOL-259 force a reload of the xml. This usualy fixes it.
std::cout << "forcing reload of columnstore.xml for dbRootConnectionMap" << std::endl;
oamCache->forceReload();
dbRootConnectionMap = oamCache->getDBRootToConnectionMap();
if (dbRootConnectionMap->find(scannedExtents[i].dbRoot) == dbRootConnectionMap->end())
{
std::cout << "still not in dbRootConnectionMap" << std::endl;
throw IDBExcept(ERR_DATA_OFFLINE);
}
}
// cout << " session " << fSessionId << " idx = " << i << " HWM = " << scannedExtents[i].HWM
// << " ... will scan " << lbidsToScan << " lbids\n";

View File

@ -337,7 +337,7 @@ next:
/* If there was an error or an abort drain the input DL,
do endOfInput on the output */
if (cancelled()) {
cout << "HJ stopping... status is " << status() << endl;
// cout << "HJ stopping... status is " << status() << endl;
if (largeBPS)
largeBPS->abort();
while (more)