[tor-commits] [arm/master] Dropping tor_tools' get_my_file_descriptor_limit()

atagar at torproject.org atagar at torproject.org
Mon Jan 27 03:50:15 UTC 2014


commit ed1a97da1ea6c7a633fc4b7001f0fdd543d10015
Author: Damian Johnson <atagar at torproject.org>
Date:   Sun Jan 26 19:32:13 2014 -0800

    Dropping tor_tools' get_my_file_descriptor_limit()
    
    In Tor version 0.2.3.x-final we added the ability to query available tor's file
    descriptor limit. This method was a holdover from before this was commonly
    available, taking a guess at the limit based on either 'ulimit -Hn' or tor's
    user.
    
    This tor capability has been out there long enough that we can drop this
    fallback functionality.
---
 arm/header_panel.py   |   17 +++++++++--------
 arm/util/tor_tools.py |   39 ---------------------------------------
 2 files changed, 9 insertions(+), 47 deletions(-)

diff --git a/arm/header_panel.py b/arm/header_panel.py
index 8621fb3..f287d81 100644
--- a/arm/header_panel.py
+++ b/arm/header_panel.py
@@ -75,7 +75,7 @@ class HeaderPanel(panel.Panel, threading.Thread):
     tor/  version, versionStatus, nickname, or_port, dir_port, control_port,
           socketPath, exit_policy, isAuthPassword (bool), isAuthCookie (bool),
           orListenAddr, *address, *fingerprint, *flags, pid, start_time,
-          *fd_used, fd_limit, isFdLimitEstimate
+          *fd_used, fd_limit
     sys/  hostname, os, version
     stat/ *%torCpu, *%armCpu, *rss, *%mem
 
@@ -364,8 +364,7 @@ class HeaderPanel(panel.Panel, threading.Thread):
           elif fd_percent >= 60:
             fd_percent_format = ui_tools.get_color("yellow")
 
-          estimate_char = "?" if self.vals["tor/isFdLimitEstimate"] else ""
-          base_label = "file desc: %i / %i%s (" % (self.vals["tor/fd_used"], self.vals["tor/fd_limit"], estimate_char)
+          base_label = "file desc: %i / %i (" % (self.vals["tor/fd_used"], self.vals["tor/fd_limit"])
 
           self.addstr(y, x + 59, base_label)
           self.addstr(y, x + 59 + len(base_label), fd_percentLabel, fd_percent_format)
@@ -593,9 +592,12 @@ class HeaderPanel(panel.Panel, threading.Thread):
       # file descriptor limit for the process, if this can't be determined
       # then the limit is None
 
-      fd_limit, fd_is_estimate = tor_tools.get_conn().get_my_file_descriptor_limit()
-      self.vals["tor/fd_limit"] = fd_limit
-      self.vals["tor/isFdLimitEstimate"] = fd_is_estimate
+      fd_limit = controller.get_info('process/descriptor-limit', '-1')
+
+      if fd_limit != '-1' and fd_limit.isdigit():
+        self.vals["tor/fd_limit"] = int(fd_limit)
+      else:
+        self.vals["tor/fd_limit"] = None
 
       # system information
 
@@ -642,8 +644,7 @@ class HeaderPanel(panel.Panel, threading.Thread):
 
     if self.vals["tor/fd_used"] and self.vals["tor/fd_limit"]:
       fd_percent = 100 * self.vals["tor/fd_used"] / self.vals["tor/fd_limit"]
-      estimated_label = " estimated" if self.vals["tor/isFdLimitEstimate"] else ""
-      msg = "Tor's%s file descriptor usage is at %i%%." % (estimated_label, fd_percent)
+      msg = "Tor's file descriptor usage is at %i%%." % fd_percent
 
       if fd_percent >= 90 and not self._is_fd_ninety_percent_warned:
         self._is_fd_sixty_percent_warned, self._is_fd_ninety_percent_warned = True, True
diff --git a/arm/util/tor_tools.py b/arm/util/tor_tools.py
index 0e7aaec..1d17905 100644
--- a/arm/util/tor_tools.py
+++ b/arm/util/tor_tools.py
@@ -484,45 +484,6 @@ class Controller:
 
     return result
 
-  def get_my_file_descriptor_limit(self):
-    """
-    Provides the maximum number of file descriptors this process can have.
-    Only the Tor process itself reliably knows this value, and the option for
-    getting this was added in Tor 0.2.3.x-final. If that's unavailable then
-    we can only estimate the file descriptor limit based on other factors.
-
-    The return result is a tuple of the form:
-    (fileDescLimit, isEstimate)
-    and if all methods fail then both values are None.
-    """
-
-    # provides -1 if the query fails
-    queried_limit = self.get_info("process/descriptor-limit", None)
-
-    if queried_limit is not None and queried_limit != "-1":
-      return (int(queried_limit), False)
-
-    tor_user = self.get_my_user()
-
-    # This is guessing the open file limit. Unfortunately there's no way
-    # (other than "/usr/proc/bin/pfiles pid | grep rlimit" under Solaris)
-    # to get the file descriptor limit for an arbitrary process.
-
-    if tor_user == "debian-tor":
-      # probably loaded via /etc/init.d/tor which changes descriptor limit
-      return (8192, True)
-    else:
-      # uses ulimit to estimate (-H is for hard limit, which is what tor uses)
-      ulimit_results = system.call("ulimit -Hn")
-
-      if ulimit_results:
-        ulimit = ulimit_results[0].strip()
-
-        if ulimit.isdigit():
-          return (int(ulimit), True)
-
-    return (None, None)
-
   def get_start_time(self):
     """
     Provides the unix time for when the tor process first started. If this





More information about the tor-commits mailing list