galera::TrxHandle* galera::Wsdb::get_trx(int version, const wsrep_uuid_t& source_id, wsrep_trx_id_t trx_id, bool create) { gu::Lock lock(mutex_); TrxMap::iterator i; TrxHandle* retval; if ((i = trx_map_.find(trx_id)) == trx_map_.end()) { if (create == true) { retval = create_trx(version, source_id, trx_id); } else { retval = 0; } } else { retval = i->second; } if (retval != 0) { retval->ref(); } return retval; }
galera::TrxHandle* galera::Wsdb::get_trx(const TrxHandle::Params& params, const wsrep_uuid_t& source_id, wsrep_trx_id_t const trx_id, bool const create) { TrxHandle* retval(find_trx(trx_id)); if (0 == retval && create) retval = create_trx(params, source_id, trx_id); if (retval != 0) retval->ref(); return retval; }