attempt to fix the crash in DataStore by not calling deleteMsgs directly

This commit is contained in:
cyril soler 2017-06-07 13:37:38 +02:00
parent 39f003f9f9
commit e726bd1061
2 changed files with 12 additions and 4 deletions

View File

@ -354,8 +354,14 @@ void p3GxsTrans::GxsTransIntegrityCleanupThread::run()
RS_STACK_MUTEX(mMtx) ;
mMsgToDel = msgsToDel ;
mDone = true;
}
bool p3GxsTrans::GxsTransIntegrityCleanupThread::isDone()
{
RS_STACK_MUTEX(mMtx) ;
return mDone ;
}
void p3GxsTrans::service_tick()
{
GxsTokenQueue::checkRequests();
@ -381,7 +387,7 @@ void p3GxsTrans::service_tick()
// now grab collected messages to delete
if(mCleanupThread != NULL && !mCleanupThread->isRunning())
if(mCleanupThread != NULL && !mCleanupThread->isDone())
{
GxsMsgReq msgToDel ;
@ -390,7 +396,8 @@ void p3GxsTrans::service_tick()
if(!msgToDel.empty())
{
std::cerr << "p3GxsTrans::service_tick(): deleting messages." << std::endl;
getDataStore()->removeMsgs(msgToDel);
uint32_t token ;
deleteMsgs(token,msgToDel);
}
}

View File

@ -159,7 +159,7 @@ private:
* Two weeks seems fair ATM.
*/
static const uint32_t GXS_STORAGE_PERIOD = 0x127500;
static const uint32_t MAX_DELAY_BETWEEN_CLEANUPS = 1203; // every 20 mins. Could be less.
static const uint32_t MAX_DELAY_BETWEEN_CLEANUPS = 1203; // every 20 mins. Could be less.
time_t mLastMsgCleanup ;
@ -282,7 +282,7 @@ private:
enum CheckState { CheckStart, CheckChecking };
public:
GxsTransIntegrityCleanupThread(RsGeneralDataService *const dataService): mDs(dataService),mMtx("GxsTransIntegrityCheck") {}
GxsTransIntegrityCleanupThread(RsGeneralDataService *const dataService): mDs(dataService),mMtx("GxsTransIntegrityCheck") { mDone=false;}
bool isDone();
void run();
@ -296,6 +296,7 @@ private:
RsMutex mMtx ;
GxsMsgReq mMsgToDel ;
bool mDone ;
};
GxsTransIntegrityCleanupThread *mCleanupThread ;