[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [hobbit] msgcache hobbitfetch problems
- To: hobbit (at) hswn.dk
- Subject: Re: [hobbit] msgcache hobbitfetch problems
- From: Steinar M. Skúlason <steinarms (at) gmail.com>
- Date: Thu, 11 Feb 2010 16:37:41 +0000
- Dkim-signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:in-reply-to:references :date:message-id:subject:from:to:content-type; bh=ferHXJKc4NK0qnNUZm7biqZoEtt7ZN0qG9yWO+9wWlI=; b=g38MLiylrnZXr5Cxt8A7urvAHkFilRNStRYMb5qeN+DO0i8M44+N+5sUikeugZp6Pf kG7dKLn2w0HzWt2bryH6+7SAXO377uvixoQXffswdLxlhkepOzfx6m4sf7hJ1ZCz1nQ0 W+SIyjzfN70nJiMppznB7/3fHpj1uYqWb9XLw=
- Domainkey-signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :content-type; b=UMMZJrHGHZ8xOO+npVWngVJto2XwS3bxvTLScR8Tg5lBP9vgpctDBX8J3iaoqDqavu 8LoN+HS9LwXVn8qwjo+90x/uMlIGlirpzxH6YThMJ0X1mV9K16GKPClsh2l2HJuXO1q8 /7h6AVskTPS1b1prv00evdQGqULPFIjn3taEs=
- References: <17bd4d511002080837jae111bi26a2da3186e092f8 (at) mail.gmail.com> <C795A7D3.5B84%dan.mcdonald (at) austinenergy.com> <17bd4d511002081012q7e811e38l578131dffa9707ac (at) mail.gmail.com> <1265655228.27906.32.camel (at) crobinso.nisc.lan> <17bd4d511002100133v67d45am22386b34ed712e51 (at) mail.gmail.com> <1265831698.22168.6.camel (at) crobinso.nisc.lan>
On Wed, Feb 10, 2010 at 7:54 PM, Cade Robinson <cade.robinson (at) gmail.com>wrote:
> I am not sure how this patch was working for me.
> It fixes if the fetched data is 8192 bytes or greater but breaks when the
> read is <8192.
> It does the initial read fine but on the second round through the do/while
> loop n is -1 since there is nothing left to read and the remote has closed.
>
> So it thinks there is a failure.
>
>
> On Wed, 2010-02-10 at 09:33 +0000, Steinar M. Skúlason wrote:
>
>
>
> On Mon, Feb 8, 2010 at 6:53 PM, Cade Robinson <cade.robinson (at) gmail.com>
> wrote:
>
> The issue is in the hobbitfetch "grabdata" function.
>
> int n;
> char buf[8192];
> ...
> n = read(conn->sockfd, buf, sizeof(buf));
> ...
> else if (n > 0) {
> ...
> buf[n] = '\0';
> ...
>
> If the "read" reads 8192 bytes then n is 8192 and then buf[n] tries to
> get set to NULL. There is no element 8192.
> Also only one read happens so if there is more than 8192 bytes to be
> fetched not everything is fetched.
>
> I put the "read" and "if"s in a do...while loop and fixed the null
> termination on buf and haven't had any issues.
>
> ~/hobbitmon/trunk/hobbitd:-> diff -u hobbitfetch.c ./hobbitfetch.c.new
> --- hobbitfetch.c 2010-02-08 12:43:22.781543905 -0600
> +++ ./hobbitfetch.c.new 2010-02-08 12:52:25.249509306 -0600
> @@ -342,8 +342,9 @@
> int n;
> char buf[8192];
>
> + do {
> /* Read data from a peer connection (client or server) */
> - n = read(conn->sockfd, buf, sizeof(buf));
> + n = read(conn->sockfd, buf, sizeof(buf)-2);
> if (n == -1) {
> if ((errno != EINTR) && (errno != EAGAIN)) {
> /* Read failure */
> @@ -360,7 +361,7 @@
> /* Save the data */
> dbgprintf("Got %d bytes of data from %s (req %lu)\n",
> n, addrstring(&conn->caddr), conn->seq);
> - buf[n] = '\0';
> + buf[n+1] = '\0';
> addtobuffer(conn->msgbuf, buf);
> }
> else if (n == 0) {
> @@ -380,6 +381,7 @@
> break;
> }
> }
> + } while (n>0);
> }
>
> void set_polltime(clients_t *client)
>
>
>
>
>
>
>
>
>
> On Mon, 2010-02-08 at 18:12 +0000, Steinar M. Skúlason wrote:
> >
> >
> > On Mon, Feb 8, 2010 at 5:36 PM, Daniel McDonald
> > <dan.mcdonald (at) austinenergy.com> wrote:
> > On 2/8/10 10:37 AM, "Steinar M. Skúlason"
> > <steinarms (at) gmail.com> wrote:
> >
> > > Hi,
> > >
> > > I'm having problems with "msgcache" on the client machines
> > and "hobbitfetch"
> > > on the server machine.
> > > It works for a short period and then get's stuck and all my
> > client side checks
> > > end up with status purple.
> >
> >
> > Yup. Been doing that for a long time here. I sent a bunch of
> > corefiles to
> > Henrik about it, and he tried a bunch of patches. Eventually,
> > we just wrote
> > a routine that restarts hobbitfetch whenever a host turns
> > purple.
> >
> > --
> > Daniel J McDonald, CCIE # 2495, CISSP # 78281
> >
> >
> > To unsubscribe from the hobbit list, send an e-mail to
> > hobbit-unsubscribe (at) hswn.dk
> >
> >
> >
> > Ok, good to hear that I am not the only one.
> > I wrote a ugly routine that restarts hobbitfetch if there is no new
> > entry in the logfile
> >
> >
> > #!/bin/bash
> >
> > #This is to see if any progress has been made within the hobbitfetch
> > utility.
> > TMP_FILE=/tmp/tmp.hobbitfetch.last
> > LAST_LINE=`tail -1 /usr/lib/xymon/server/log/hobbitfetch.log|awk
> > '{print $1 $2}'`
> > PREV_LINE=`cat /tmp/tmp.hobbitfetch.last`
> > echo $LAST_LINE > $TMP_FILE
> >
> > if [ "$LAST_LINE" == "$PREV_LINE" ]; then
> > echo "Nothing has happend .... killing hobbitfetch!"
> > PID=`ps -ef|grep hobbitfetch|awk '{print $2}'`
> > kill -9 $PID
> > fi
> >
> > Best Regards,
> > Steinar M.
>
>
> To unsubscribe from the hobbit list, send an e-mail to
> hobbit-unsubscribe (at) hswn.dk
>
>
>
> Thank you for your reply Cade, I tried your patch but it was not working
> for me
> are you using the 4.3.0-beta2 for both client and server?
> I get no checks populated with your changes.
> Or did you also make changes to the msgcache.c ?
>
> Regards,
> Steinar M.
>
> I recompiled everything clients/server ( with your patch included )
Looks good at the moment, but I'm going to give it a couple of days.
I will report back with my findings.
Regards,
Steinar M.