Use boost::weak_ptr to reference the parent transaction to avoid race conditions