On Thu, Apr 26, 2012 at 10:56:30AM +0900, renayama19661...@ybb.ne.jp 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: Linux-HA-Dev@lists.linux-ha.org http://lists.linux-ha.org/mailman/listinfo/linux-ha-dev Home Page: http://linux-ha.org/