I'm seeing some strange behavior from ereporter in the development server. It looks like reloading modules is confusing things.
Here's the log. Comments are in []s. INFO 2010-01-01 19:44:53,108 appengine_rpc.py:157] Server: appengine.google. com INFO 2010-01-01 19:44:53,108 appcfg.py:348] Checking for updates to the SDK. INFO 2010-01-01 19:44:53,640 appcfg.py:362] The SDK is up to date. INFO 2010-01-01 19:44:53,921 dev_appserver_main.py:399] Running application application on port 80: http://0.0.0.0:80 [Now I visit a page that is guarantted to throw an exception.] **** registering ereporter [That message comes from my code that loads ereporter as specified in google/appengine/ext/ereporter/ereporter.py .] ERROR 2010-01-01 19:45:11,250 __init__.py:388] first pass Traceback (most recent call last): [irrelevant trace lines deleted] File "C:\appengine\google_appengine_1.3.0\application\msg_page.py", line 84, in render assert False, 'first pass' AssertionError: first pass [Ereporter behaves as expected - there's an appropriate ExceptionRecord in the datastore.] [Now I edit msg_page.py, which is a handler, and revisit the same url.] INFO 2010-01-01 19:45:11,265 dev_appserver.py:3243] "GET /msg/send HTTP/1.1" 500 - INFO 2010-01-01 19:45:11,280 dev_appserver_index.py:205] Updating C:\appengi ne\google_appengine_1.3.0\application\index.yaml **** registering ereporter [That message is curious. The file that loads ereporter wasn't changed. That file is, however, loaded by the handler which was changed.] ERROR 2010-01-01 19:45:42,655 __init__.py:388] second pass Traceback (most recent call last): [irrelevant trace lines deleted] File "C:\appengine\google_appengine_1.3.0\application\msg_page.py", line 84, in render assert False, 'second pass' AssertionError: second pass [The changed assertion verifies that the development server reloaded the handler.] [Now things get strange - ereporter fails.] Traceback (most recent call last): File "C:\appengine\google_appengine_1.3.0\google\appengine\ext \ereporter\erepo rter.py", line 216, in emit signature = self.__GetSignature(record.exc_info) File "C:\appengine\google_appengine_1.3.0\google\appengine\ext \ereporter\erepo rter.py", line 163, in __GetSignature frames = traceback.extract_tb(trace) AttributeError: 'NoneType' object has no attribute 'extract_tb' INFO 2010-01-01 19:45:42,671 dev_appserver.py:3243] "GET /msg/send HTTP/1.1" 500 - Interestingly enough, the ExceptionRecord in the datastore was updated appropriately - it now has a count of 2. It's no big deal if the fix is "restart the development server after any source file change", as long as everything works in production with saved handlers. (I have multiple handler files, each with their own main.) Thanks, -andy -- You received this message because you are subscribed to the Google Groups "Google App Engine" group. To post to this group, send email to google-appeng...@googlegroups.com. To unsubscribe from this group, send email to google-appengine+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-appengine?hl=en.