[tor-commits] [gettor/master] Better debugging and error handling

ilv at torproject.org ilv at torproject.org
Tue Nov 3 19:31:30 UTC 2015


commit e1fe0b98202d07aaacb14d0dc18bce8080642e67
Author: ilv <ilv at users.noreply.github.com>
Date:   Thu Aug 27 15:14:55 2015 -0300

    Better debugging and error handling
---
 gettor/blacklist.py |   65 ++++++++++++++++++++++++---------------------------
 gettor/db.py        |    7 +++++-
 2 files changed, 37 insertions(+), 35 deletions(-)

diff --git a/gettor/blacklist.py b/gettor/blacklist.py
index a16c764..635d9a7 100644
--- a/gettor/blacklist.py
+++ b/gettor/blacklist.py
@@ -120,44 +120,41 @@ class Blacklist(object):
         :raise: BlacklistError if the user is blacklisted
 
         """
-        r = self.db.get_user(user, service)
-        if r:
-            # permanently blacklisted
-            if r['blocked']:
-                try:
+        try:
+            self.log.info("Trying to get info from user")
+            self.db.connect()
+            r = self.db.get_user(user, service)
+            if r:
+                # permanently blacklisted
+                if r['blocked']:
+                    self.log.warning("Request from user permanently blocked")
                     self.db.update_user(user, service, r['times']+1, 1)
                     raise BlacklistError("Blocked user")
-                except db.DBError as e:
-                    raise InternalError("Can't update user (%s)" % str(e))
-            # don't be greedy
-            elif r['times'] >= max_req:
-                last = datetime.datetime.fromtimestamp(
-                    float(r['last_request'])
-                )
-                next = last + datetime.timedelta(minutes=wait_time)
-
-                if datetime.datetime.now() < next:
-                    # too many requests from the same user
-                    try:
+                # don't be greedy
+                elif r['times'] >= max_req:
+                    last = datetime.datetime.fromtimestamp(
+                        float(r['last_request'])
+                    )
+                    next = last + datetime.timedelta(minutes=wait_time)
+
+                    if datetime.datetime.now() < next:
+                        self.log.warning("Too many requests from same user")
                         self.db.update_user(user, service, r['times']+1, 0)
                         raise BlacklistError("Too many requests")
-                    except db.DBError as e:
-                        raise InternalError("Can't update user (%s)" % str(e))
-                else:
-                    # fresh user again!
-                    try:
+                    else:
+                        # fresh user again!
+                        self.log.info("Updating counter for existing user")
                         self.db.update_user(user, service, 1, 0)
-                    except db.DBError as e:
-                        raise InternalError("Can't update user (%s)" % str(e))
-            else:
-                # adding up a request for user
-                try:
+                else:
+                    # adding up a request for user
+                    self.log.info("Request from existing user")
                     self.db.update_user(user, service, r['times']+1, 0)
-                except db.DBError as e:
-                    raise InternalError("Can't update user (%s)" % str(e))
-        else:
-            # new request for user
-            try:
+            else:
+                # new request for user
+                self.log.info("Request from new user")
                 self.db.add_user(user, service, 0)
-            except db.DBError as e:
-                raise InternalError("Can't add new user (%s)" % str(e))
+        except db.DBError as e:
+            self.log.error("Something failed!")
+            raise InternalError("Error with database (%s)" % str(e))
+        except BlacklistError as e:
+            raise BlacklistError(e)
diff --git a/gettor/db.py b/gettor/db.py
index 0b971af..7a595a3 100644
--- a/gettor/db.py
+++ b/gettor/db.py
@@ -44,8 +44,13 @@ class DB(object):
         :param: dbname (string) the path of the database.
 
         """
+        self.dbname = dbname
+
+
+    def connect(self):
+        """ """
         try:
-            self.con = sqlite3.connect(dbname)
+            self.con = sqlite3.connect(self.dbname)
             self.con.row_factory = sqlite3.Row
         except sqlite3.Error as e:
             raise DBError("%s" % str(e))





More information about the tor-commits mailing list