Hi,
On Tue, Dec 22, 2009 at 01:16:06PM +0100, Lars Ellenberg wrote:
> On Tue, Dec 22, 2009 at 07:01:54PM +1100, Simon Horman wrote:
> > On Tue, Dec 22, 2009 at 12:43:09AM +0800, Jiaju Zhang wrote:
>
>
> I'd add the "borrowed from ctdb.samba.org" (attribution,
> and hint for further maintenance, in case they improve upon
> their code...) and a onliner "this is GPL"
> to the source code, to make it explicit.
>
> I see that the tickle_ack binary supports ipv6,
> yet:
>
> > [snip]
> >
> > > +save_tcp_connections() {
> > > + mydir=$OCF_RESKEY_tickle_dir/`hostname`
> > > + rm -f $mydir/*
> > > + netstat -tn |egrep
> > > '^tcp[[:space:]]+[0-9]+[[:space:]]+[0-9]+[[:space:]]+[0-9\.]+:[0-9]+.*ESTABLISHED'
> > > |
>
> ... you specifically grep only for tcp (ipv4).
>
> which is correct, since netstat in general truncates ipv6 addresses in
> its output, see e.g. http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=254243
>
> so maybe add the -W option, if supported by the respective netstat in use,
> and also grep for tcp6 ?
The SUSE distribution has actually the -T (--notrim) option which
seems to serve the same purpose and which has been copied from
CentOS (see https://bugzilla.novell.com/show_bug.cgi?id=530196).
I'd suggest sth like this:
netstat -h 2>&1 | grep -qs notrim && wide_opt="--notrim"
netstat -h 2>&1 | grep -qs wide && wide_opt="--wide"
> > > + awk '{print $4" "$5}' |
> > > + while read server client; do
> > > + ip=${server%:*}
> > > + echo $client $server >> $mydir/$ip
> > > + done
> > > +}
> >
> >
> > Can the filtering being done be egrep be rolled into the awk script?
>
> It sure can, but it would not necessarily be faster.
I don't have preference for either, but the expression should
perhaps be simplified (tcp.*ESTABLISHED?).
> > > +
> > > +run_tickle_tcp() {
> > > + for f in $OCF_RESKEY_tickle_dir/*/$OCF_RESKEY_ip; do
> > > + [ -f $f ] && cat $f | while read client server; do
> > > + for i in `seq 1 3`; do
> > > + $TICKLETCP $client $server
> > > + done
> > > + done
> > > + done
> > > +}
> > > +
> >
> > Would it be worth allowing $TICKLETCP to tickle multiple connections
> > in a single invocation - for instance by reading $client $server from stdin?
> > I'm concerned about a situation where there are lots of connections,
> > it might take a while to spawn $TICKLETCP lots of times.
>
> Yes please.
> That would be a very important improvement.
I guess that would also make a number of packets as option:
[ -f $f ] && cat $f | $TICKLETCP -n 3
> Thank you for stepping forward!
Jiaju, many thanks for the contribution. Any chance to also
implement the suggested improvements?
Cheers,
Dejan
> --
> : 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/
_______________________________________________________
Linux-HA-Dev: [email protected]
http://lists.linux-ha.org/mailman/listinfo/linux-ha-dev
Home Page: http://linux-ha.org/