Ejemplo n.º 1
0
/*
 * 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;
}
Ejemplo n.º 2
0
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();
}
Ejemplo n.º 3
0
/*
 * 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;
}
Ejemplo n.º 4
0
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();
}
Ejemplo n.º 5
0
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();
}
Ejemplo n.º 6
0
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);
}
Ejemplo n.º 7
0
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;
	}
}