Send Linux-ha-cvs mailing list submissions to
        linux-ha-cvs@lists.linux-ha.org

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: lib by andrew from 
      (linux-ha-cvs@lists.linux-ha.org)
   2. Linux-HA CVS: crm by andrew from 
      (linux-ha-cvs@lists.linux-ha.org)


----------------------------------------------------------------------

Message: 1
Date: Thu,  6 Jul 2006 03:30:28 -0600 (MDT)
From: linux-ha-cvs@lists.linux-ha.org
Subject: [Linux-ha-cvs] Linux-HA CVS: lib by andrew from 
To: [EMAIL PROTECTED]
Message-ID: <[EMAIL PROTECTED]>

linux-ha CVS committal

Author  : andrew
Host    : 
Project : linux-ha
Module  : lib

Dir     : linux-ha/lib/crm/transition


Modified Files:
        actions.c 


Log Message:
Dont delete messages in the send_(ipc|ha)_helpers to make memory leak 
  checking easier
Compensate for CIB configuration growth 
  - enables tracking of almost all memory (de)allocations in the CIB

===================================================================
RCS file: /home/cvs/linux-ha/linux-ha/lib/crm/transition/actions.c,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -3 -r1.3 -r1.4
--- actions.c   31 Mar 2006 11:50:24 -0000      1.3
+++ actions.c   6 Jul 2006 09:30:27 -0000       1.4
@@ -1,4 +1,4 @@
-/* $Id: actions.c,v 1.3 2006/03/31 11:50:24 andrew Exp $ */
+/* $Id: actions.c,v 1.4 2006/07/06 09:30:27 andrew Exp $ */
 /* 
  * Copyright (C) 2004 Andrew Beekhof <[EMAIL PROTECTED]>
  * 
@@ -190,6 +190,7 @@
        crm_xml_add(cmd, XML_ATTR_TRANSITION_KEY, counter);
        ret = send_ipc_message(crm_ch, cmd);
        crm_free(counter);
+       crm_msg_del(cmd);
        
        value = g_hash_table_lookup(action->params, XML_ATTR_TE_NOWAIT);
        if(ret == FALSE) {
@@ -354,6 +355,7 @@
                ha_msg_add(cmd, F_CRM_SYS_FROM, CRM_SYSTEM_TENGINE);
                ha_msg_addstruct(cmd, crm_element_name(state), state);
                send_ipc_message(crm_ch, cmd);
+               crm_msg_del(cmd);
        }
 #endif
        free_xml(fragment);
@@ -432,6 +434,7 @@
 #else
        crm_log_message(LOG_INFO, cmd);
 #endif
+       crm_msg_del(cmd);
        
        action->invoked = TRUE;
        value = g_hash_table_lookup(action->params, XML_ATTR_TE_NOWAIT);




------------------------------

Message: 2
Date: Thu,  6 Jul 2006 03:30:28 -0600 (MDT)
From: linux-ha-cvs@lists.linux-ha.org
Subject: [Linux-ha-cvs] Linux-HA CVS: crm by andrew from 
To: [EMAIL PROTECTED]
Message-ID: <[EMAIL PROTECTED]>

linux-ha CVS committal

Author  : andrew
Host    : 
Project : linux-ha
Module  : crm

Dir     : linux-ha/crm/cib


Modified Files:
        callbacks.c io.c main.c messages.c notify.c 


Log Message:
Dont delete messages in the send_(ipc|ha)_helpers to make memory leak 
  checking easier
Compensate for CIB configuration growth 
  - enables tracking of almost all memory (de)allocations in the CIB

===================================================================
RCS file: /home/cvs/linux-ha/linux-ha/crm/cib/callbacks.c,v
retrieving revision 1.128
retrieving revision 1.129
diff -u -3 -r1.128 -r1.129
--- callbacks.c 5 Jul 2006 15:11:16 -0000       1.128
+++ callbacks.c 6 Jul 2006 09:30:28 -0000       1.129
@@ -1,4 +1,4 @@
-/* $Id: callbacks.c,v 1.128 2006/07/05 15:11:16 andrew Exp $ */
+/* $Id: callbacks.c,v 1.129 2006/07/06 09:30:28 andrew Exp $ */
 /* 
  * Copyright (C) 2004 Andrew Beekhof <[EMAIL PROTECTED]>
  * 
@@ -282,6 +282,7 @@
 enum cib_errors cib_get_operation_id(const HA_Message * msg, int *operation);
 
 gboolean cib_process_disconnect(IPC_Channel *channel, cib_client_t 
*cib_client);
+int num_clients = 0;
 
 static void
 cib_ipc_connection_destroy(gpointer user_data)
@@ -303,10 +304,14 @@
        }
        
        crm_debug_3("Destroying %s (%p)", cib_client->name, user_data);
+       num_clients--;
+       crm_debug("Num unfree'd clients: %d", num_clients);
+       START_stat_free_op();
        crm_free(cib_client->name);
        crm_free(cib_client->callback_id);
        crm_free(cib_client->id);
        crm_free(cib_client);
+       END_stat_free_op();
        crm_debug_4("Freed the cib client");
 
        return;
@@ -342,7 +347,10 @@
                return NULL;
                
        } else {
+               START_stat_free_op();
                crm_malloc0(new_client, sizeof(cib_client_t));
+               END_stat_free_op();
+               num_clients++;
                new_client->channel = channel;
                new_client->channel_name = channel_name;
 
@@ -368,8 +376,13 @@
 gboolean
 cib_client_connect_rw_synch(IPC_Channel *channel, gpointer user_data)
 {
-       cib_client_t *new_client = cib_client_connect_common(
+       cl_mem_stats_t saved_stats;
+       cib_client_t *new_client = NULL;
+       crm_save_mem_stats(__PRETTY_FUNCTION__, &saved_stats);
+       new_client = cib_client_connect_common(
                channel, cib_channel_ro_synchronous, 
cib_rw_synchronous_callback);
+
+       crm_diff_mem_stats(LOG_ERR, __PRETTY_FUNCTION__, &saved_stats);
        if(new_client == NULL) {
                return FALSE;
        }
@@ -379,8 +392,13 @@
 gboolean
 cib_client_connect_ro_synch(IPC_Channel *channel, gpointer user_data)
 {
-       cib_client_t *new_client = cib_client_connect_common(
+       cl_mem_stats_t saved_stats;
+       cib_client_t *new_client = NULL;
+       crm_save_mem_stats(__PRETTY_FUNCTION__, &saved_stats);
+       new_client = cib_client_connect_common(
                channel, cib_channel_ro_synchronous, 
cib_ro_synchronous_callback);
+
+       crm_diff_mem_stats(LOG_ERR, __PRETTY_FUNCTION__, &saved_stats);
        if(new_client == NULL) {
                return FALSE;
        }
@@ -395,6 +413,8 @@
        cib_client_t *new_client = NULL;
        char uuid_str[UU_UNPARSE_SIZEOF];
        gboolean (*callback)(IPC_Channel *channel, gpointer user_data);
+       cl_mem_stats_t saved_stats;
+       crm_save_mem_stats(__PRETTY_FUNCTION__, &saved_stats);
        
        callback = cib_ro_callback;
        if(safe_str_eq(user_data, cib_channel_rw)) {
@@ -412,18 +432,28 @@
        
        cl_uuid_generate(&client_id);
        cl_uuid_unparse(&client_id, uuid_str);
+
+       START_stat_free_op();
+       CRM_CHECK(new_client->id == NULL, crm_free(new_client->id));
        new_client->id = crm_strdup(uuid_str);
+       END_stat_free_op();
        
        cl_uuid_generate(&client_id);
        cl_uuid_unparse(&client_id, uuid_str);
+
+       START_stat_free_op();
+       CRM_CHECK(new_client->callback_id == NULL, 
crm_free(new_client->callback_id));
        new_client->callback_id = crm_strdup(uuid_str);
+       END_stat_free_op();
        
        /* make sure we can find ourselves later for sync calls
         * redirected to the master instance
         */
+       START_stat_free_op();
        g_hash_table_insert(
                client_list, new_client->id, new_client);
-
+       END_stat_free_op();
+       
        reg_msg = ha_msg_new(3);
        ha_msg_add(reg_msg, F_CIB_OPERATION, CRM_OP_REGISTER);
        ha_msg_add(reg_msg, F_CIB_CLIENTID,  new_client->id);
@@ -431,15 +461,22 @@
                reg_msg, F_CIB_CALLBACK_TOKEN, new_client->callback_id);
        
        send_ipc_message(channel, reg_msg);             
+       crm_msg_del(reg_msg);
        
+       crm_diff_mem_stats(LOG_ERR, __PRETTY_FUNCTION__, &saved_stats);
        return TRUE;
 }
 
 gboolean
 cib_client_connect_null(IPC_Channel *channel, gpointer user_data)
 {
-       cib_client_t *new_client = cib_client_connect_common(
+       cl_mem_stats_t saved_stats;
+       cib_client_t *new_client = NULL;
+       crm_save_mem_stats(__PRETTY_FUNCTION__, &saved_stats);
+       new_client = cib_client_connect_common(
                channel, cib_channel_callback, cib_null_callback);
+
+       crm_diff_mem_stats(LOG_ERR, __PRETTY_FUNCTION__, &saved_stats);
        if(new_client == NULL) {
                return FALSE;
        }
@@ -450,7 +487,10 @@
 cib_rw_callback(IPC_Channel *channel, gpointer user_data)
 {
        gboolean result = FALSE;
+       cl_mem_stats_t saved_stats;
+       crm_save_mem_stats(__PRETTY_FUNCTION__, &saved_stats);
        result = cib_common_callback(channel, user_data, FALSE, TRUE);
+       crm_diff_mem_stats(LOG_ERR, __PRETTY_FUNCTION__, &saved_stats);
        return result;
 }
 
@@ -459,7 +499,10 @@
 cib_ro_synchronous_callback(IPC_Channel *channel, gpointer user_data)
 {
        gboolean result = FALSE;
+       cl_mem_stats_t saved_stats;
+       crm_save_mem_stats(__PRETTY_FUNCTION__, &saved_stats);
        result = cib_common_callback(channel, user_data, TRUE, FALSE);
+       crm_diff_mem_stats(LOG_ERR, __PRETTY_FUNCTION__, &saved_stats);
        return result;
 }
 
@@ -467,7 +510,10 @@
 cib_rw_synchronous_callback(IPC_Channel *channel, gpointer user_data)
 {
        gboolean result = FALSE;
+       cl_mem_stats_t saved_stats;
+       crm_save_mem_stats(__PRETTY_FUNCTION__, &saved_stats);
        result = cib_common_callback(channel, user_data, TRUE, TRUE);
+       crm_diff_mem_stats(LOG_ERR, __PRETTY_FUNCTION__, &saved_stats);
        return result;
 }
 
@@ -475,7 +521,10 @@
 cib_ro_callback(IPC_Channel *channel, gpointer user_data)
 {
        gboolean result = FALSE;
+       cl_mem_stats_t saved_stats;
+       crm_save_mem_stats(__PRETTY_FUNCTION__, &saved_stats);
        result = cib_common_callback(channel, user_data, FALSE, FALSE);
+       crm_diff_mem_stats(LOG_ERR, __PRETTY_FUNCTION__, &saved_stats);
        return result;
 }
 
@@ -484,12 +533,15 @@
 {
        gboolean keep_connection = TRUE;
        HA_Message *op_request = NULL;
+       HA_Message *registered = NULL;
        cib_client_t *cib_client = user_data;
        cib_client_t *hash_client = NULL;
        const char *type = NULL;
        const char *uuid_ticket = NULL;
        const char *client_name = NULL;
        gboolean register_failed = FALSE;
+       cl_mem_stats_t saved_stats;
+       crm_save_mem_stats(__PRETTY_FUNCTION__, &saved_stats);
 
        if(cib_client == NULL) {
                crm_err("Discarding IPC message from unknown source"
@@ -498,6 +550,8 @@
        }
        
        while(IPC_ISRCONN(channel)) {
+               crm_msg_del(op_request);
+
                if(channel->ops->is_message_pending(channel) == 0) {
                        break;
                }
@@ -539,7 +593,6 @@
                } else if(safe_str_neq(type, CRM_OP_REGISTER) ) {
                        crm_warn("Discarding IPC message from %s on callback 
channel",
                                 cib_client->id);
-                       crm_msg_del(op_request);
                        continue;
                }
 
@@ -571,10 +624,14 @@
                        return FALSE;
                }
 
+               START_stat_free_op();
+               CRM_CHECK(cib_client->id == NULL, crm_free(cib_client->id));
+               CRM_CHECK(cib_client->name == NULL, crm_free(cib_client->name));
                cib_client->id   = crm_strdup(uuid_ticket);
                cib_client->name = crm_strdup(client_name);
-
                g_hash_table_insert(client_list, cib_client->id, cib_client);
+               END_stat_free_op();
+
                crm_debug_2("Registered %s on %s channel",
                            cib_client->id, cib_client->channel_name);
 
@@ -583,26 +640,27 @@
                         * Enable now to avoid timing issues
                         */
                        cib_client->diffs = TRUE;
-               }
-               
-               crm_msg_del(op_request);
+               }               
 
-               op_request = ha_msg_new(2);
-               ha_msg_add(op_request, F_CIB_OPERATION, CRM_OP_REGISTER);
-               ha_msg_add(op_request, F_CIB_CLIENTID,  cib_client->id);
+               registered = ha_msg_new(2);
+               ha_msg_add(registered, F_CIB_OPERATION, CRM_OP_REGISTER);
+               ha_msg_add(registered, F_CIB_CLIENTID,  cib_client->id);
                
-               send_ipc_message(channel, op_request);
+               send_ipc_message(channel, registered);
+               crm_msg_del(registered);
 
                if(channel->ch_status == IPC_CONNECT) {
                        break;
                }
        }
+       crm_msg_del(op_request);
 
        if(channel->ch_status != IPC_CONNECT) {
                crm_debug_2("Client disconnected");
                keep_connection = cib_process_disconnect(channel, cib_client);  
        }
        
+       crm_diff_mem_stats(LOG_ERR, __PRETTY_FUNCTION__, &saved_stats);
        return keep_connection;
 }
 
@@ -646,7 +704,7 @@
        call_stop = time_longclock();
        cib_call_time += (call_stop - call_start);
 
-       crm_diff_mem_stats(LOG_WARNING, __PRETTY_FUNCTION__, &saved_stats);
+       crm_diff_mem_stats(LOG_ERR, __PRETTY_FUNCTION__, &saved_stats);
 }
 
 gboolean
@@ -655,8 +713,9 @@
 {
        int lpc = 0;
        HA_Message *op_request = NULL;
-
        gboolean keep_channel = TRUE;
+       cl_mem_stats_t saved_stats;
+       crm_save_mem_stats(__PRETTY_FUNCTION__, &saved_stats);
 
        
        if(cib_client == NULL) {
@@ -664,6 +723,7 @@
                return FALSE;
        }
 
+       START_stat_free_op();
        if(cib_client->name == NULL) {
                cib_client->name = crm_itoa(channel->farside_pid);
        }
@@ -671,6 +731,7 @@
                cib_client->id = crm_strdup(cib_client->name);
                g_hash_table_insert(client_list, cib_client->id, cib_client);
        }
+       END_stat_free_op();
        
        crm_debug_2("Callback for %s on %s channel",
                    cib_client->id, cib_client->channel_name);
@@ -696,9 +757,7 @@
                cib_common_callback_worker(
                        op_request, cib_client, force_synchronous, privileged);
 
-               crm_debug_3("Cleaning up request");
                crm_msg_del(op_request);
-               op_request = NULL;              
 
                if(channel->ch_status == IPC_CONNECT) {
                        break;
@@ -712,7 +771,7 @@
                keep_channel = cib_process_disconnect(channel, cib_client);     
        }
 
-
+       crm_diff_mem_stats(LOG_ERR, __PRETTY_FUNCTION__, &saved_stats);
        return keep_channel;
 }
 
@@ -741,7 +800,6 @@
        crm_debug_3("Sending callback to request originator");
        if(client_obj == NULL) {
                local_rc = cib_reply_failed;
-               ha_msg_del(client_reply);
                
        } else {
                const char *client_id = client_obj->callback_id;
@@ -754,9 +812,8 @@
                        client_id = client_obj->id;
                }
                local_rc = send_via_callback_channel(client_reply, client_id);
-               
-               client_reply = NULL;
        } 
+       ha_msg_del(client_reply);
        
        if(local_rc != cib_ok) {
                crm_warn("%sSync reply to %s failed: %s",
@@ -915,7 +972,8 @@
 }
 
 static void
-send_peer_reply(HA_Message *msg, crm_data_t *result_diff, const char 
*originator, gboolean broadcast)
+send_peer_reply(
+       HA_Message *msg, crm_data_t *result_diff, const char *originator, 
gboolean broadcast)
 {
        cl_mem_stats_t saved_stats;
        HA_Message *reply_copy = NULL;
@@ -988,6 +1046,9 @@
        const char *host       = cl_get_string(request, F_CIB_HOST);
        const char *update     = cl_get_string(request, F_CIB_GLOBAL_UPDATE);
 
+       cl_mem_stats_t saved_stats;
+       crm_save_mem_stats(__PRETTY_FUNCTION__, &saved_stats);
+       
        crm_debug_4("%s Processing msg %s",
                  cib_our_uname, cl_get_string(request, F_SEQ));
 
@@ -1126,6 +1187,8 @@
        crm_msg_del(op_reply);
        free_xml(result_diff);
 
+       crm_diff_mem_stats(LOG_ERR, __PRETTY_FUNCTION__, &saved_stats);
+
        return; 
 }
 
@@ -1232,9 +1295,7 @@
                }
 
                if(rc == cib_ok) {
-                       START_stat_free_op();
                        result_cib = copy_xml(current_cib);
-                       END_stat_free_op();
 
                        rc = cib_server_ops[call_type].fn(
                                op, call_options, section, input,
@@ -1269,9 +1330,7 @@
                }
 
                if(rc != cib_ok) {
-                       START_stat_free_op();
                        free_xml(result_cib);
-                       END_stat_free_op();
                        
                } else if(activateCibXml(result_cib, CIB_FILENAME) != 0){
                        crm_warn("Activation failed");
@@ -1316,6 +1375,8 @@
        cib_client_t *hash_client = NULL;
        GList *list_item = NULL;
        enum cib_errors rc = cib_ok;
+       cl_mem_stats_t saved_stats;
+       crm_save_mem_stats(__PRETTY_FUNCTION__, &saved_stats);
        
        crm_debug_3("Delivering msg %p to client %s", msg, token);
 
@@ -1374,15 +1435,9 @@
                                hash_client->name, token);
                        rc = cib_reply_failed;
                }
-
-       } else {
-               /* be consistent...
-                * send_ipc_message() will free the message, so we should do
-                *  so manually if we dont try to send it.
-                */
-               crm_msg_del(msg);
        }
        
+       crm_diff_mem_stats(LOG_ERR, __PRETTY_FUNCTION__, &saved_stats);
        return rc;
 }
 
@@ -1472,12 +1527,16 @@
                        client->delegated_calls, msg);
 
                crm_msg_del(msg);
+               crm_msg_del(reply);
        }
 }
 
 gboolean
 cib_process_disconnect(IPC_Channel *channel, cib_client_t *cib_client)
 {
+       cl_mem_stats_t saved_stats;
+       crm_save_mem_stats(__PRETTY_FUNCTION__, &saved_stats);
+
        if (channel == NULL) {
                CRM_DEV_ASSERT(cib_client == NULL);
                
@@ -1492,10 +1551,12 @@
                            cib_client->id);
                
                if(cib_client->id != NULL) {
+                       START_stat_free_op();
                        if(!g_hash_table_remove(client_list, cib_client->id)) {
                                crm_err("Client %s not found in the hashtable",
                                        cib_client->name);
                        }
+                       END_stat_free_op();
                }               
        }
 
@@ -1504,6 +1565,7 @@
                initiate_exit();
        }
        
+       crm_diff_mem_stats(LOG_ERR, __PRETTY_FUNCTION__, &saved_stats);
        return FALSE;
 }
 
@@ -1511,6 +1573,8 @@
 cib_ha_dispatch(IPC_Channel *channel, gpointer user_data)
 {
        ll_cluster_t *hb_cluster = (ll_cluster_t*)user_data;
+       cl_mem_stats_t saved_stats;
+       crm_save_mem_stats(__PRETTY_FUNCTION__, &saved_stats);
 
        crm_debug_3("Invoked");
        if(IPC_ISRCONN(channel)) {
@@ -1521,11 +1585,8 @@
                hb_cluster->llc_ops->rcvmsg(hb_cluster, 0);
        }
        
-       if (channel->ch_status != IPC_CONNECT) {
-               return FALSE;
-       }
-       
-       return TRUE;
+       crm_diff_mem_stats(LOG_ERR, __PRETTY_FUNCTION__, &saved_stats);
+       return (channel->ch_status == IPC_CONNECT);
 }
 
 void
@@ -1536,6 +1597,8 @@
        const char *originator = cl_get_string(msg, F_ORIG);
        const char *seq        = cl_get_string(msg, F_SEQ);
        const char *op         = cl_get_string(msg, F_CIB_OPERATION);
+       cl_mem_stats_t saved_stats;
+       crm_save_mem_stats(__PRETTY_FUNCTION__, &saved_stats);
 
        crm_log_message_adv(LOG_MSG, "Peer[inbound]", msg);
        crm_debug_2("Peer %s message (%s) from %s", op, seq, originator);
@@ -1571,6 +1634,7 @@
        
        cib_process_request(msg, FALSE, TRUE, TRUE, NULL);
 
+       crm_diff_mem_stats(LOG_ERR, __PRETTY_FUNCTION__, &saved_stats);
        return;
 }
 
===================================================================
RCS file: /home/cvs/linux-ha/linux-ha/crm/cib/io.c,v
retrieving revision 1.72
retrieving revision 1.73
diff -u -3 -r1.72 -r1.73
--- io.c        4 Jul 2006 14:07:42 -0000       1.72
+++ io.c        6 Jul 2006 09:30:28 -0000       1.73
@@ -1,4 +1,4 @@
-/* $Id: io.c,v 1.72 2006/07/04 14:07:42 andrew Exp $ */
+/* $Id: io.c,v 1.73 2006/07/06 09:30:28 andrew Exp $ */
 /* 
  * Copyright (C) 2004 Andrew Beekhof <[EMAIL PROTECTED]>
  * 
@@ -36,6 +36,7 @@
 
 #include <cibio.h>
 #include <crm/cib.h>
+#include <crm/common/util.h>
 #include <crm/msg_xml.h>
 #include <crm/common/xml.h>
 #include <crm/common/util.h>
@@ -508,6 +509,9 @@
        crm_data_t *saved_cib = get_the_CIB();
        const char *ignore_dtd = NULL;
 
+       long new_bytes, new_allocs, new_frees;
+       long old_bytes, old_allocs, old_frees;
+
        crm_log_xml_debug_4(new_cib, "Attempting to activate CIB");
 
        CRM_ASSERT(new_cib != saved_cib);
@@ -550,14 +554,22 @@
        } else if(cib_writes_enabled && cib_status == cib_ok) {
                crm_debug_2("Triggering CIB write");
                G_main_set_trigger(cib_writer);
+
+               crm_xml_nbytes(new_cib, &new_bytes, &new_allocs, &new_frees);
+               crm_xml_nbytes(saved_cib, &old_bytes, &old_allocs, &old_frees);
+
+               if(new_bytes != old_bytes) {
+                       crm_info("CIB size is %ld bytes (was %ld)", new_bytes, 
old_bytes);
+               }       
+               crm_adjust_mem_stats(
+                       new_bytes - old_bytes, new_allocs - old_allocs, 
new_frees - old_frees);
        }
        
        if(the_cib != saved_cib && the_cib != new_cib) {
                CRM_DEV_ASSERT(error_code != cib_ok);
                CRM_DEV_ASSERT(the_cib == NULL);
        }
-
-       START_stat_free_op();
+       
        if(the_cib != new_cib) {
                free_xml(new_cib);
                CRM_DEV_ASSERT(error_code != cib_ok);
@@ -566,7 +578,6 @@
        if(the_cib != saved_cib) {
                free_xml(saved_cib);
        }
-       END_stat_free_op();
        
        return error_code;
     
@@ -704,11 +715,9 @@
 {
        gboolean did_update = FALSE;
 
-       START_stat_free_op();
        did_update = did_update || update_quorum(xml_obj);
        did_update = did_update || set_transition(xml_obj);
        did_update = did_update || set_connected_peers(xml_obj);
-       END_stat_free_op();
        
        if(did_update) {
                do_crm_log(LOG_DEBUG, file, fn, "Counters updated");
===================================================================
RCS file: /home/cvs/linux-ha/linux-ha/crm/cib/main.c,v
retrieving revision 1.46
retrieving revision 1.47
diff -u -3 -r1.46 -r1.47
--- main.c      23 Jun 2006 12:30:38 -0000      1.46
+++ main.c      6 Jul 2006 09:30:28 -0000       1.47
@@ -1,4 +1,4 @@
-/* $Id: main.c,v 1.46 2006/06/23 12:30:38 andrew Exp $ */
+/* $Id: main.c,v 1.47 2006/07/06 09:30:28 andrew Exp $ */
 /* 
  * Copyright (C) 2004 Andrew Beekhof <[EMAIL PROTECTED]>
  * 
@@ -371,7 +371,6 @@
        exit(exit_status);
 }
 
-
 gboolean
 cib_register_ha(ll_cluster_t *hb_cluster, const char *client_name)
 {
===================================================================
RCS file: /home/cvs/linux-ha/linux-ha/crm/cib/messages.c,v
retrieving revision 1.83
retrieving revision 1.84
diff -u -3 -r1.83 -r1.84
--- messages.c  4 Jul 2006 14:07:42 -0000       1.83
+++ messages.c  6 Jul 2006 09:30:28 -0000       1.84
@@ -1,4 +1,4 @@
-/* $Id: messages.c,v 1.83 2006/07/04 14:07:42 andrew Exp $ */
+/* $Id: messages.c,v 1.84 2006/07/06 09:30:28 andrew Exp $ */
 /* 
  * Copyright (C) 2004 Andrew Beekhof <[EMAIL PROTECTED]>
  * 
@@ -284,8 +284,6 @@
        char *new_value = NULL;
        char *old_value = NULL;
        int  int_value  = -1;
-
-       START_stat_free_op();
        
        if(reset == FALSE && crm_element_value(xml_obj, field) != NULL) {
                old_value = crm_element_value_copy(xml_obj, field);
@@ -301,10 +299,10 @@
        crm_debug_4("%s %d(%s)->%s",
                  field, int_value, crm_str(old_value), crm_str(new_value));
        crm_xml_add(xml_obj, field, new_value);
+
        crm_free(new_value);
        crm_free(old_value);
 
-       END_stat_free_op();     
        return cib_ok;
 }
 
@@ -551,16 +549,15 @@
                }
                sync_in_progress = 0;
                free_xml(*result_cib);
-       START_stat_free_op();
                *result_cib = copy_xml(input);
-       END_stat_free_op();
                send_notify = TRUE;
                
        } else {
                crm_data_t *obj_root = NULL;
+               gboolean ok = TRUE;
                obj_root = get_object_root(section, *result_cib);
-       START_stat_free_op();
-               if(replace_xml_child(NULL, obj_root, input, FALSE) == FALSE) {
+               ok = replace_xml_child(NULL, obj_root, input, FALSE);
+               if(ok == FALSE) {
                        crm_debug_2("No matching object to replace");
                        result = cib_NOTEXISTS;
 
@@ -570,7 +567,6 @@
                } else if(safe_str_eq(section, XML_CIB_TAG_STATUS)) {
                        send_notify = TRUE;
                }
-       END_stat_free_op();
        }
        
        if(send_notify) {
@@ -601,11 +597,9 @@
        crm_validate_data(input);
        crm_validate_data(*result_cib);
 
-       START_stat_free_op();
        if(replace_xml_child(NULL, obj_root, input, TRUE) == FALSE) {
                crm_debug_2("No matching object to delete");
        }
-       END_stat_free_op();
        
        return cib_ok;
 }
@@ -629,12 +623,9 @@
        crm_validate_data(input);
        crm_validate_data(*result_cib);
 
-       START_stat_free_op();
        if(update_xml_child(obj_root, input) == FALSE) {
-               END_stat_free_op();
                return cib_NOTEXISTS;           
        }
-       END_stat_free_op();
        
        return cib_ok;
 }
@@ -700,9 +691,7 @@
                        XML_CIB_TAG_CRMCONFIG
                };
 
-       START_stat_free_op();
                copy_in_properties(*result_cib, input);
-       END_stat_free_op();
        
                for(lpc = 0; lpc < DIMOF(type_list); lpc++) {
                        type = type_list[lpc];
@@ -735,7 +724,6 @@
 }
 
 #define cib_update_xml_macro(parent, xml_update)                       \
-       START_stat_free_op();                                           \
        if(operation == CIB_UPDATE_OP_DELETE) {                         \
                rc = delete_cib_object(parent, xml_update);             \
                update_results(failed, xml_update, operation, rc);      \
@@ -748,7 +736,6 @@
                rc = add_cib_object(parent, xml_update);                \
                update_results(failed, xml_update, operation, rc);      \
        }                                                               \
-       END_stat_free_op();
 
 enum cib_errors
 updateList(crm_data_t *local_cib, crm_data_t *xml_section, crm_data_t *failed,
===================================================================
RCS file: /home/cvs/linux-ha/linux-ha/crm/cib/notify.c,v
retrieving revision 1.36
retrieving revision 1.37
diff -u -3 -r1.36 -r1.37
--- notify.c    17 Feb 2006 13:20:03 -0000      1.36
+++ notify.c    6 Jul 2006 09:30:28 -0000       1.37
@@ -1,4 +1,4 @@
-/* $Id: notify.c,v 1.36 2006/02/17 13:20:03 andrew Exp $ */
+/* $Id: notify.c,v 1.37 2006/07/06 09:30:28 andrew Exp $ */
 /* 
  * Copyright (C) 2004 Andrew Beekhof <[EMAIL PROTECTED]>
  * 
@@ -71,6 +71,8 @@
 
        int qlen = 0;
        int max_qlen = 0;
+       cl_mem_stats_t saved_stats;
+       crm_save_mem_stats(__PRETTY_FUNCTION__, &saved_stats);
        
        CRM_DEV_ASSERT(client != NULL);
        CRM_DEV_ASSERT(update_msg != NULL);
@@ -110,7 +112,11 @@
        ipc_client = client->channel;
        qlen = ipc_client->send_queue->current_qlen;
        max_qlen = ipc_client->send_queue->max_qlen;
-       
+
+#if 1
+       /* get_chan_status() causes memory to be allocated that isnt free'd
+        *   until the message is read (which messes up the memory stats) 
+        */
        if(ipc_client->ops->get_chan_status(ipc_client) != IPC_CONNECT) {
                crm_debug_2("Skipping notification to disconnected"
                            " client %s/%s", client->name, client->id);
@@ -134,7 +140,9 @@
                }
 
                /* these are critical */
-       } else if(client->diffs && is_diff) {
+       } else
+#endif
+               if(client->diffs && is_diff) {
                do_send = TRUE;
 
        } else if(client->confirmations && is_confirm) {
@@ -145,7 +153,6 @@
        }
 
        if(do_send) {
-
                crm_debug_2("Notifying client %s/%s of %s update (queue=%d)",
                            client->name, client->channel_name, type, qlen);
 
@@ -155,20 +162,16 @@
                                 is_confirm?"Confirmation":is_post?"Post":"Pre",
                                 client->name, client->id);
                        
-               } else {
-                       HA_Message *msg_copy = ha_msg_copy(update_msg);
-
-                       if(crm_send_ipc_message(
-                                  ipc_client, msg_copy, TRUE) == FALSE) {
-                               crm_warn("Notification of client %s/%s failed",
-                                        client->name, client->id);
-                       }
+               } else if(send_ipc_message(ipc_client, update_msg) == FALSE) {
+                       crm_warn("Notification of client %s/%s failed",
+                                client->name, client->id);
                }
                
        } else {
                crm_debug_3("Client %s/%s not interested in %s notifications",
                            client->name, client->channel_name, type);  
        }
+       crm_diff_mem_stats(LOG_DEBUG, __PRETTY_FUNCTION__, &saved_stats);
 }
 
 void
@@ -178,6 +181,8 @@
        HA_Message *update_msg = NULL;
        const char *type = NULL;
        const char *id = NULL;
+       cl_mem_stats_t saved_stats;
+       crm_save_mem_stats(__PRETTY_FUNCTION__, &saved_stats);
 
        update_msg = ha_msg_new(6);
 
@@ -221,6 +226,7 @@
        }
                
        crm_msg_del(update_msg);
+       crm_diff_mem_stats(LOG_ERR, __PRETTY_FUNCTION__, &saved_stats);
 }
 
 void
@@ -245,6 +251,8 @@
        int del_admin_epoch = 0;
 
        int log_level = LOG_INFO;
+       cl_mem_stats_t saved_stats;
+       crm_save_mem_stats(__PRETTY_FUNCTION__, &saved_stats);
        
        if(diff == NULL) {
                return;
@@ -275,6 +283,7 @@
        }
        
        do_cib_notify(options, op, update, result, diff, T_CIB_DIFF_NOTIFY);
+       crm_diff_mem_stats(LOG_ERR, __PRETTY_FUNCTION__, &saved_stats);
 }
 
 void
@@ -382,6 +391,8 @@
        int del_updates = 0;
        int del_epoch  = 0;
        int del_admin_epoch = 0;
+       cl_mem_stats_t saved_stats;
+       crm_save_mem_stats(__PRETTY_FUNCTION__, &saved_stats);
 
        if(diff == NULL) {
                return;
@@ -413,4 +424,5 @@
        
        g_hash_table_foreach(client_list, cib_notify_client, replace_msg);
        crm_msg_del(replace_msg);
+       crm_diff_mem_stats(LOG_ERR, __PRETTY_FUNCTION__, &saved_stats);
 }




------------------------------

_______________________________________________
Linux-ha-cvs mailing list
Linux-ha-cvs@lists.linux-ha.org
http://lists.community.tummy.com/mailman/listinfo/linux-ha-cvs


End of Linux-ha-cvs Digest, Vol 32, Issue 25
********************************************

Reply via email to