def done(self, reason): if log.isEnabledFor(logging.DEBUG): log.debug("done: %s %s\n%s", reason, "(aborted)" if self.is_aborted() else "", self.log_stream.getvalue()) self.has_sent_response = True retrigger = self.trg.retriggerOnCompletion if self.trg else False if self.cplns: # Report completions self.driver.send(cplns=self.cplns, request=self.request, retrigger=retrigger) elif self.calltips: self.driver.send(calltip=self.calltips[0], request=self.request, retrigger=retrigger) elif self.defns: # We can't exactly serialize blobs directly... def defn_serializer(defn): return defn.__dict__ self.driver.send(defns=list(map(defn_serializer, self.defns or [])), request=self.request, retrigger=retrigger) elif self.is_aborted(): pass # already reported the abort elif self.best_msg[0]: try: msg = "No %s found" % (self.desc, ) if self.have_errors: msg = self.best_msg[1] + " (error determining %s)" % ( self.desc, ) self.driver.report_error(self.log_stream.getvalue()) elif self.have_warnings: msg += "(warning: %s)" % (self.best_msg[1], ) except TypeError as ex: # Guard against this common problem in log formatting above: # TypeError: not enough arguments for format string log.exception("problem logging eval failure: self.log=%r", self.log_entries) msg = "error evaluating '%s'" % self.desc self.driver.fail(request=self.request, message=msg) else: # ERROR self.driver.fail(request=self.request, message=reason) self.log = log # If we have any more problems, put it in the main log self.log_stream.close() EvalController.done(self, reason)
def done(self, reason): log.debug("done: %s %s", reason, "(aborted)" if self.is_aborted() else "") self.has_sent_response = True retrigger = self.trg.retriggerOnCompletion if self.trg else False if self.cplns: # Report completions self.driver.send(cplns=self.cplns, request=self.request, retrigger=retrigger) elif self.calltips: self.driver.send(calltip=self.calltips[0], request=self.request, retrigger=retrigger) elif self.defns: # We can't exactly serialize blobs directly... def defn_serializer(defn): return defn.__dict__ self.driver.send(defns=map(defn_serializer, self.defns or []), request=self.request, retrigger=retrigger) elif self.is_aborted(): pass # already reported the abort elif self.best_msg[0]: try: msg = "No %s found" % (self.desc,) if self.have_errors: msg = self.best_msg[1] + " (error determining %s)" % (self.desc,) self.driver.report_error(self.log_stream.getvalue()) elif self.have_warnings: msg += "(warning: %s)" % (self.best_msg[1],) except TypeError as ex: # Guard against this common problem in log formatting above: # TypeError: not enough arguments for format string log.exception("problem logging eval failure: self.log=%r", self.log_entries) msg = "error evaluating '%s'" % desc self.driver.fail(request=self.request, message=msg) else: # ERROR self.driver.fail(request=self.request, message=reason) self.log = log # If we have any more problems, put it in the main log self.log_stream.close() EvalController.done(self, reason)
def done(self, reason): log.debug("done: %s %s", reason, "(aborted)" if self.is_aborted() else "") if self.cplns: # Report completions self.driver.send(cplns=self.cplns, request=self.request) elif self.calltips: self.driver.send(calltip=self.calltips[0], request=self.request) elif self.defns: # We can't exactly serialize blobs directly... def defn_serializer(defn): return defn.__dict__ self.driver.send(defns=map(defn_serializer, self.defns or []), request=self.request) elif self.is_aborted(): pass # already reported the abort elif self.silent: pass # don't output any errors elif self.best_msg[0]: try: msg = "No %s found" % (self.desc, ) if self.have_errors: msg = self.best_msg[1] + " (error determining %s)" % ( self.desc, ) self.driver.report_error(self.log_stream.getvalue()) elif self.have_warnings: msg += "(warning: %s)" % (self.best_msg[1], ) except TypeError as ex: # Guard against this common problem in log formatting above: # TypeError: not enough arguments for format string log.exception("problem logging eval failure: self.log=%r", self.log_entries) msg = "error evaluating '%s'" % desc self.driver.fail(request=self.request, message=msg) self.log_stream.close() EvalController.done(self, reason)