Changes

no edit summary
Line 1: Line 1:  
==Sugar should bring up an alert when an unhandled python exception occurs==
 
==Sugar should bring up an alert when an unhandled python exception occurs==
 +
 +
===Background Research===
 +
 +
Ideally,  all exceptions are caught and this scenario should never happen. However, currently, users are left wondering why a certain operation could not be performed and there is nothing to direct them towards their logs which is full of tracebacks.
 +
Therefore, it was required to print a notification alert whenever such a thing happens which stated “The operation requested could not be performed. Please check the logviewer activity for details”
 +
However, there was some confusion between whether the ‘unhandled’ exceptions were being talked about as Daniel Drake suspected that they were referring to exceptions that are
 +
not handled gracefully and instead fall back to a catch-all handler
 +
which does not have the knowledge to act on them because technically the exceptions are not unhandled, if they were unhandled then sugar would crash.
 +
Tomeu had expressed his desire to use the (Automated Bug Reporting Tool) -abrt functionality used by python processes for such issues. However, that would require some major changes and integration with the school server.
 +
In my frequent conversations with Aleksey at IRC- #ubuntu-sugarteam regarding the issue, Aleksey expressed that the bug was undesirable to him and that he preferred something like a bug report. He also mentioned that any proper fix for the bug would be too invasive.
 +
Initial Approach:
 +
Since, any exception is always logged. Thus, if we could check whether logging.ERROR has been called, there ,an exception has occured .Therefore, if we introduce a flag which attains True value when an exception occurs, and by checking the value of the flag in a GUI file we can generate an alert/notification. For this purpose, I had tried to get a git diff of the sugar.logger  and posted on sugar-devel  for feedback.
 +
However, this approach had major drawbacks as sugar uses standard python logging and any changes in that would be too invasive and inefficient.
 +
 +
===Method===
 +
Whenever any uncaught exception is raised, the interpreter calls the sys.excepthook(type,value,traceback). After some discussions at #python, we learnt how this functionality could be used in this scenario and prepared a git diff of the file src/jarabe/journal/journalactivity.py
 +
 +
===Implementation Code===
 +
 +
The following is the git diff. Please find the explanations as comments -
 +
 +
http://pastebin.com/7mEnHVVN
 +
 +
However, the above code caught the unhandled exceptions for only journal files  and displayed an error alert in the journal except for journalactivity.py. I realized that whenever any unhandled exception occurs in the file the ‘Journal’ icon itself disappears and there is no other way to go the Journal.
 +
 +
===Feedback===
 +
 +
1. To catch all unhandled python exceptions in sugar, where exactly should we be looking forward to be the venue for adding the functionality? -  Adding it in journalactivity.py doesn't seem to serve all purposes. It has to be added somewhere which is being used all the time.
 +
 +
2. Which GUI feature should be used to add the alert> Adding an alert in Journal looks fine for only Journal related exceptions.
 +
 +
===Contact===
 +
 +
Mukul Gupta
 +
mukul<at>seeta<do>in