Changeset 469 for trunk/jobarchived


Ignore:
Timestamp:
02/21/08 16:57:37 (13 years ago)
Author:
bastiaans
Message:

jobarchived/jobarchived.py:

  • bugfix: #34: make sure parseThreads return(s) correctly when datasource is unavailable
  • set default timeout for socket connections to gmetad's default update interval minus 1
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/jobarchived/jobarchived.py

    r468 r469  
    7878                if opt in [ '--help', '-h' ]:
    7979
    80                         usage( false )
     80                        usage( False )
    8181                        sys.exit( 0 )
    8282
    8383                if opt in [ '--version', '-v' ]:
    8484
    85                         usage( true )
     85                        usage( True )
    8686                        sys.exit( 0 )
    8787
     
    149149
    150150        try:
     151                global rrdtool
    151152                import rrdtool
    152153
     
    628629        binary = None
    629630
    630 
    631631        def __init__( self, binary=None ):
    632632                """Set alternate binary if supplied"""
     
    791791
    792792                        #self.myXMLSource = self.mXMLGatherer.getFileObject()
    793                         debug_msg( 1, 'torque_xml_thread(): Parsing..' )
     793                        debug_msg( 1, 'torque_xml_thread(): Retrieving XML data..' )
    794794
    795795                        my_data = self.myXMLSource.getData()
    796796
    797                         try:
     797                        debug_msg( 1, 'torque_xml_thread(): Done retrieving.' )
     798
     799                        if my_data:
     800                                debug_msg( 1, 'ganglia_parse_thread(): Parsing XML..' )
     801
    798802                                xml.sax.parseString( my_data, self.myXMLHandler, self.myXMLError )
    799                         except socket.error, msg:
    800                                 debug_msg( 0, 'ERROR: Socket error in connect to datasource!: %s' %msg )
     803
     804                                debug_msg( 1, 'ganglia_parse_thread(): Done parsing.' )
    801805                               
    802                         debug_msg( 1, 'torque_xml_thread(): Done parsing.' )
    803806                        debug_msg( 1, 'torque_xml_thread(): Sleeping.. (%ss)' %(str( self.config.getLowestInterval() ) ) )
    804807                        time.sleep( self.config.getLowestInterval() )
     
    11611164                self.slot.acquire()
    11621165
     1166                self.data       = None
     1167
    11631168                for res in socket.getaddrinfo( self.host, self.port, socket.AF_UNSPEC, socket.SOCK_STREAM ):
    11641169
     
    11691174                                self.s = socket.socket( af, socktype, proto )
    11701175
    1171                         except socket.error, msg:
     1176                        except ( socket.error, socket.gaierror, socket.herror, socket.timeout ), msg:
    11721177
    11731178                                self.s = None
     
    11781183                                self.s.connect( sa )
    11791184
    1180                         except socket.error, msg:
     1185                        except ( socket.error, socket.gaierror, socket.herror, socket.timeout ), msg:
    11811186
    11821187                                self.disconnect()
     
    11891194                        debug_msg( 0, 'FATAL ERROR: Could not open socket or unable to connect to datasource!' )
    11901195                        self.update_now = False
    1191                         sys.exit( 1 )
     1196                        #sys.exit( 1 )
    11921197
    11931198                else:
     
    14021407
    14031408                debug_msg( 1, 'ganglia_parse_thread(): started.' )
    1404                 debug_msg( 1, 'ganglia_parse_thread(): Parsing XML..' )
    1405                 #self.myXMLSource = self.myXMLGatherer.getFileObject()
     1409                debug_msg( 1, 'ganglia_parse_thread(): Retrieving XML data..' )
    14061410               
    14071411                my_data = self.myXMLSource.getData()
    14081412
    1409                 #print my_data
    1410 
    1411                 try:
     1413                debug_msg( 1, 'ganglia_parse_thread(): Done retrieving.' )
     1414
     1415                if my_data:
     1416                        debug_msg( 1, 'ganglia_parse_thread(): Parsing XML..' )
    14121417                        xml.sax.parseString( my_data, self.myXMLHandler, self.myXMLError )
    1413                 except socket.error, msg:
    1414                         debug_msg( 0, 'ERROR: Socket error in connect to datasource!: %s' %msg )
    1415 
    1416                 debug_msg( 1, 'ganglia_parse_thread(): Done parsing.' )
     1418                        debug_msg( 1, 'ganglia_parse_thread(): Done parsing.' )
     1419
    14171420                debug_msg( 1, 'ganglia_parse_thread(): finished.' )
    14181421
     
    19601963def run():
    19611964        """Threading start"""
     1965
     1966        config          = GangliaConfigParser( GMETAD_CONF )
     1967        s_timeout       = int( config.getLowestInterval() - 1 )
     1968
     1969        socket.setdefaulttimeout( s_timeout )
    19621970
    19631971        myXMLSource             = XMLGatherer( ARCHIVE_XMLSOURCE.split( ':' )[0], ARCHIVE_XMLSOURCE.split( ':' )[1] )
     
    20462054
    20472055# Ooohh, someone started me! Let's go..
     2056#
    20482057if __name__ == '__main__':
    20492058        main()
Note: See TracChangeset for help on using the changeset viewer.