On Thu, Apr 26, 2012 at 10:56:30AM +0900, [email protected] wrote:
> Hi All,
>
> We gave test that assumed remote cluster environment.
> And we tested packet lost.
>
> The retransmission timer of Heartbeat causes memory leak.
>
> I donate a patch.
> Please confirm the contents of the patch.
> And please reflect a patch in a repository of Heartbeat.
Have you actually been able to measure that memory leak you observed,
and you can confirm this patch will fix it?
Because I don't think this patch has any effect.
send_rexmit_request() is only used as paramter to
Gmain_timeout_add_full, and it returns FALSE always,
which should cause the respective sourceid to be auto-removed.
> diff -r 106ca984041b heartbeat/hb_rexmit.c
> --- a/heartbeat/hb_rexmit.c Thu Apr 26 19:28:26 2012 +0900
> +++ b/heartbeat/hb_rexmit.c Thu Apr 26 19:31:44 2012 +0900
> @@ -164,6 +164,8 @@
> seqno_t seq = (seqno_t) ri->seq;
> struct node_info* node = ri->node;
> struct ha_msg* hmsg;
> + unsigned long sourceid;
> + gpointer value;
>
> if (STRNCMP_CONST(node->status, UPSTATUS) != 0 &&
> STRNCMP_CONST(node->status, ACTIVESTATUS) !=0) {
> @@ -196,11 +198,17 @@
>
> node->track.last_rexmit_req = time_longclock();
>
> - if (!g_hash_table_remove(rexmit_hash_table, ri)){
> - cl_log(LOG_ERR, "%s: entry not found in rexmit_hash_table"
> - "for seq/node(%ld %s)",
> - __FUNCTION__, ri->seq, ri->node->nodename);
> - return FALSE;
> + value = g_hash_table_lookup(rexmit_hash_table, ri);
> + if ( value != NULL) {
> + sourceid = (unsigned long) value;
> + Gmain_timeout_remove(sourceid);
> +
> + if (!g_hash_table_remove(rexmit_hash_table, ri)){
> + cl_log(LOG_ERR, "%s: entry not found in
> rexmit_hash_table"
> + "for seq/node(%ld %s)",
> + __FUNCTION__, ri->seq, ri->node->nodename);
> + return FALSE;
> + }
> }
>
> schedule_rexmit_request(node, seq, max_rexmit_delay);
--
: Lars Ellenberg
: LINBIT | Your Way to High Availability
: DRBD/HA support and consulting http://www.linbit.com
DRBD® and LINBIT® are registered trademarks of LINBIT, Austria.
_______________________________________________________
Linux-HA-Dev: [email protected]
http://lists.linux-ha.org/mailman/listinfo/linux-ha-dev
Home Page: http://linux-ha.org/