void RdbMerge::doneMerging ( ) { // let RdbDump free its m_verifyBuf buffer if it existed m_dump.reset(); // debug msg //fprintf(stderr,"exiting, g_errno=%s!\n",mstrerror(g_errno)); //exit(-1); // . free the list's memory, reset() doesn't do it // . when merging titledb i'm still seeing 200MB allocs to read from // tfndb. m_list.freeList(); // nuke our msg3 //delete (m_msg3); // log a msg log(LOG_INFO,"db: Merge status: %s.",mstrerror(g_errno)); // . reset our class // . this will free it's cutoff keys buffer, trash buffer, treelist // . TODO: should we not reset to keep the mem handy for next time // to help avoid out of mem errors? m_msg5.reset(); // . do we really need these anymore? // . turn these off before calling incorporateMerge() since it // will call attemptMerge() on all the other dbs m_isMerging = false; m_isSuspended = false; // get base, returns NULL and sets g_errno to ENOCOLLREC on error RdbBase *base; if (!(base=getRdbBase(m_rdbId,m_coll))) return; // pass g_errno on to incorporate merge so merged file can be unlinked base->incorporateMerge ( ); // nuke the lock so others can merge //s_isMergeLocked = false; }
void RdbMerge::doneMerging ( ) { // save this int32_t saved = g_errno; // let RdbDump free its m_verifyBuf buffer if it existed m_dump.reset(); // debug msg //fprintf(stderr,"exiting, g_errno=%s!\n",mstrerror(g_errno)); //exit(-1); // . free the list's memory, reset() doesn't do it // . when merging titledb i'm still seeing 200MB allocs to read from // tfndb. m_list.freeList(); // nuke our msg3 //delete (m_msg3); // log a msg log(LOG_INFO,"db: Merge status: %s.",mstrerror(g_errno)); // . reset our class // . this will free it's cutoff keys buffer, trash buffer, treelist // . TODO: should we not reset to keep the mem handy for next time // to help avoid out of mem errors? m_msg5.reset(); // . do we really need these anymore? // . turn these off before calling incorporateMerge() since it // will call attemptMerge() on all the other dbs m_isMerging = false; m_isSuspended = false; // if collection rec was deleted while merging files for it // then the rdbbase should be NULL i guess. if ( saved == ENOCOLLREC ) return; // if we are exiting then dont bother renaming the files around now. // this prevents a core in RdbBase::incorporateMerge() if ( g_process.m_mode == EXIT_MODE ) { log("merge: exiting. not ending merge."); return; } // get base, returns NULL and sets g_errno to ENOCOLLREC on error RdbBase *base = getRdbBase( m_rdbId, m_collnum ); if ( ! base ) { return; } // pass g_errno on to incorporate merge so merged file can be unlinked base->incorporateMerge ( ); // nuke the lock so others can merge //s_isMergeLocked = false; }