static void recover2PC(PGconn *conn, txn_info *txn) { TXN_STATUS txn_stat; txn_stat = check_txn_global_status(txn); if (verbose_opt) { fprintf(outf, " Recovering TXN: gxid: %d, xid: \"%s\", owner: \"%s\", global status: %s\n", txn->gxid, txn->xid, txn->owner, str_txn_stat(txn_stat)); } switch (txn_stat) { case TXN_STATUS_FAILED: if (verbose_opt) fprintf(outf, " Recovery not needed.\n"); return; case TXN_STATUS_PREPARED: if (verbose_opt) fprintf(outf, " Recovery not needed.\n"); return; case TXN_STATUS_COMMITTED: do_commit(conn, txn); return; case TXN_STATUS_ABORTED: do_abort(conn, txn); return; default: fprintf(stderr, " Unknown TXN status, pgxc_clean error.\n"); exit(1); } return; }
TXN_STATUS check_txn_global_status_gxid(TransactionId gxid) { return(check_txn_global_status(find_txn(gxid))); }