[AGENT++] MIB lock

Robert Voigt robert.voigt at thalesatm.com
Tue May 16 09:09:30 CEST 2006


Hi list,

I have several MibLeafs whose requests take long to process, and while
they are processed get requests on other leafs are being blocked. I
suspect they are blocked in the line
lock_mib();
in
Mib::process_request()
because the lock of the MIB is held by the request on the leaf that
still hasn't finished.

I have observed this behavior with a set request and with a get request
on a table. With the set request the MIB is blocked when a second set
request comes before the first one has finished. With the get request on
the table the MIB is blocked as long as MibTable::update() hasn't
finished.

For my agent it is not acceptable that get requests on all leafs are
blocked for so long. Of course there are two reasons for this and two
ways to fix it. 
1. Certain requests take too long to process, so I could change the
architecture of my agent software and make them quicker.
2. The MIB is blocked by certain requests without a reason that is
apparrent to me. After all it uses a thread pool for the requests, so I
would expect all request to be processed asynchronously (increasing the
size of the thread pool does not help). Or is there a reason for this
behaviour? Are my observations correct? What does is take to change it?

I think I have Agent++ version 3.5.20a.

Any help would be very much appreciated.

Robert





More information about the AGENTPP mailing list