corrected errors in how ndbcluster handler closes down in case of error
This commit is contained in:
parent
5d1fff6a24
commit
d863b8951d
@ -4616,7 +4616,11 @@ ndbcluster_init()
|
|||||||
(opt_ndb_optimized_node_selection);
|
(opt_ndb_optimized_node_selection);
|
||||||
|
|
||||||
// Create a Ndb object to open the connection to NDB
|
// Create a Ndb object to open the connection to NDB
|
||||||
g_ndb= new Ndb(g_ndb_cluster_connection, "sys");
|
if ( (g_ndb= new Ndb(g_ndb_cluster_connection, "sys")) == 0 )
|
||||||
|
{
|
||||||
|
DBUG_PRINT("error", ("failed to create global ndb object"));
|
||||||
|
goto ndbcluster_init_error;
|
||||||
|
}
|
||||||
g_ndb->getDictionary()->set_local_table_data_size(sizeof(Ndb_table_local_info));
|
g_ndb->getDictionary()->set_local_table_data_size(sizeof(Ndb_table_local_info));
|
||||||
if (g_ndb->init() != 0)
|
if (g_ndb->init() != 0)
|
||||||
{
|
{
|
||||||
@ -4669,6 +4673,10 @@ ndbcluster_init()
|
|||||||
if (pthread_create(&tmp, &connection_attrib, ndb_util_thread_func, 0))
|
if (pthread_create(&tmp, &connection_attrib, ndb_util_thread_func, 0))
|
||||||
{
|
{
|
||||||
DBUG_PRINT("error", ("Could not create ndb utility thread"));
|
DBUG_PRINT("error", ("Could not create ndb utility thread"));
|
||||||
|
hash_free(&ndbcluster_open_tables);
|
||||||
|
pthread_mutex_destroy(&ndbcluster_mutex);
|
||||||
|
pthread_mutex_destroy(&LOCK_ndb_util_thread);
|
||||||
|
pthread_cond_destroy(&COND_ndb_util_thread);
|
||||||
goto ndbcluster_init_error;
|
goto ndbcluster_init_error;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -4676,7 +4684,12 @@ ndbcluster_init()
|
|||||||
DBUG_RETURN(&ndbcluster_hton);
|
DBUG_RETURN(&ndbcluster_hton);
|
||||||
|
|
||||||
ndbcluster_init_error:
|
ndbcluster_init_error:
|
||||||
ndbcluster_end();
|
if(g_ndb)
|
||||||
|
delete g_ndb;
|
||||||
|
g_ndb= NULL;
|
||||||
|
if (g_ndb_cluster_connection)
|
||||||
|
delete g_ndb_cluster_connection;
|
||||||
|
g_ndb_cluster_connection= NULL;
|
||||||
DBUG_RETURN(NULL);
|
DBUG_RETURN(NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -4691,6 +4704,9 @@ bool ndbcluster_end()
|
|||||||
{
|
{
|
||||||
DBUG_ENTER("ndbcluster_end");
|
DBUG_ENTER("ndbcluster_end");
|
||||||
|
|
||||||
|
if (!ndbcluster_inited)
|
||||||
|
DBUG_RETURN(0);
|
||||||
|
|
||||||
// Kill ndb utility thread
|
// Kill ndb utility thread
|
||||||
(void) pthread_mutex_lock(&LOCK_ndb_util_thread);
|
(void) pthread_mutex_lock(&LOCK_ndb_util_thread);
|
||||||
DBUG_PRINT("exit",("killing ndb util thread: %lx", ndb_util_thread));
|
DBUG_PRINT("exit",("killing ndb util thread: %lx", ndb_util_thread));
|
||||||
@ -4703,8 +4719,7 @@ bool ndbcluster_end()
|
|||||||
if (g_ndb_cluster_connection)
|
if (g_ndb_cluster_connection)
|
||||||
delete g_ndb_cluster_connection;
|
delete g_ndb_cluster_connection;
|
||||||
g_ndb_cluster_connection= NULL;
|
g_ndb_cluster_connection= NULL;
|
||||||
if (!ndbcluster_inited)
|
|
||||||
DBUG_RETURN(0);
|
|
||||||
hash_free(&ndbcluster_open_tables);
|
hash_free(&ndbcluster_open_tables);
|
||||||
pthread_mutex_destroy(&ndbcluster_mutex);
|
pthread_mutex_destroy(&ndbcluster_mutex);
|
||||||
pthread_mutex_destroy(&LOCK_ndb_util_thread);
|
pthread_mutex_destroy(&LOCK_ndb_util_thread);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user