diff options
author | Pavan Deolasee | 2015-05-29 07:59:01 +0000 |
---|---|---|
committer | Pavan Deolasee | 2015-05-29 07:59:01 +0000 |
commit | 8f541f3d31dbc0b5646714a5eae576377e1511b1 (patch) | |
tree | 9a1850eba2c0901424dec6aaa7dd439fb6ba3f3d | |
parent | f053da76535c973d3c381ecb27d4aec7d553ddd9 (diff) |
Simplify GTM protocol a bit by only using GXID for transaction identification
When the code was first written, it was assumed that client could directly use
index (handle) into an array to quickly identify a transaction. But that was
never used and was unnecessarily causing confusion. Remove that for simplification
-rw-r--r-- | src/gtm/client/gtm_client.c | 22 | ||||
-rw-r--r-- | src/gtm/main/gtm_snap.c | 62 | ||||
-rw-r--r-- | src/gtm/main/gtm_txn.c | 213 | ||||
-rw-r--r-- | src/gtm/proxy/proxy_main.c | 57 | ||||
-rw-r--r-- | src/include/gtm/gtm_client.h | 2 | ||||
-rw-r--r-- | src/include/gtm/gtm_proxy.h | 4 |
6 files changed, 81 insertions, 279 deletions
diff --git a/src/gtm/client/gtm_client.c b/src/gtm/client/gtm_client.c index 13c08feb37..382f6336c7 100644 --- a/src/gtm/client/gtm_client.c +++ b/src/gtm/client/gtm_client.c @@ -619,7 +619,6 @@ commit_transaction_internal(GTM_Conn *conn, GlobalTransactionId gxid, bool is_ba /* Start the message. */ if (gtmpqPutMsgStart('C', true, conn) || gtmpqPutInt(is_backup ? MSG_BKUP_TXN_COMMIT : MSG_TXN_COMMIT, sizeof (GTM_MessageType), conn) || - gtmpqPutc(true, conn) || gtmpqPutnchar((char *)&gxid, sizeof (GlobalTransactionId), conn)) goto send_failed; @@ -679,9 +678,7 @@ commit_prepared_transaction_internal(GTM_Conn *conn, GlobalTransactionId gxid, G /* Start the message */ if (gtmpqPutMsgStart('C', true, conn) || gtmpqPutInt(is_backup ? MSG_BKUP_TXN_COMMIT_PREPARED : MSG_TXN_COMMIT_PREPARED, sizeof (GTM_MessageType), conn) || - gtmpqPutc(true, conn) || gtmpqPutnchar((char *)&gxid, sizeof (GlobalTransactionId), conn) || - gtmpqPutc(true, conn) || gtmpqPutnchar((char *)&prepared_gxid, sizeof (GlobalTransactionId), conn)) goto send_failed; @@ -741,7 +738,6 @@ abort_transaction_internal(GTM_Conn *conn, GlobalTransactionId gxid, bool is_bac /* Start the message. */ if (gtmpqPutMsgStart('C', true, conn) || gtmpqPutInt(is_backup ? MSG_BKUP_TXN_ROLLBACK : MSG_TXN_ROLLBACK, sizeof (GTM_MessageType), conn) || - gtmpqPutc(true, conn) || gtmpqPutnchar((char *)&gxid, sizeof (GlobalTransactionId), conn)) goto send_failed; @@ -809,7 +805,6 @@ start_prepared_transaction_internal(GTM_Conn *conn, GlobalTransactionId gxid, ch /* Start the message. */ if (gtmpqPutMsgStart('C', true, conn) || gtmpqPutInt(is_backup ? MSG_BKUP_TXN_START_PREPARED : MSG_TXN_START_PREPARED, sizeof (GTM_MessageType), conn) || - gtmpqPutc(true, conn) || gtmpqPutnchar((char *)&gxid, sizeof (GlobalTransactionId), conn) || /* Send also GID for an explicit prepared transaction */ gtmpqPutInt(strlen(gid), sizeof (GTM_StrLen), conn) || @@ -873,7 +868,6 @@ prepare_transaction_internal(GTM_Conn *conn, GlobalTransactionId gxid, bool is_b /* Start the message. */ if (gtmpqPutMsgStart('C', true, conn) || gtmpqPutInt(is_backup ? MSG_BKUP_TXN_PREPARE : MSG_TXN_PREPARE, sizeof (GTM_MessageType), conn) || - gtmpqPutc(true, conn) || gtmpqPutnchar((char *)&gxid, sizeof (GlobalTransactionId), conn)) goto send_failed; @@ -979,7 +973,6 @@ get_snapshot(GTM_Conn *conn, GlobalTransactionId gxid, bool canbe_grouped) if (gtmpqPutMsgStart('C', true, conn) || gtmpqPutInt(MSG_SNAPSHOT_GET, sizeof (GTM_MessageType), conn) || gtmpqPutc(canbe_grouped, conn) || - gtmpqPutc(true, conn) || gtmpqPutnchar((char *)&gxid, sizeof (GlobalTransactionId), conn)) goto send_failed; @@ -2030,7 +2023,7 @@ send_failed: } int -bkup_commit_transaction_multi(GTM_Conn *conn, int txn_count, GTM_TransactionHandle *txn) +bkup_commit_transaction_multi(GTM_Conn *conn, int txn_count, GlobalTransactionId *gxid) { int ii; @@ -2044,8 +2037,8 @@ bkup_commit_transaction_multi(GTM_Conn *conn, int txn_count, GTM_TransactionHand for (ii = 0; ii < txn_count; ii++) { if (gtmpqPutc(false, conn) || - gtmpqPutnchar((char *)&txn[ii], - sizeof (GTM_TransactionHandle), conn)) + gtmpqPutnchar((char *)&gxid[ii], + sizeof (GlobalTransactionId), conn)) goto send_failed; } @@ -2082,8 +2075,7 @@ commit_transaction_multi(GTM_Conn *conn, int txn_count, GlobalTransactionId *gxi for (i = 0; i < txn_count; i++) { - if (gtmpqPutc(true, conn) || - gtmpqPutnchar((char *)&gxid[i], + if (gtmpqPutnchar((char *)&gxid[i], sizeof (GlobalTransactionId), conn)) goto send_failed; } @@ -2153,8 +2145,7 @@ abort_transaction_multi_internal(GTM_Conn *conn, int txn_count, GlobalTransactio for (i = 0; i < txn_count; i++) { - if (gtmpqPutc(true, conn) || - gtmpqPutnchar((char *)&gxid[i], + if (gtmpqPutnchar((char *)&gxid[i], sizeof (GlobalTransactionId), conn)) goto send_failed; } @@ -2214,8 +2205,7 @@ snapshot_get_multi(GTM_Conn *conn, int txn_count, GlobalTransactionId *gxid, for (i = 0; i < txn_count; i++) { - if (gtmpqPutc(true, conn) || - gtmpqPutnchar((char *)&gxid[i], + if (gtmpqPutnchar((char *)&gxid[i], sizeof (GlobalTransactionId), conn)) goto send_failed; } diff --git a/src/gtm/main/gtm_snap.c b/src/gtm/main/gtm_snap.c index 3ecd0d6dcc..fa7e3ccc2d 100644 --- a/src/gtm/main/gtm_snap.c +++ b/src/gtm/main/gtm_snap.c @@ -279,11 +279,11 @@ ProcessGetSnapshotCommand(Port *myport, StringInfo message, bool get_gxid) StringInfoData buf; GTM_TransactionHandle txn; GlobalTransactionId gxid; - int isgxid = 0; GTM_Snapshot snapshot; MemoryContext oldContext; int status; int txn_count = 1; + const char *data = NULL; /* * Here we consume a byte which is a boolean to determine if snapshot can @@ -292,35 +292,19 @@ ProcessGetSnapshotCommand(Port *myport, StringInfo message, bool get_gxid) */ pq_getmsgbyte(message); - isgxid = pq_getmsgbyte(message); + data = pq_getmsgbytes(message, sizeof (gxid)); + if (data == NULL) + ereport(ERROR, + (EPROTO, + errmsg("Message does not contain valid GXID"))); + memcpy(&gxid, data, sizeof(gxid)); + elog(INFO, "Received transaction ID %d for snapshot obtention", gxid); + txn = GTM_GXIDToHandle(gxid); - if (isgxid) - { - const char *data = NULL; - Assert(!get_gxid); - data = pq_getmsgbytes(message, sizeof (gxid)); - if (data == NULL) - ereport(ERROR, - (EPROTO, - errmsg("Message does not contain valid GXID"))); - memcpy(&gxid, data, sizeof(gxid)); - elog(INFO, "Received transaction ID %d for snapshot obtention", gxid); - txn = GTM_GXIDToHandle(gxid); - } - else - { - const char *data = pq_getmsgbytes(message, sizeof (txn)); - if (data == NULL) - ereport(ERROR, - (EPROTO, - errmsg("Message does not contain valid Transaction Handle"))); - memcpy(&txn, data, sizeof (txn)); - } pq_getmsgend(message); if (get_gxid) { - Assert(!isgxid); gxid = GTM_GetGlobalTransactionId(txn); if (gxid == InvalidGlobalTransactionId) ereport(ERROR, @@ -374,7 +358,6 @@ ProcessGetSnapshotCommandMulti(Port *myport, StringInfo message) StringInfoData buf; GTM_TransactionHandle txn[GTM_MAX_GLOBAL_TRANSACTIONS]; GlobalTransactionId gxid[GTM_MAX_GLOBAL_TRANSACTIONS]; - int isgxid[GTM_MAX_GLOBAL_TRANSACTIONS]; GTM_Snapshot snapshot; MemoryContext oldContext; int txn_count; @@ -385,26 +368,13 @@ ProcessGetSnapshotCommandMulti(Port *myport, StringInfo message) for (ii = 0; ii < txn_count; ii++) { - isgxid[ii] = pq_getmsgbyte(message); - if (isgxid[ii]) - { - const char *data = pq_getmsgbytes(message, sizeof (gxid[ii])); - if (data == NULL) - ereport(ERROR, - (EPROTO, - errmsg("Message does not contain valid GXID"))); - memcpy(&gxid[ii], data, sizeof (gxid[ii])); - txn[ii] = GTM_GXIDToHandle(gxid[ii]); - } - else - { - const char *data = pq_getmsgbytes(message, sizeof (txn[ii])); - if (data == NULL) - ereport(ERROR, - (EPROTO, - errmsg("Message does not contain valid Transaction Handle"))); - memcpy(&txn[ii], data, sizeof (txn[ii])); - } + const char *data = pq_getmsgbytes(message, sizeof (gxid[ii])); + if (data == NULL) + ereport(ERROR, + (EPROTO, + errmsg("Message does not contain valid GXID"))); + memcpy(&gxid[ii], data, sizeof (gxid[ii])); + txn[ii] = GTM_GXIDToHandle(gxid[ii]); } pq_getmsgend(message); diff --git a/src/gtm/main/gtm_txn.c b/src/gtm/main/gtm_txn.c index 065a391321..fc09c4e5dc 100644 --- a/src/gtm/main/gtm_txn.c +++ b/src/gtm/main/gtm_txn.c @@ -1757,31 +1757,16 @@ ProcessCommitTransactionCommand(Port *myport, StringInfo message, bool is_backup StringInfoData buf; GTM_TransactionHandle txn; GlobalTransactionId gxid; - int isgxid = 0; MemoryContext oldContext; int status = STATUS_OK; + const char *data = pq_getmsgbytes(message, sizeof (gxid)); - isgxid = pq_getmsgbyte(message); - - if (isgxid) - { - const char *data = pq_getmsgbytes(message, sizeof (gxid)); - if (data == NULL) - ereport(ERROR, - (EPROTO, - errmsg("Message does not contain valid GXID"))); - memcpy(&gxid, data, sizeof (gxid)); - txn = GTM_GXIDToHandle(gxid); - } - else - { - const char *data = pq_getmsgbytes(message, sizeof (txn)); - if (data == NULL) - ereport(ERROR, - (EPROTO, - errmsg("Message does not contain valid Transaction Handle"))); - memcpy(&txn, data, sizeof (txn)); - } + if (data == NULL) + ereport(ERROR, + (EPROTO, + errmsg("Message does not contain valid GXID"))); + memcpy(&gxid, data, sizeof (gxid)); + txn = GTM_GXIDToHandle(gxid); pq_getmsgend(message); @@ -1862,33 +1847,18 @@ ProcessCommitPreparedTransactionCommand(Port *myport, StringInfo message, bool i GlobalTransactionId gxid[txn_count]; MemoryContext oldContext; int status[txn_count]; - int isgxid[txn_count]; int ii; for (ii = 0; ii < txn_count; ii++) { - isgxid[ii] = pq_getmsgbyte(message); - if (isgxid[ii]) - { - const char *data = pq_getmsgbytes(message, sizeof (gxid[ii])); - if (data == NULL) - ereport(ERROR, - (EPROTO, - errmsg("Message does not contain valid GXID"))); - memcpy(&gxid[ii], data, sizeof (gxid[ii])); - txn[ii] = GTM_GXIDToHandle(gxid[ii]); - elog(DEBUG1, "ProcessCommitTransactionCommandMulti: gxid(%u), handle(%u)", gxid[ii], txn[ii]); - } - else - { - const char *data = pq_getmsgbytes(message, sizeof (txn[ii])); - if (data == NULL) - ereport(ERROR, - (EPROTO, - errmsg("Message does not contain valid Transaction Handle"))); - memcpy(&txn[ii], data, sizeof (txn[ii])); - elog(DEBUG1, "ProcessCommitTransactionCommandMulti: handle(%u)", txn[ii]); - } + const char *data = pq_getmsgbytes(message, sizeof (gxid[ii])); + if (data == NULL) + ereport(ERROR, + (EPROTO, + errmsg("Message does not contain valid GXID"))); + memcpy(&gxid[ii], data, sizeof (gxid[ii])); + txn[ii] = GTM_GXIDToHandle(gxid[ii]); + elog(DEBUG1, "ProcessCommitTransactionCommandMulti: gxid(%u), handle(%u)", gxid[ii], txn[ii]); } pq_getmsgend(message); @@ -2154,31 +2124,16 @@ ProcessRollbackTransactionCommand(Port *myport, StringInfo message, bool is_back StringInfoData buf; GTM_TransactionHandle txn; GlobalTransactionId gxid; - int isgxid = 0; MemoryContext oldContext; int status = STATUS_OK; + const char *data = pq_getmsgbytes(message, sizeof (gxid)); - isgxid = pq_getmsgbyte(message); - - if (isgxid) - { - const char *data = pq_getmsgbytes(message, sizeof (gxid)); - if (data == NULL) - ereport(ERROR, - (EPROTO, - errmsg("Message does not contain valid GXID"))); - memcpy(&gxid, data, sizeof (gxid)); - txn = GTM_GXIDToHandle(gxid); - } - else - { - const char *data = pq_getmsgbytes(message, sizeof (txn)); - if (data == NULL) - ereport(ERROR, - (EPROTO, - errmsg("Message does not contain valid Transaction Handle"))); - memcpy(&txn, data, sizeof (txn)); - } + if (data == NULL) + ereport(ERROR, + (EPROTO, + errmsg("Message does not contain valid GXID"))); + memcpy(&gxid, data, sizeof (gxid)); + txn = GTM_GXIDToHandle(gxid); pq_getmsgend(message); @@ -2252,7 +2207,6 @@ ProcessCommitTransactionCommandMulti(Port *myport, StringInfo message, bool is_b StringInfoData buf; GTM_TransactionHandle txn[GTM_MAX_GLOBAL_TRANSACTIONS]; GlobalTransactionId gxid[GTM_MAX_GLOBAL_TRANSACTIONS]; - int isgxid[GTM_MAX_GLOBAL_TRANSACTIONS]; MemoryContext oldContext; int status[GTM_MAX_GLOBAL_TRANSACTIONS]; int txn_count; @@ -2262,28 +2216,14 @@ ProcessCommitTransactionCommandMulti(Port *myport, StringInfo message, bool is_b for (ii = 0; ii < txn_count; ii++) { - isgxid[ii] = pq_getmsgbyte(message); - if (isgxid[ii]) - { - const char *data = pq_getmsgbytes(message, sizeof (gxid[ii])); - if (data == NULL) - ereport(ERROR, - (EPROTO, - errmsg("Message does not contain valid GXID"))); - memcpy(&gxid[ii], data, sizeof (gxid[ii])); - txn[ii] = GTM_GXIDToHandle(gxid[ii]); - elog(DEBUG1, "ProcessCommitTransactionCommandMulti: gxid(%u), handle(%u)", gxid[ii], txn[ii]); - } - else - { - const char *data = pq_getmsgbytes(message, sizeof (txn[ii])); - if (data == NULL) - ereport(ERROR, - (EPROTO, - errmsg("Message does not contain valid Transaction Handle"))); - memcpy(&txn[ii], data, sizeof (txn[ii])); - elog(DEBUG1, "ProcessCommitTransactionCommandMulti: handle(%u)", txn[ii]); - } + const char *data = pq_getmsgbytes(message, sizeof (gxid[ii])); + if (data == NULL) + ereport(ERROR, + (EPROTO, + errmsg("Message does not contain valid GXID"))); + memcpy(&gxid[ii], data, sizeof (gxid[ii])); + txn[ii] = GTM_GXIDToHandle(gxid[ii]); + elog(DEBUG1, "ProcessCommitTransactionCommandMulti: gxid(%u), handle(%u)", gxid[ii], txn[ii]); } pq_getmsgend(message); @@ -2310,7 +2250,9 @@ ProcessCommitTransactionCommandMulti(Port *myport, StringInfo message, bool is_b GetMyThreadInfo->thr_conn->standby); retry: - _rc = bkup_commit_transaction_multi(GetMyThreadInfo->thr_conn->standby, txn_count, txn); + _rc = + bkup_commit_transaction_multi(GetMyThreadInfo->thr_conn->standby, + txn_count, gxid); if (gtm_standby_check_communication_error(&count, oldconn)) goto retry; @@ -2355,7 +2297,6 @@ ProcessRollbackTransactionCommandMulti(Port *myport, StringInfo message, bool is StringInfoData buf; GTM_TransactionHandle txn[GTM_MAX_GLOBAL_TRANSACTIONS]; GlobalTransactionId gxid[GTM_MAX_GLOBAL_TRANSACTIONS]; - int isgxid[GTM_MAX_GLOBAL_TRANSACTIONS]; MemoryContext oldContext; int status[GTM_MAX_GLOBAL_TRANSACTIONS]; int txn_count; @@ -2365,28 +2306,14 @@ ProcessRollbackTransactionCommandMulti(Port *myport, StringInfo message, bool is for (ii = 0; ii < txn_count; ii++) { - isgxid[ii] = pq_getmsgbyte(message); - if (isgxid[ii]) - { - const char *data = pq_getmsgbytes(message, sizeof (gxid[ii])); - if (data == NULL) - ereport(ERROR, - (EPROTO, - errmsg("Message does not contain valid GXID"))); - memcpy(&gxid[ii], data, sizeof (gxid[ii])); - txn[ii] = GTM_GXIDToHandle(gxid[ii]); - elog(DEBUG1, "ProcessRollbackTransactionCommandMulti: gxid(%u), handle(%u)", gxid[ii], txn[ii]); - } - else - { - const char *data = pq_getmsgbytes(message, sizeof (txn[ii])); - if (data == NULL) - ereport(ERROR, - (EPROTO, - errmsg("Message does not contain valid Transaction Handle"))); - memcpy(&txn[ii], data, sizeof (txn[ii])); - elog(DEBUG1, "ProcessRollbackTransactionCommandMulti: handle(%u)", txn[ii]); - } + const char *data = pq_getmsgbytes(message, sizeof (gxid[ii])); + if (data == NULL) + ereport(ERROR, + (EPROTO, + errmsg("Message does not contain valid GXID"))); + memcpy(&gxid[ii], data, sizeof (gxid[ii])); + txn[ii] = GTM_GXIDToHandle(gxid[ii]); + elog(DEBUG1, "ProcessRollbackTransactionCommandMulti: gxid(%u), handle(%u)", gxid[ii], txn[ii]); } pq_getmsgend(message); @@ -2460,33 +2387,18 @@ ProcessStartPreparedTransactionCommand(Port *myport, StringInfo message, bool is StringInfoData buf; GTM_TransactionHandle txn; GlobalTransactionId gxid; - int isgxid = 0; GTM_StrLen gidlen, nodelen; char nodestring[1024]; MemoryContext oldContext; char gid[1024]; + const char *data = pq_getmsgbytes(message, sizeof (gxid)); - isgxid = pq_getmsgbyte(message); - - if (isgxid) - { - const char *data = pq_getmsgbytes(message, sizeof (gxid)); - if (data == NULL) - ereport(ERROR, - (EPROTO, - errmsg("Message does not contain valid GXID"))); - memcpy(&gxid, data, sizeof (gxid)); - txn = GTM_GXIDToHandle(gxid); - } - else - { - const char *data = pq_getmsgbytes(message, sizeof (txn)); - if (data == NULL) - ereport(ERROR, - (EPROTO, - errmsg("Message does not contain valid Transaction Handle"))); - memcpy(&txn, data, sizeof (txn)); - } + if (data == NULL) + ereport(ERROR, + (EPROTO, + errmsg("Message does not contain valid GXID"))); + memcpy(&gxid, data, sizeof (gxid)); + txn = GTM_GXIDToHandle(gxid); /* get GID */ gidlen = pq_getmsgint(message, sizeof (GTM_StrLen)); @@ -2574,30 +2486,15 @@ ProcessPrepareTransactionCommand(Port *myport, StringInfo message, bool is_backu StringInfoData buf; GTM_TransactionHandle txn; GlobalTransactionId gxid; - int isgxid = 0; MemoryContext oldContext; + const char *data = pq_getmsgbytes(message, sizeof (gxid)); - isgxid = pq_getmsgbyte(message); - - if (isgxid) - { - const char *data = pq_getmsgbytes(message, sizeof (gxid)); - if (data == NULL) - ereport(ERROR, - (EPROTO, - errmsg("Message does not contain valid GXID"))); - memcpy(&gxid, data, sizeof (gxid)); - txn = GTM_GXIDToHandle(gxid); - } - else - { - const char *data = pq_getmsgbytes(message, sizeof (txn)); - if (data == NULL) - ereport(ERROR, - (EPROTO, - errmsg("Message does not contain valid Transaction Handle"))); - memcpy(&txn, data, sizeof (txn)); - } + if (data == NULL) + ereport(ERROR, + (EPROTO, + errmsg("Message does not contain valid GXID"))); + memcpy(&gxid, data, sizeof (gxid)); + txn = GTM_GXIDToHandle(gxid); pq_getmsgend(message); diff --git a/src/gtm/proxy/proxy_main.c b/src/gtm/proxy/proxy_main.c index b03441e9ce..2bb55342fe 100644 --- a/src/gtm/proxy/proxy_main.c +++ b/src/gtm/proxy/proxy_main.c @@ -2264,8 +2264,6 @@ ProcessTransactionCommand(GTMProxy_ConnectionInfo *conninfo, GTM_Conn *gtm_conn, case MSG_TXN_COMMIT: case MSG_TXN_ROLLBACK: - cmd_data.cd_rc.isgxid = pq_getmsgbyte(message); - if (cmd_data.cd_rc.isgxid) { const char *data = pq_getmsgbytes(message, sizeof (GlobalTransactionId)); @@ -2275,16 +2273,6 @@ ProcessTransactionCommand(GTMProxy_ConnectionInfo *conninfo, GTM_Conn *gtm_conn, errmsg("Message does not contain valid GXID"))); memcpy(&cmd_data.cd_rc.gxid, data, sizeof (GlobalTransactionId)); } - else - { - const char *data = pq_getmsgbytes(message, - sizeof (GTM_TransactionHandle)); - if (data == NULL) - ereport(ERROR, - (EPROTO, - errmsg("Message does not contain valid Transaction Handle"))); - memcpy(&cmd_data.cd_rc.handle, data, sizeof (GTM_TransactionHandle)); - } pq_getmsgend(message); GTMProxy_CommandPending(conninfo, mtype, cmd_data); break; @@ -2322,8 +2310,6 @@ ProcessSnapshotCommand(GTMProxy_ConnectionInfo *conninfo, GTM_Conn *gtm_conn, GTMProxy_ProxyCommand(conninfo, gtm_conn, mtype, message); else { - cmd_data.cd_snap.isgxid = pq_getmsgbyte(message); - if (cmd_data.cd_snap.isgxid) { const char *data = pq_getmsgbytes(message, sizeof (GlobalTransactionId)); @@ -2333,16 +2319,6 @@ ProcessSnapshotCommand(GTMProxy_ConnectionInfo *conninfo, GTM_Conn *gtm_conn, errmsg("Message does not contain valid GXID"))); memcpy(&cmd_data.cd_snap.gxid, data, sizeof (GlobalTransactionId)); } - else - { - const char *data = pq_getmsgbytes(message, - sizeof (GTM_TransactionHandle)); - if (data == NULL) - ereport(ERROR, - (EPROTO, - errmsg("Message does not contain valid Transaction Handle"))); - memcpy(&cmd_data.cd_snap.handle, data, sizeof (GTM_TransactionHandle)); - } pq_getmsgend(message); GTMProxy_CommandPending(conninfo, mtype, cmd_data); } @@ -2733,20 +2709,11 @@ GTMProxy_ProcessPendingCommands(GTMProxy_ThreadInfo *thrinfo) cmdinfo = (GTMProxy_CommandInfo *)gtm_lfirst(elem); Assert(cmdinfo->ci_mtype == ii); cmdinfo->ci_res_index = res_index++; - if (cmdinfo->ci_data.cd_rc.isgxid) { - if (gtmpqPutc(true, gtm_conn) || - gtmpqPutnchar((char *)&cmdinfo->ci_data.cd_rc.gxid, + if (gtmpqPutnchar((char *)&cmdinfo->ci_data.cd_rc.gxid, sizeof (GlobalTransactionId), gtm_conn)) elog(ERROR, "Error sending data"); } - else - { - if (gtmpqPutc(false, gtm_conn) || - gtmpqPutnchar((char *)&cmdinfo->ci_data.cd_rc.handle, - sizeof (GTM_TransactionHandle), gtm_conn)) - elog(ERROR, "Error sending data"); - } } /* Finish the message. */ @@ -2775,20 +2742,11 @@ GTMProxy_ProcessPendingCommands(GTMProxy_ThreadInfo *thrinfo) cmdinfo = (GTMProxy_CommandInfo *)gtm_lfirst(elem); Assert(cmdinfo->ci_mtype == ii); cmdinfo->ci_res_index = res_index++; - if (cmdinfo->ci_data.cd_rc.isgxid) { - if (gtmpqPutc(true, gtm_conn) || - gtmpqPutnchar((char *)&cmdinfo->ci_data.cd_rc.gxid, + if (gtmpqPutnchar((char *)&cmdinfo->ci_data.cd_rc.gxid, sizeof (GlobalTransactionId), gtm_conn)) elog(ERROR, "Error sending data"); } - else - { - if (gtmpqPutc(false, gtm_conn) || - gtmpqPutnchar((char *)&cmdinfo->ci_data.cd_rc.handle, - sizeof (GTM_TransactionHandle), gtm_conn)) - elog(ERROR, "Error sending data"); - } } /* Finish the message. */ @@ -2816,20 +2774,11 @@ GTMProxy_ProcessPendingCommands(GTMProxy_ThreadInfo *thrinfo) cmdinfo = (GTMProxy_CommandInfo *)gtm_lfirst(elem); Assert(cmdinfo->ci_mtype == ii); cmdinfo->ci_res_index = res_index++; - if (cmdinfo->ci_data.cd_rc.isgxid) { - if (gtmpqPutc(true, gtm_conn) || - gtmpqPutnchar((char *)&cmdinfo->ci_data.cd_rc.gxid, + if (gtmpqPutnchar((char *)&cmdinfo->ci_data.cd_rc.gxid, sizeof (GlobalTransactionId), gtm_conn)) elog(ERROR, "Error sending data"); } - else - { - if (gtmpqPutc(false, gtm_conn) || - gtmpqPutnchar((char *)&cmdinfo->ci_data.cd_rc.handle, - sizeof (GTM_TransactionHandle), gtm_conn)) - elog(ERROR, "Error sending data"); - } } /* Finish the message. */ diff --git a/src/include/gtm/gtm_client.h b/src/include/gtm/gtm_client.h index cd44f4ccf3..672c25f27e 100644 --- a/src/include/gtm/gtm_client.h +++ b/src/include/gtm/gtm_client.h @@ -219,7 +219,7 @@ int commit_transaction_multi(GTM_Conn *conn, int txn_count, GlobalTransactionId *gxid, int *txn_count_out, int *status_out); int -bkup_commit_transaction_multi(GTM_Conn *conn, int txn_count, GTM_TransactionHandle *txn); +bkup_commit_transaction_multi(GTM_Conn *conn, int txn_count, GlobalTransactionId *gxid); int abort_transaction_multi(GTM_Conn *conn, int txn_count, GlobalTransactionId *gxid, int *txn_count_out, int *status_out); diff --git a/src/include/gtm/gtm_proxy.h b/src/include/gtm/gtm_proxy.h index e798d2c89a..068d59e479 100644 --- a/src/include/gtm/gtm_proxy.h +++ b/src/include/gtm/gtm_proxy.h @@ -148,16 +148,12 @@ typedef union GTMProxy_CommandData struct { - bool isgxid; GlobalTransactionId gxid; - GTM_TransactionHandle handle; } cd_rc; struct { - bool isgxid; GlobalTransactionId gxid; - GTM_TransactionHandle handle; } cd_snap; struct |