/* * UnRegister Given Node * Connection for registering is just used once then closed */ int UnregisterGTM(GTM_PGXCNodeType type) { int ret; CheckConnection(); if (!conn) return EOF; ret = node_unregister(conn, type, PGXCNodeName); /* If something went wrong, retry once */ if (ret < 0) { CloseGTM(); InitGTM(); if (conn) ret = node_unregister(conn, type, PGXCNodeName); } /* * If node is unregistered cleanly, cut the connection. * and Node shuts down smoothly. */ CloseGTM(); return ret; }
void test_node5_02() { int rc; SETUP(); /* * active */ connect1(); rc = node_register(conn, GTM_NODE_DATANODE, 16666, "One zero zero one", "/tmp/pgxc/data/gtm"); _ASSERT( rc >= 0 ); rc = node_unregister(conn, GTM_NODE_DATANODE, "One zero zero one"); _ASSERT( rc >= 0 ); GTMPQfinish(conn); sleep(3); /* * standby */ connect2(); rc = node_unregister(conn, GTM_NODE_DATANODE, "One zero zero one"); _ASSERT( rc<0 ); GTMPQfinish(conn); TEARDOWN(); }
/* * Update my node status from "disconnected" to "connected" in GTM by myself. * * Returns 1 on success, 0 on failure. */ int gtm_standby_activate_self(void) { int rc; elog(LOG, "Updating the standby-GTM status to \"CONNECTED\"..."); rc = node_unregister(GTM_ActiveConn, GTM_NODE_GTM, standbyNodeName); if (rc < 0) { elog(LOG, "Failed to unregister old standby-GTM status."); return 0; } rc = node_register_internal(GTM_ActiveConn, GTM_NODE_GTM, standbyHostName, standbyPortNumber, standbyNodeName, standbyDataDir, NODE_CONNECTED); if (rc < 0) { elog(LOG, "Failed to register a new standby-GTM status."); return 0; } elog(LOG, "Updating the standby-GTM status done."); return 1; }
void test_node5_03() { int rc; SETUP(); /* * active */ connect1(); rc = node_register(conn, GTM_NODE_DATANODE, 16666, "One zero zero one", "/tmp/pgxc/data/gtm"); _ASSERT( rc >= 0 ); system("killall -9 gtm"); system("./promote.sh"); sleep(1); GTMPQfinish(conn); connect2(); rc = node_unregister(conn, GTM_NODE_DATANODE, "One zero zero one"); _ASSERT( rc >= 0 ); GTMPQfinish(conn); TEARDOWN(); }
void test01() { GlobalTransactionId gxid; int rc; char host[1024]; printf("\n=== test01:node_register ===\n"); setUp(); node_get_local_addr(conn, host, sizeof(host)); /* * starting */ rc = node_register_internal(conn, GTM_NODE_GTM, host, 6667, "One zero two", "/tmp/pgxc/data/gtm_standby", NODE_DISCONNECTED); _ASSERT(rc == 0); rc = node_unregister(conn, GTM_NODE_GTM, "One zero two"); _ASSERT(rc == 0); rc = node_register_internal(conn, GTM_NODE_GTM, host, 6667, "One zero two", "/tmp/pgxc/data/gtm_standby", NODE_CONNECTED); _ASSERT(rc == 0); sleep(10); gxid = begin_transaction(conn, GTM_ISOLATION_SERIALIZABLE, timestamp); _ASSERT( gxid!=InvalidGlobalTransactionId ); rc = prepare_transaction(conn, gxid); _ASSERT( rc!=-1 ); rc = abort_transaction(conn, gxid); _ASSERT( rc!=-1 ); sleep(10); /* * closing */ rc = node_unregister(conn, GTM_NODE_GTM, "One zero two"); _ASSERT( rc==0 ); tearDown(); }
void gtm_standby_finishActiveConn(void) { GTM_ActiveConn = gtm_standby_connectToActiveGTM(); if (GTM_ActiveConn == NULL) { elog(DEBUG3, "Error in connection"); return; } elog(LOG, "Connection established to the GTM active."); /* Unregister self from Active-GTM */ node_unregister(GTM_ActiveConn, GTM_NODE_GTM, NodeName); /* Disconnect form Active */ GTMPQfinish(GTM_ActiveConn); }
int process_unregister_command(GTM_PGXCNodeType type, char *nodename) { GTM_Conn *conn; int res; conn = connectGTM(); if (conn == NULL) { elog(ERROR, "ERROR: failed to connect to GTM\n"); return -1; } res = node_unregister(conn, type, nodename); if (res == GTM_RESULT_OK){ elog(NOTICE, "unregister %s from GTM.\n", nodename); GTMPQfinish(conn); return 0; } else { elog(ERROR, "ERROR: Failed to unregister %s from GTM.\n", nodename); GTMPQfinish(conn); return res; } }