Reputation: 399
Appstats throw TypeError exception and caused server crash in appstats/formatting.py. It seems to sort a dictionary with None as a key. Turn off appstats and then it works fine.
Here is the call stack,
File "/base/data/home/runtimes/python27_experiment/python27_lib/versions/1/google/appengine/ext/ndb/context.py", line 1107, in _memcache_get_tasklet
rpc=rpc)
File "/base/data/home/runtimes/python27_experiment/python27_lib/versions/1/google/appengine/api/memcache/__init__.py", line 616, in get_multi_async
user_key)
File "/base/data/home/runtimes/python27_experiment/python27_lib/versions/1/google/appengine/api/memcache/__init__.py", line 384, in _make_async_call
rpc.make_call(method, request, response, get_result_hook, user_data)
File "/base/data/home/runtimes/python27_experiment/python27_lib/versions/1/google/appengine/api/apiproxy_stub_map.py", line 528, in make_call
self.__service, method, request, response, self.__rpc)
File "/base/data/home/runtimes/python27_experiment/python27_lib/versions/1/google/appengine/api/apiproxy_stub_map.py", line 206, in Call
function(service, call, request, response, rpc)
File "/base/data/home/runtimes/python27_experiment/python27_lib/versions/1/google/appengine/ext/appstats/recording.py", line 1441, in pre_call_hook
recorder_proxy.record_rpc_request(service, call, request, response, rpc)
File "/base/data/home/runtimes/python27_experiment/python27_lib/versions/1/google/appengine/ext/appstats/recording.py", line 566, in record_rpc_request
self.get_call_stack(trace)
File "/base/data/home/runtimes/python27_experiment/python27_lib/versions/1/google/appengine/ext/appstats/recording.py", line 879, in get_call_stack
if not self.get_frame_summary(frame, trace):
File "/base/data/home/runtimes/python27_experiment/python27_lib/versions/1/google/appengine/ext/appstats/recording.py", line 937, in get_frame_summary
x.set_value(format_value(value))
File "/base/data/home/runtimes/python27_experiment/python27_lib/versions/1/google/appengine/ext/appstats/recording.py", line 995, in format_value
return formatting._format_value(val, config.MAX_REPR, config.MAX_DEPTH)
File "/base/data/home/runtimes/python27_experiment/python27_lib/versions/1/google/appengine/ext/appstats/formatting.py", line 265, in _format_value
series = sorted(val)
TypeError: can't compare datetime.date to NoneType
Here is the context,
Is it a bug?
Upvotes: 0
Views: 32
Reputation: 399
The problem occurs when None is a key in a dictionary. Using string 'None' to replace None solves the problem.
Upvotes: 0