ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/COMP/CRAB/python/apmon.py
(Generate patch)

Comparing COMP/CRAB/python/apmon.py (file contents):
Revision 1.3 by corvo, Wed Mar 8 17:10:49 2006 UTC vs.
Revision 1.4 by corvo, Tue Mar 21 16:05:47 2006 UTC

# Line 1 | Line 1
1  
2   """
3   * ApMon - Application Monitoring Tool
4 < * Version: 2.2.1
4 > * Version: 2.2.2
5   *
6   * Copyright (C) 2006 California Institute of Technology
7   *
# Line 187 | Line 187 | class ApMon:
187                  self.__udpSocket = None
188                  self.__configUpdateLock = threading.Lock()
189                  self.__configUpdateEvent = threading.Event()
190 +                self.__configUpdateFinished = threading.Event()
191                  self.__bgMonitorLock = threading.Lock()
192                  self.__bgMonitorEvent = threading.Event()
193 +                self.__bgMonitorFinished = threading.Event()
194                  # don't allow a user to send more than MAX_MSG messages per second, in average
195                  self.__crtTime = 0;
196                  self.__prvTime = 0;
# Line 424 | Line 426 | class ApMon:
426                  Stop background threands, close opened sockets. You have to use this function if you want to
427                  free all the resources that ApMon takes, and allow it to be garbage-collected.
428                  """
429 <                if self.__configUpdateEvent != None:
430 <                        self.__configUpdateEvent.set();
431 <                if self.__bgMonitorEvent != None:
432 <                        self.__bgMonitorEvent.set();
433 <                time.sleep(0.01);
429 >                if len(self.configAddresses) > 0:
430 >                        self.__configUpdateEvent.set()
431 >                        self.__configUpdateFinished.wait()
432 >                self.__bgMonitorEvent.set()
433 >                self.__bgMonitorFinished.wait()
434 >                
435                  if self.__udpSocket != None:
436                          self.logger.log(Logger.DEBUG, "Closing UDP socket on ApMon object destroy.");
437                          self.__udpSocket.close();
# Line 447 | Line 450 | class ApMon:
450                  while not self.__configUpdateEvent.isSet():
451                          self.__configUpdateEvent.wait(self.configRecheckInterval);
452                          if self.__configUpdateEvent.isSet():
453 <                                return;
453 >                                break
454                          if self.configRecheck:
455                                  self.__reloadAddresses()
456                                  self.logger.log(Logger.DEBUG, "Config reloaded. Seleeping for "+`self.configRecheckInterval`+" sec.");
457 +                self.__configUpdateFinished.set();
458  
459          def __reloadAddresses(self):
460                  """
# Line 596 | Line 600 | class ApMon:
600  
601          def __bgMonitor (self):
602                  while not self.__bgMonitorEvent.isSet():
603 <                        self.__bgMonitorEvent.wait(10);
603 >                        self.__bgMonitorEvent.wait(10)
604                          if self.__bgMonitorEvent.isSet():
605 <                                return;
605 >                                break
606                          if self.performBgMonitoring:
607                                  self.sendBgMonitoring() # send only if the interval has elapsed
608 +                self.__bgMonitorFinished.set()
609  
610          ###############################################################################################
611          # Internal helper functions
# Line 608 | Line 613 | class ApMon:
613          
614          def __directSendParams (self, senderRef, destination, clusterName, nodeName, timeStamp, params):
615                  
611                if senderRef=={}:
612                        self.logger.log(Logger.WARNING, "Not sending undefined parameters!");
613                        return;
614                
616                  if self.__shouldSend() == False:
617 +                        self.logger.log(Logger.DEBUG, "Dropping packet since rate is too fast!");
618                          return;
619                  
620                  if destination == None:
# Line 623 | Line 625 | class ApMon:
625                  senderRef['SEQ_NR'] = (senderRef['SEQ_NR'] + 1) % 2000000000; # wrap around 2 mld
626                  
627                  xdrPacker = xdrlib.Packer ();
628 <                self.logger.log(Logger.DEBUG, "Building XDR packet for ["+str(clusterName)+"] <"+str(nodeName)+"> len:"+str(len(params)));
628 >                self.logger.log(Logger.DEBUG, "Building XDR packet for ["+str(clusterName)+"/"+str(nodeName)+"] <"+str(senderRef['SEQ_NR'])+"/"+str(senderRef['INSTANCE_ID'])+"> len:"+str(len(params)));
629                  
630                  xdrPacker.pack_string ("v:"+self.__version+"p:"+passwd)
631                  
# Line 669 | Line 671 | class ApMon:
671                          self.__packFunctions[typeValue] (xdrPacker, value)
672                          self.logger.log(Logger.DEBUG, "Adding parameter "+str(name)+" = "+str(value));
673                  except Exception, ex:
674 <                        print "ApMon: error packing %s = %s; got %s" % (name, str(value), ex)
674 >                        self.logger.log(Logger.WARNING, "Error packing %s = %s; got %s" % (name, str(value), ex))
675  
676          # Destructor
677          def __del__(self):
# Line 726 | Line 728 | class ApMon:
728                  5: xdrlib.Packer.pack_double }
729          
730          __defaultPort = 8884
731 <        __version = "2.2.1-py"                  # apMon version number
731 >        __version = "2.2.2-py"                  # apMon version number
732  

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines