Beispiel #1
0
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;
}