freeipmi-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Freeipmi-devel] ipmiconsole_engine_teardown does not seem to block


From: Al Chu
Subject: Re: [Freeipmi-devel] ipmiconsole_engine_teardown does not seem to block as advertised
Date: Thu, 28 Jun 2007 15:33:41 -0700

Hey Levi,

One other additional note.  I added several debug flags into the
library.  It may be worth adding it into your code to help us figure out
the problem.  Passing 

IPMICONSOLE_DEBUG_FILE

to engine_init() will output debug info into files in /tmp.

Al

On Thu, 2007-06-28 at 13:58 -0700, Al Chu wrote:
> Hey Levi,
> 
> > engine_teardown();  <- doesn't block right now
> > foreach context
> >   while ipmi_destroy_ctx(ctx) < 0  <- need to spin in case 
> >     sleep(1)                          connections aren't dead yet
> > 
> > And it sits forever (or at least 10 minutes or so) in the loop;
> > apparently the call to destroy the ctx never succeeds.
> 
> I haven't been able to reproduce this after a number of attempts.
> Although I found a bug that makes engine_teardown() work slowly under
> certain conditions, it overall seems to work fine for me.
> 
> Could you see what error code is being returned from ipmi_destroy_ctx()
> for now (ipmiconsole_ctx_errnum).
> 
> Could you also perhaps try modifying the ipmiconsole() tool to sanity
> check that:
> 
> engine_teardown()
> ipmi_destroy_ctx(c);
> 
> works for just 1 node for your motherboards?  For an initial sanity
> check, I did:
> 
> --- ipmiconsole.c       1 Jun 2007 04:35:07 -0000       1.14
> +++ ipmiconsole.c       28 Jun 2007 20:50:23 -0000
> @@ -473,23 +473,24 @@ main(int argc, char **argv)
>      }
> 
>   cleanup:
> +#if 0
>    if (fd >= 0)
>      {
>        printf("\r\n[closing the connection]\r\n");
>        close(fd);
>      }
> +#endif
> +  ipmiconsole_engine_teardown();
>    if (c)
>      {
>        while (1)
>          {
>            if (ipmiconsole_ctx_destroy(c) < 0)
> -           /* Wait a little bit then try again */
> -           sleep(1);
> +            sleep(1);
>            else
>              break;
>          }
>      }
> -  ipmiconsole_engine_teardown();
> 
> I had to modify the state machine several times before b/c some obscure
> vendor non-compliance made the state-machine go into a loop or go wacky.
> I suppose it's not out of the question this time as well.
> 
> Thanks,
> Al
> 
> On Thu, 2007-06-28 at 11:11 -0600, Levi Pearson wrote: 
> > On Thu, 2007-06-28 at 09:39 -0700, Al Chu wrote:
> > > 
> > > So is it not closing the sessions?
> > > 
> > 
> > Apparently not.
> > 
> > > > It would be handy to have a call that
> > > > does trigger the closing of all sessions such that ipmi_ctx_destroy()
> > > > will work on them afterward, though.
> > > 
> > > The library should work such that if you do:
> > > 
> > > engine_teardown();
> > > foreach context I created
> > >    ipmi_destroy_ctx(ctx);
> > > 
> > > This should work.  I'll look into this.
> > 
> > What I did:
> > 
> > engine_teardown();  <- doesn't block right now
> > foreach context
> >   while ipmi_destroy_ctx(ctx) < 0  <- need to spin in case 
> >     sleep(1)                          connections aren't dead yet
> > 
> > And it sits forever (or at least 10 minutes or so) in the loop;
> > apparently the call to destroy the ctx never succeeds.
> > 
> > So far I've only tested it with 3 concurrent connections, but I've got
> > enough equipment handy to ramp it up to 12 or so.
> > 
> >             --Levi
-- 
Albert Chu
address@hidden
925-422-5311
Computer Scientist
High Performance Systems Division
Lawrence Livermore National Laboratory




reply via email to

[Prev in Thread] Current Thread [Next in Thread]