Loading storage/ndb/src/ndbapi/NdbEventOperationImpl.cpp +27 −17 Original line number Diff line number Diff line Loading @@ -1523,30 +1523,39 @@ NdbEventBuffer::completeClusterFailed() } while((op = m_ndb->getEventOperation(op))); /** * Find min not completed GCI * Release all GCI's with m_gci > gci */ Uint32 i; Uint32 sz= m_active_gci.size(); Uint64 gci= ~0; Uint64 gci= data.gci; Gci_container* bucket = 0; Gci_container* array = (Gci_container*)m_active_gci.getBase(); for(i = 0; i < sz; i++) { if(array[i].m_gcp_complete_rep_count && array[i].m_gci < gci) Gci_container* tmp = array + i; if (tmp->m_gci > gci) { if(!tmp->m_data.is_empty()) { bucket= array + i; gci = bucket->m_gci; free_list(tmp->m_data); } tmp->~Gci_container(); bzero(tmp, sizeof(Gci_container)); } /** * Release all GCI's with m_gci > gci */ for(i = 0; i < sz; i++) else if (tmp->m_gcp_complete_rep_count) { Gci_container* tmp = array + i; if (tmp->m_gci > gci) if (tmp->m_gci == gci) { bucket= tmp; continue; } // we have found an old not-completed gci // something is wrong, assert in debug, but try so salvage // in release ndbout_c("out of order bucket detected at cluster disconnect, " "data.gci: %u. tmp->m_gci: %u", (unsigned)data.gci, (unsigned)tmp->m_gci); assert(false); if(!tmp->m_data.is_empty()) { free_list(tmp->m_data); Loading @@ -1556,7 +1565,8 @@ NdbEventBuffer::completeClusterFailed() } } assert(bucket != 0 && data.gci == gci); assert(bucket != 0); const Uint32 cnt= bucket->m_gcp_complete_rep_count = 1; bucket->m_gci = gci; bucket->m_gcp_complete_rep_count = cnt; Loading Loading
storage/ndb/src/ndbapi/NdbEventOperationImpl.cpp +27 −17 Original line number Diff line number Diff line Loading @@ -1523,30 +1523,39 @@ NdbEventBuffer::completeClusterFailed() } while((op = m_ndb->getEventOperation(op))); /** * Find min not completed GCI * Release all GCI's with m_gci > gci */ Uint32 i; Uint32 sz= m_active_gci.size(); Uint64 gci= ~0; Uint64 gci= data.gci; Gci_container* bucket = 0; Gci_container* array = (Gci_container*)m_active_gci.getBase(); for(i = 0; i < sz; i++) { if(array[i].m_gcp_complete_rep_count && array[i].m_gci < gci) Gci_container* tmp = array + i; if (tmp->m_gci > gci) { if(!tmp->m_data.is_empty()) { bucket= array + i; gci = bucket->m_gci; free_list(tmp->m_data); } tmp->~Gci_container(); bzero(tmp, sizeof(Gci_container)); } /** * Release all GCI's with m_gci > gci */ for(i = 0; i < sz; i++) else if (tmp->m_gcp_complete_rep_count) { Gci_container* tmp = array + i; if (tmp->m_gci > gci) if (tmp->m_gci == gci) { bucket= tmp; continue; } // we have found an old not-completed gci // something is wrong, assert in debug, but try so salvage // in release ndbout_c("out of order bucket detected at cluster disconnect, " "data.gci: %u. tmp->m_gci: %u", (unsigned)data.gci, (unsigned)tmp->m_gci); assert(false); if(!tmp->m_data.is_empty()) { free_list(tmp->m_data); Loading @@ -1556,7 +1565,8 @@ NdbEventBuffer::completeClusterFailed() } } assert(bucket != 0 && data.gci == gci); assert(bucket != 0); const Uint32 cnt= bucket->m_gcp_complete_rep_count = 1; bucket->m_gci = gci; bucket->m_gcp_complete_rep_count = cnt; Loading