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.


Reply via email to