ganglia/tcpconn-fixes.patch
2008-08-12 16:21:20 +00:00

41 lines
1.7 KiB
Diff

Index: gmond/python_modules/network/tcpconn.py
===================================================================
--- gmond/python_modules/network/tcpconn.py (revision 1622)
+++ gmond/python_modules/network/tcpconn.py (working copy)
@@ -245,19 +245,14 @@
tempconns[conn] = 0
#Call the netstat utility and split the output into separate lines
- fd_poll = select.poll()
- self.popenChild = popen2.Popen3("netstat -t -a")
- fd_poll.register(self.popenChild.fromchild)
+ self.popenChild = popen2.Popen3("netstat -t -a -n")
+ lines = self.popenChild.fromchild.readlines()
- poll_events = fd_poll.poll()
-
- if (len(poll_events) == 0): # Timeout
- continue
-
- for (fd, events) in poll_events:
- lines = self.popenChild.fromchild.readlines()
-
- self.popenChild.wait()
+ try:
+ self.popenChild.wait()
+ except OSError, e:
+ if e.errno == 10: # No child process
+ continue
#Iterate through the netstat output looking for the 'tcp' keyword in the tcp_at
# position and the state information in the tcp_state_at position. Count each
@@ -300,7 +295,8 @@
_glock.release()
#Wait for the refresh_rate period before collecting the netstat data again.
- time.sleep(_refresh_rate)
+ if not self.shuttingdown:
+ time.sleep(_refresh_rate)
#Set the current state of the thread after a shutdown has been indicated.
self.running = False