[Infrastructures] ISconf: Cache.py - bcast method

Steve Traugott stevegt@TerraLuna.Org
Mon, 19 Dec 2005 18:09:28 -0800


Curiouser and curiouser.  What happens if you set the socket to
blocking before the sendto() call, then back to nonblocking again
afterwards?  I.E.:

    self.sock.setblocking(1)
    self.sock.sendto(msg,0,(addr,self.udpport))
    self.sock.setblocking(0)

Has this only happened on one machine?  Out of how many?  Does dmesg
say anything interesting (e.g. link state transients)?

Steve

On Mon, Dec 19, 2005 at 04:49:57PM -0700, Jordan Curzon wrote:
> Yes, from the sendto call. The machine is just for testing ISCONF. It
> is a clean install of Ubuntu with simple routing (just gets a dhcp
> address). I am not using the IS_NETS file and the address that fails
> is <broadcast>. Also, the call succedes for some number of calls then
> throws the exception.
> 
> On 12/19/05, Steve Traugott <stevegt@terraluna.org> wrote:
> > On Mon, Dec 19, 2005 at 07:49:16AM -0700, Jordan Curzon wrote:
> > > Keeps crashing on me on the last line of the bcast method
> > > in Cache.py.  It throws a socket.error exception with the
> > > EAGAIN error. I did some looking and other places in the
> > > code ignore that error. I trapped the exception and
> > > everything runs fine.
> > >
> > > Is that a bug or am I misunderstanding things.
> >
> > You're getting an EAGAIN from a UDP sendto(), right?
> > Bizarre.  That means that the operation would block (and I
> > have the socket set for non-blocking).  Not sure what would
> > cause that in UDP.  Without knowing what's causing this, I'm
> > not sure whether the correct action is to trap and discard
> > the exception, or to yield and retry later.  Some ideas:
> >
> > - If you're using a nets file, check to make sure all of the
> >   IP addresses in there are valid and routable.  Check your
> >   routing table as well...  Add a debug() call to your patch
> >   to show the address that's failing.
> >
> > - Check to see if there's something seriously wrong with the
> >   IP stack on the machine -- running out of mbufs maybe?
> >   What else is the machine doing?
> >
> > Anyone else have any ideas for what might cause a UDP
> > sendto() to block?
> >
> > I've created bug #63 to track this: http://trac.t7a.org/isconf/ticket/63
> >
> > Steve
> >
> > --
> > Stephen G. Traugott  (KG6HDQ)
> > UNIX/Linux Infrastructure Architect, TerraLuna LLC
> > stevegt@TerraLuna.Org
> > http://www.stevegt.com -- http://Infrastructures.Org
> >
> _______________________________________________
> Infrastructures mailing list
> Infrastructures@mailman.terraluna.org
> http://mailman.terraluna.org/mailman/listinfo/infrastructures

-- 
Stephen G. Traugott  (KG6HDQ)
UNIX/Linux Infrastructure Architect, TerraLuna LLC
stevegt@TerraLuna.Org 
http://www.stevegt.com -- http://Infrastructures.Org