#424 [backend] fix tracebacks in copr-backend-log
Merged 5 years ago by praiskup. Opened 5 years ago by praiskup.

@@ -43,6 +43,11 @@

          if "traceback" in event:

              record.msg = "{}\n{}".format(record.msg, event.pop("traceback"))

  

+         # '%s %s' % (a, b) requires tuple, while

+         # json.loads(json.dumps(tuple)) returns array

+         if "args" in event and isinstance(event["args"], list):

+             event["args"] = tuple(event["args"])

+ 

          record.lineno = int(event.pop("lineno", "-1"))

          record.funcName = event.pop("funcName", None)

          record.pathname = event.pop("pathname", None)

@@ -126,7 +126,6 @@

          return False

  

      def init_buses(self):

-         self.log.info(self.opts.msg_buses)

          for bus_config in self.opts.msg_buses:

              self.msg_buses.append(MsgBusStomp(bus_config, self.log))

  

file modified
+11 -2
@@ -18,6 +18,7 @@

  import traceback

  

  from datetime import datetime

+ from threading import Thread

  

  import subprocess

  
@@ -41,7 +42,7 @@

      Load python file as configuration file, inspired by python-flask

      "from_pyfile()

      """

-     d = types.ModuleType(str('config'))

+     d = types.ModuleType('bus_config({0})'.format(filename))

      d.__file__ = filename

      try:

          with open(filename) as config_file:
@@ -396,6 +397,14 @@

          self.who = who

  

      def emit(self, record):

+         def default(obj):

+             if isinstance(obj, Thread):

+                 return obj.name # shows Thread-<ID>

+             if isinstance(obj, types.ModuleType):

+                 return "module " + obj.__name__

+             # This is better than traceback.

+             return "can't convert " + str(type(obj))

+ 

          try:

              msg = record.__dict__

              msg["who"] = self.who
@@ -405,7 +414,7 @@

                  _, error, tb = msg.pop("exc_info")

                  msg["traceback"] = format_tb(error, tb)

  

-             self.rc.publish(constants.LOG_PUB_SUB, json.dumps(msg))

+             self.rc.publish(constants.LOG_PUB_SUB, json.dumps(msg, default=default))

          # pylint: disable=W0703

          except Exception as error:

              _, _, ex_tb = sys.exc_info()

Metadata Update from @praiskup:
- Pull-request tagged with: release-blocker

5 years ago

rebased onto 514e5ab

5 years ago

Merging, it's more than 24 hours.

Pull-Request has been merged by praiskup

5 years ago