Send Linux-ha-cvs mailing list submissions to
[email protected]
To subscribe or unsubscribe via the World Wide Web, visit
http://lists.community.tummy.com/mailman/listinfo/linux-ha-cvs
or, via email, send a message with subject or body 'help' to
[EMAIL PROTECTED]
You can reach the person managing the list at
[EMAIL PROTECTED]
When replying, please edit your Subject line so it is more specific
than "Re: Contents of Linux-ha-cvs digest..."
Today's Topics:
1. Linux-HA CVS: lrm by alan from ([email protected])
2. Linux-HA CVS: lrm by alan from ([email protected])
3. Linux-HA CVS: mgmt by zhenh from
([email protected])
----------------------------------------------------------------------
Message: 1
Date: Tue, 27 Dec 2005 14:02:45 -0700 (MST)
From: [email protected]
Subject: [Linux-ha-cvs] Linux-HA CVS: lrm by alan from
To: [EMAIL PROTECTED]
Message-ID: <[EMAIL PROTECTED]>
linux-ha CVS committal
Author : alan
Host :
Project : linux-ha
Module : lrm
Dir : linux-ha/lrm/lrmd
Modified Files:
lrmd.c
Log Message:
Got rid of the static "first_line" variable - it was shared by all operations
which clearly won't work.
===================================================================
RCS file: /home/cvs/linux-ha/linux-ha/lrm/lrmd/lrmd.c,v
retrieving revision 1.198
retrieving revision 1.199
diff -u -3 -r1.198 -r1.199
--- lrmd.c 27 Dec 2005 16:59:15 -0000 1.198
+++ lrmd.c 27 Dec 2005 21:02:44 -0000 1.199
@@ -1,4 +1,4 @@
-/* $Id: lrmd.c,v 1.198 2005/12/27 16:59:15 alan Exp $ */
+/* $Id: lrmd.c,v 1.199 2005/12/27 21:02:44 alan Exp $ */
/*
* Local Resource Manager Daemon
*
@@ -3245,8 +3245,6 @@
static gboolean
handle_pipe_ra_stdout(int fd, gpointer user_data)
{
- /* FIXME!! THIS CANNOT BE A STATIC - you need one per RA! */
- static gboolean first_line = TRUE;
gboolean rc = TRUE;
lrmd_op_t* op = (lrmd_op_t *)user_data;
const char* op_type = NULL;
@@ -3274,12 +3272,14 @@
lrmd_log(LOG_INFO, "RA output: (%s:%s:stdout) %s"
, op->rsc_id, op_type, data);
}
- if (first_line == TRUE) {
- memset(op->first_line_ra_stdout, 0
- , sizeof(op->first_line_ra_stdout));
+ /*
+ * This isn't quite correct yet - there is no idea of a "line"
+ * in the code as it's presently written...
+ * but it probably works OK for now...
+ */
+ if (op->first_line_ra_stdout[0] == EOS) {
strncpy(op->first_line_ra_stdout, data
- , sizeof(op->first_line_ra_stdout) - 1);
- first_line = FALSE;
+ , sizeof(op->first_line_ra_stdout) - 1);
}
g_free(data);
}
@@ -3464,6 +3464,10 @@
}
/*
* $Log: lrmd.c,v $
+ * Revision 1.199 2005/12/27 21:02:44 alan
+ * Got rid of the static "first_line" variable - it was shared by all
operations
+ * which clearly won't work.
+ *
* Revision 1.198 2005/12/27 16:59:15 alan
* Put in a note about a bug in the form of a FIXME
* I can't fix it right this minute. Sorry...
------------------------------
Message: 2
Date: Tue, 27 Dec 2005 15:35:08 -0700 (MST)
From: [email protected]
Subject: [Linux-ha-cvs] Linux-HA CVS: lrm by alan from
To: [EMAIL PROTECTED]
Message-ID: <[EMAIL PROTECTED]>
linux-ha CVS committal
Author : alan
Host :
Project : linux-ha
Module : lrm
Dir : linux-ha/lrm/lrmd
Modified Files:
lrmd.c
Log Message:
Changed one message to not come out except at higher debug levels or in case of
error.
===================================================================
RCS file: /home/cvs/linux-ha/linux-ha/lrm/lrmd/lrmd.c,v
retrieving revision 1.199
retrieving revision 1.200
diff -u -3 -r1.199 -r1.200
--- lrmd.c 27 Dec 2005 21:02:44 -0000 1.199
+++ lrmd.c 27 Dec 2005 22:35:07 -0000 1.200
@@ -1,4 +1,4 @@
-/* $Id: lrmd.c,v 1.199 2005/12/27 21:02:44 alan Exp $ */
+/* $Id: lrmd.c,v 1.200 2005/12/27 22:35:07 alan Exp $ */
/*
* Local Resource Manager Daemon
*
@@ -3127,8 +3127,10 @@
" return code %d (mapped from %d)"
, op_info(op), p->pid, rc, exitcode);
}
- lrmd_log(LOG_INFO, "Resource Agent output: [%s]"
- , op->first_line_ra_stdout);
+ if (rc != EXECRA_OK || debug_level > 1) {
+ lrmd_log(LOG_INFO, "Resource Agent output: [%s]"
+ , op->first_line_ra_stdout);
+ }
}
if (EXECRA_EXEC_UNKNOWN_ERROR == rc || EXECRA_NO_RA == rc) {
if (HA_OK != ha_msg_mod_int(op->msg, F_LRM_OPSTATUS,
@@ -3464,6 +3466,9 @@
}
/*
* $Log: lrmd.c,v $
+ * Revision 1.200 2005/12/27 22:35:07 alan
+ * Changed one message to not come out except at higher debug levels or in
case of error.
+ *
* Revision 1.199 2005/12/27 21:02:44 alan
* Got rid of the static "first_line" variable - it was shared by all
operations
* which clearly won't work.
------------------------------
Message: 3
Date: Wed, 28 Dec 2005 08:13:35 -0700 (MST)
From: [email protected]
Subject: [Linux-ha-cvs] Linux-HA CVS: mgmt by zhenh from
To: [EMAIL PROTECTED]
Message-ID: <[EMAIL PROTECTED]>
linux-ha CVS committal
Author : zhenh
Host :
Project : linux-ha
Module : mgmt
Dir : linux-ha/mgmt/daemon
Modified Files:
mgmt_crm.c
Log Message:
change the way of using pe_working_set_t to avoid memory leak
===================================================================
RCS file: /home/cvs/linux-ha/linux-ha/mgmt/daemon/mgmt_crm.c,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -3 -r1.6 -r1.7
--- mgmt_crm.c 22 Dec 2005 07:21:18 -0000 1.6
+++ mgmt_crm.c 28 Dec 2005 15:13:35 -0000 1.7
@@ -83,14 +83,15 @@
static resource_t* find_resource(GList* rsc_list, const char* id);
static int delete_object(const char* type, const char* entry, const char* id);
static GList* find_xml_node_list(crm_data_t *root, const char *search_path);
-static pe_working_set_t get_data_set(void);
static int refresh_lrm(IPC_Channel *crmd_channel, const char *host_uname);
static int delete_lrm_rsc(IPC_Channel *crmd_channel, const char *host_uname,
const char *rsc_id);
+static pe_working_set_t* get_data_set(void);
+static void free_data_set(pe_working_set_t* data_set);
#define GET_RESOURCE() if (argc != 2) {
\
return cl_strdup(MSG_FAIL);
\
}
\
- rsc = find_resource(data_set.resources, argv[1]);
\
+ rsc = find_resource(data_set->resources, argv[1]);
\
if (rsc == NULL) {
\
return cl_strdup(MSG_FAIL);
\
}
@@ -152,22 +153,25 @@
return 0;
}
-pe_working_set_t
-get_data_set(void) {
- static crm_data_t* cib_xml_copy = NULL;
- pe_working_set_t data_set;
-
- set_working_set_defaults(&data_set);
- if (cib_xml_copy) {
- ha_msg_del(cib_xml_copy);
- }
- cib_xml_copy = get_cib_copy(cib_conn);
- data_set.input = cib_xml_copy;
- data_set.now = new_ha_date(TRUE);
- stage0(&data_set);
+pe_working_set_t*
+get_data_set(void)
+{
+ pe_working_set_t* data_set;
+
+ data_set = (pe_working_set_t*)cl_malloc(sizeof(pe_working_set_t));
+ set_working_set_defaults(data_set);
+ data_set->input = get_cib_copy(cib_conn);
+ data_set->now = new_ha_date(TRUE);
+ stage0(data_set);
return data_set;
}
+void
+free_data_set(pe_working_set_t* data_set)
+{
+ cleanup_calculations(data_set);
+ cl_free(data_set);
+}
/* mgmtd functions */
int
@@ -257,15 +261,15 @@
on_get_crm_config(char* argv[], int argc)
{
char buf [255];
- pe_working_set_t data_set;
+ pe_working_set_t* data_set;
char* ret = cl_strdup(MSG_OK);
data_set = get_data_set();
- ret = mgmt_msg_append(ret, data_set.transition_idle_timeout);
- ret = mgmt_msg_append(ret, data_set.symmetric_cluster?"True":"False");
- ret = mgmt_msg_append(ret, data_set.stonith_enabled?"True":"False");
+ ret = mgmt_msg_append(ret, data_set->transition_idle_timeout);
+ ret = mgmt_msg_append(ret, data_set->symmetric_cluster?"True":"False");
+ ret = mgmt_msg_append(ret, data_set->stonith_enabled?"True":"False");
- switch (data_set.no_quorum_policy) {
+ switch (data_set->no_quorum_policy) {
case no_quorum_freeze:
ret = mgmt_msg_append(ret, "freeze");
break;
@@ -276,9 +280,10 @@
ret = mgmt_msg_append(ret, "ignore");
break;
}
- snprintf(buf, 255, "%d", data_set.default_resource_stickiness);
+ snprintf(buf, 255, "%d", data_set->default_resource_stickiness);
ret = mgmt_msg_append(ret, buf);
- ret = mgmt_msg_append(ret, data_set.have_quorum?"True":"False");
+ ret = mgmt_msg_append(ret, data_set->have_quorum?"True":"False");
+ free_data_set(data_set);
return ret;
}
char*
@@ -317,10 +322,10 @@
node_t* node;
GList* cur;
char* ret;
- pe_working_set_t data_set;
+ pe_working_set_t* data_set;
data_set = get_data_set();
- cur = data_set.nodes;
+ cur = data_set->nodes;
ret = cl_strdup(MSG_OK);
while (cur != NULL) {
node = (node_t*) cur->data;
@@ -329,20 +334,23 @@
}
cur = g_list_next(cur);
}
+ free_data_set(data_set);
return ret;
}
char*
on_get_dc(char* argv[], int argc)
{
- pe_working_set_t data_set;
+ pe_working_set_t* data_set;
data_set = get_data_set();
- if (data_set.dc_node != NULL) {
+ if (data_set->dc_node != NULL) {
char* ret = cl_strdup(MSG_OK);
- ret = mgmt_msg_append(ret, data_set.dc_node->details->uname);
+ ret = mgmt_msg_append(ret, data_set->dc_node->details->uname);
+ free_data_set(data_set);
return ret;
}
+ free_data_set(data_set);
return cl_strdup(MSG_FAIL);
}
@@ -352,30 +360,33 @@
{
node_t* node;
GList* cur;
- pe_working_set_t data_set;
+ pe_working_set_t* data_set;
data_set = get_data_set();
- cur = data_set.nodes;
+ cur = data_set->nodes;
ARGC_CHECK(2);
while (cur != NULL) {
node = (node_t*) cur->data;
- if (node->details->online) {
- if (strncmp(argv[1],node->details->uname,MAX_STRLEN) ==
0) {
- char* ret = cl_strdup(MSG_OK);
- ret = mgmt_msg_append(ret,
node->details->uname);
- ret = mgmt_msg_append(ret,
node->details->online?"True":"False");
- ret = mgmt_msg_append(ret,
node->details->standby?"True":"False");
- ret = mgmt_msg_append(ret,
node->details->unclean?"True":"False");
- ret = mgmt_msg_append(ret,
node->details->shutdown?"True":"False");
- ret = mgmt_msg_append(ret,
node->details->expected_up?"True":"False");
- ret = mgmt_msg_append(ret,
node->details->is_dc?"True":"False");
- ret = mgmt_msg_append(ret,
node->details->type==node_ping?"ping":"member");
-
- return ret;
- }
+ if (!node->details->online) {
+ cur = g_list_next(cur);
+ continue;
+ }
+ if (strncmp(argv[1],node->details->uname,MAX_STRLEN) == 0) {
+ char* ret = cl_strdup(MSG_OK);
+ ret = mgmt_msg_append(ret, node->details->uname);
+ ret = mgmt_msg_append(ret,
node->details->online?"True":"False");
+ ret = mgmt_msg_append(ret,
node->details->standby?"True":"False");
+ ret = mgmt_msg_append(ret,
node->details->unclean?"True":"False");
+ ret = mgmt_msg_append(ret,
node->details->shutdown?"True":"False");
+ ret = mgmt_msg_append(ret,
node->details->expected_up?"True":"False");
+ ret = mgmt_msg_append(ret,
node->details->is_dc?"True":"False");
+ ret = mgmt_msg_append(ret,
node->details->type==node_ping?"ping":"member");
+ free_data_set(data_set);
+ return ret;
}
cur = g_list_next(cur);
}
+ free_data_set(data_set);
return cl_strdup(MSG_FAIL);
}
@@ -384,10 +395,10 @@
{
node_t* node;
GList* cur;
- pe_working_set_t data_set;
+ pe_working_set_t* data_set;
data_set = get_data_set();
- cur = data_set.nodes;
+ cur = data_set->nodes;
ARGC_CHECK(2);
while (cur != NULL) {
node = (node_t*) cur->data;
@@ -401,11 +412,13 @@
ret = mgmt_msg_append(ret, rsc->id);
cur_rsc = g_list_next(cur_rsc);
}
+ free_data_set(data_set);
return ret;
}
}
cur = g_list_next(cur);
}
+ free_data_set(data_set);
return cl_strdup(MSG_FAIL);
}
/* resource functions */
@@ -419,7 +432,7 @@
crm_data_t* cib_object = NULL;
crm_data_t* output;
char xml[MAX_STRLEN];
- pe_working_set_t data_set;
+ pe_working_set_t* data_set;
data_set = get_data_set();
GET_RESOURCE()
@@ -446,9 +459,10 @@
snprintf(xml, MAX_STRLEN, "<master_slave id=\"%s\"/>",
rsc->id);
break;
default:
+ free_data_set(data_set);
return cl_strdup(MSG_FAIL);
}
-
+ free_data_set(data_set);
cib_object = string2xml(xml);
if(cib_object == NULL) {
@@ -462,7 +476,6 @@
return cl_strdup(MSG_FAIL);
}
-
return cl_strdup(MSG_OK);
}
static int
@@ -678,16 +691,17 @@
{
GList* cur;
char* ret;
- pe_working_set_t data_set;
+ pe_working_set_t* data_set;
data_set = get_data_set();
ret = cl_strdup(MSG_OK);
- cur = data_set.resources;
+ cur = data_set->resources;
while (cur != NULL) {
resource_t* rsc = (resource_t*)cur->data;
ret = mgmt_msg_append(ret, rsc->id);
cur = g_list_next(cur);
}
+ free_data_set(data_set);
return ret;
}
/* basic information of resource */
@@ -697,7 +711,7 @@
resource_t* rsc;
char* ret;
struct ha_msg* attrs;
- pe_working_set_t data_set;
+ pe_working_set_t* data_set;
data_set = get_data_set();
GET_RESOURCE()
@@ -708,6 +722,7 @@
ret = mgmt_msg_append(ret, ha_msg_value(attrs, "class"));
ret = mgmt_msg_append(ret, ha_msg_value(attrs, "provider"));
ret = mgmt_msg_append(ret, ha_msg_value(attrs, "type"));
+ free_data_set(data_set);
return ret;
}
@@ -717,7 +732,7 @@
resource_t* rsc;
char* ret;
GList* cur;
- pe_working_set_t data_set;
+ pe_working_set_t* data_set;
data_set = get_data_set();
GET_RESOURCE()
@@ -729,6 +744,7 @@
ret = mgmt_msg_append(ret, node->details->uname);
cur = g_list_next(cur);
}
+ free_data_set(data_set);
return ret;
}
char*
@@ -736,7 +752,7 @@
{
resource_t* rsc;
char* ret;
- pe_working_set_t data_set;
+ pe_working_set_t* data_set;
data_set = get_data_set();
GET_RESOURCE()
@@ -772,6 +788,7 @@
ret = mgmt_msg_append(ret, "master");
break;
}
+ free_data_set(data_set);
return ret;
}
@@ -780,7 +797,7 @@
{
resource_t* rsc;
char* ret;
- pe_working_set_t data_set;
+ pe_working_set_t* data_set;
data_set = get_data_set();
GET_RESOURCE()
@@ -804,7 +821,7 @@
ret = mgmt_msg_append(ret, "master");
break;
}
-
+ free_data_set(data_set);
return ret;
}
/* FIXME: following two structures is copied from CRM */
@@ -848,7 +865,7 @@
resource_t* rsc;
char* ret;
GList* cur = NULL;
- pe_working_set_t data_set;
+ pe_working_set_t* data_set;
data_set = get_data_set();
GET_RESOURCE()
@@ -866,6 +883,7 @@
ret = mgmt_msg_append(ret, rsc->id);
cur = g_list_next(cur);
}
+ free_data_set(data_set);
return ret;
}
@@ -878,7 +896,7 @@
char* ret;
struct ha_msg* attrs;
struct ha_msg* nvpair;
- pe_working_set_t data_set;
+ pe_working_set_t* data_set;
data_set = get_data_set();
GET_RESOURCE()
@@ -886,10 +904,12 @@
ret = cl_strdup(MSG_OK);
attrs = cl_get_struct((struct ha_msg*)rsc->xml, "instance_attributes");
if(attrs == NULL) {
+ free_data_set(data_set);
return ret;
}
attrs = cl_get_struct(attrs, "attributes");
if(attrs == NULL) {
+ free_data_set(data_set);
return ret;
}
for (i = 0; i < attrs->nfields; i++) {
@@ -900,6 +920,7 @@
ret = mgmt_msg_append(ret, ha_msg_value(nvpair,
"value"));
}
}
+ free_data_set(data_set);
return ret;
}
char*
@@ -957,7 +978,7 @@
char* ret;
struct ha_msg* ops;
struct ha_msg* op;
- pe_working_set_t data_set;
+ pe_working_set_t* data_set;
data_set = get_data_set();
GET_RESOURCE()
@@ -965,6 +986,7 @@
ret = cl_strdup(MSG_OK);
ops = cl_get_struct((struct ha_msg*)rsc->xml, "operations");
if (ops == NULL) {
+ free_data_set(data_set);
return ret;
}
for (i = 0; i < ops->nfields; i++) {
@@ -976,6 +998,7 @@
ret = mgmt_msg_append(ret, ha_msg_value(op, "timeout"));
}
}
+ free_data_set(data_set);
return ret;
}
char*
@@ -1032,7 +1055,7 @@
char* ret;
clone_variant_data_t* clone_data;
char buf[MAX_STRLEN];
- pe_working_set_t data_set;
+ pe_working_set_t* data_set;
data_set = get_data_set();
GET_RESOURCE()
@@ -1045,6 +1068,7 @@
ret = mgmt_msg_append(ret, buf);
snprintf(buf, MAX_STRLEN, "%d", clone_data->clone_node_max);
ret = mgmt_msg_append(ret, buf);
+ free_data_set(data_set);
return ret;
}
char*
@@ -1086,7 +1110,7 @@
const char * master_max_s;
const char * master_node_max_s;
char buf[MAX_STRLEN];
- pe_working_set_t data_set;
+ pe_working_set_t* data_set;
data_set = get_data_set();
GET_RESOURCE()
@@ -1104,6 +1128,7 @@
ret = mgmt_msg_append(ret, buf);
ret = mgmt_msg_append(ret, master_max_s);
ret = mgmt_msg_append(ret, master_node_max_s);
+ free_data_set(data_set);
return ret;
}
char*
@@ -1147,14 +1172,15 @@
GList* list;
GList* cur;
crm_data_t* cos = NULL;
- pe_working_set_t data_set;
+ pe_working_set_t* data_set;
const char* path[] = {"configuration","constraints"}
ARGC_CHECK(2);
data_set = get_data_set();
- cos = find_xml_node_nested(data_set.input, path, 2);
+ cos = find_xml_node_nested(data_set->input, path, 2);
if (cos == NULL) {
+ free_data_set(data_set);
return cl_strdup(MSG_FAIL);
}
ret = cl_strdup(MSG_OK);
@@ -1167,6 +1193,7 @@
cur = g_list_next(cur);
}
g_list_free(list);
+ free_data_set(data_set);
return ret;
}
@@ -1180,13 +1207,14 @@
GList* expr_list, *expr_cur;
crm_data_t* cos = NULL;
- pe_working_set_t data_set;
+ pe_working_set_t* data_set;
const char* path[] = {"configuration","constraints"}
ARGC_CHECK(3);
data_set = get_data_set();
- cos = find_xml_node_nested(data_set.input, path, 2);
+ cos = find_xml_node_nested(data_set->input, path, 2);
if (cos == NULL) {
+ free_data_set(data_set);
return cl_strdup(MSG_FAIL);
}
ret = cl_strdup(MSG_OK);
@@ -1229,6 +1257,7 @@
cur = g_list_next(cur);
}
g_list_free(list);
+ free_data_set(data_set);
return ret;
}
char*
------------------------------
_______________________________________________
Linux-ha-cvs mailing list
[email protected]
http://lists.community.tummy.com/mailman/listinfo/linux-ha-cvs
End of Linux-ha-cvs Digest, Vol 25, Issue 73
********************************************