Beispiel #1
0
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;
}
Beispiel #2
0
TXN_STATUS check_txn_global_status_gxid(TransactionId gxid)
{
	return(check_txn_global_status(find_txn(gxid)));
}