Hi All,
 
I didnot got anty response for the following issue, Can anyone tell me
if they have faced the same issue and is there any workaround for this
issue?
 
Any help on this will be appreciated.
 
Thanks,
Ravi


________________________________

From: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] On Behalf Of
Sekhar Reddy Ravi-G20226
Sent: Thursday, December 20, 2007 4:03 PM
To: net-snmp-users
Subject: SNMPD not responding sometimes even though it is up and running





Hi All, 

Sometimes SNMPD is not responding to snmp requests even though it is up
and running,  SNMPD is queuing all the requests without processing as
netsnmp_processing_set  and agent_delegated_list are not getting unset.
However SNMPD is able to send traps originated by subagent. 

We are using Net-snmp-5.2.2 as master and subagent. We have 
1) Applications which does set and walk operations on our enterprise mib

2) Monitoring application which does get operation on  OID
1.3.6.1.2.1.1.3.0 (sysUpTime) every 10secs 
3) Applications which sends number of traps due to changes in the system

  
Our analysis: 
When the problem occurred we are doing walks on our enterprise MIB
followed by set operation, when getnext operation is done
agent_delegated_list is set and it did not get unset. After this when
set operation is done  in netsnmp_handle_request Snmpd checks if
agent_delegated_list is set, as it is not unset set request is getting
queued and as set operation is not processed netsnmp_processing_set   is
not getting unset. For all the further queries SNMPD first checks
whether netsnmp_processing_set   is set , as this not is unset all the
requests are getting queued up without getting processed

So the root cause seems to be agent_delegated_list field not getting
unset, even I did not see any pending timers in the alarm list


This problem is coming very frequently. Can you please help us if this
kind of problem is seen earlier and any help on this will be
appreciated.


gdb) p *netsnmp_processing_set->pdu 
$6 = {version = 1, command = 163, reqid = 34644814, msgid = 0, transid =
5095,    
  sessid = 0, errstat = 0, errindex = 0, time = 0, flags = 0, 
  securityModel = 2, securityLevel = 1, msgParseModel = 0, 
  transport_data = 0x100b5ac0, transport_data_length = 16, 
  tDomain = 0xfe893c4, tDomainLen = 7, variables = 0x100ca7e0, 
  community = 0x10084050 "public", community_len = 6, enterprise = 0x0, 
  enterprise_length = 0, trap_type = 0, specific_type = 0, 
  agent_addr = "\000\000\000", contextEngineID = 0x0, contextEngineIDLen
= 0, 
  contextName = 0x100b92f8 "", contextNameLen = 0, securityEngineID =
0x0, 
  securityEngineIDLen = 0, securityName = 0x0, securityNameLen = 0, 
  priority = 0, range_subid = 0, securityStateRef = 0x0} 
(gdb) 

(gdb) p *agent_delegated_list->pdu 
$4 = {version = 1, command = 161, reqid = 1989587127, msgid = 0, 
  transid = 2658, sessid = 0, errstat = 0, errindex = 0, time = 0, flags
= 0, 
  securityModel = 2, securityLevel = 1, msgParseModel = 0, 
  transport_data = 0x100cc2f8, transport_data_length = 16, 
  tDomain = 0xfe893c4, tDomainLen = 7, variables = 0x100ccf38, 
  community = 0x100cc2e8 "public", community_len = 6, enterprise = 0x0, 
  enterprise_length = 0, trap_type = 0, specific_type = 0, 
  agent_addr = "\000\000\000", contextEngineID = 0x0, contextEngineIDLen
= 0, 
  contextName = 0x100cc3e0 "", contextNameLen = 0, securityEngineID =
0x0, 
  securityEngineIDLen = 0, securityName = 0x0, securityNameLen = 0, 
  priority = 0, range_subid = 0, securityStateRef = 0x0} 


Code snippet: 
netsnmp_handle_request(netsnmp_agent_session *asp, int status) 
{ 
    /* 
     * if this isn't a delegated request trying to finish, 
     * processing of a set request should not start until all 
     * delegated requests have completed, and no other new requests 
     * should be processed until the set request completes. 
     */ 
    if ((0 == netsnmp_check_delegated_chain_for(asp)) && 
        (asp != netsnmp_processing_set)) { 
        /* 
         * if we are processing a set and this is not a delegated 
         * request, queue the request 
         */ 
        if (netsnmp_processing_set) { 
            netsnmp_add_queued(asp); 
            DEBUGMSGTL(("snmp_agent", 
                        "request queued while processing set, " 
                        "asp = %08p\n", asp)); 
            return 1; 
        } 
        /* 
         * check for set request 
         */ 
        if (asp->pdu->command == SNMP_MSG_SET) { 
            netsnmp_processing_set = asp; 

            /* 
             * if there are delegated requests, we must wait for them 
             * to finish. 
             */ 
            if (agent_delegated_list) { 
                DEBUGMSGTL(("snmp_agent", "SET request queued while " 
                            "delegated requests finish, asp = %08p\n", 
                            asp)); 
                netsnmp_add_queued(asp); 
                return 1; 
            } 



Thanks, 
Ravi 

-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2005.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
Net-snmp-users mailing list
[email protected]
Please see the following page to unsubscribe or change other options:
https://lists.sourceforge.net/lists/listinfo/net-snmp-users

Reply via email to