Traceback (most recent call last):
File "/base/python_runtime/python_lib/versions/1/google/appengine/ext/webapp/_webapp25.py", line 710, in __call__
handler.get(*groups)
File "/base/data/home/apps/wmc/12.348534319863004081/don.py", line 306, in get
self.work()
File "/base/data/home/apps/wmc/12.348534319863004081/don.py", line 364, in work
get_cpinfo()
File "/base/data/home/apps/wmc/12.348534319863004081/don.py", line 510, in get_cpinfo
for cp in DonCP.all().fetch(100):
File "/base/python_runtime/python_lib/versions/1/google/appengine/ext/db/__init__.py", line 2145, in fetch
return list(self.run(limit=limit, offset=offset, **kwargs))
File "/base/python_runtime/python_lib/versions/1/google/appengine/ext/db/__init__.py", line 2314, in next
return self.__model_class.from_entity(self.__iterator.next())
File "/base/python_runtime/python_lib/versions/1/google/appengine/datastore/datastore_query.py", line 2816, in next
next_batch = self.__batcher.next()
File "/base/python_runtime/python_lib/versions/1/google/appengine/datastore/datastore_query.py", line 2678, in next
return self.next_batch(self.AT_LEAST_ONE)
File "/base/python_runtime/python_lib/versions/1/google/appengine/datastore/datastore_query.py", line 2715, in next_batch
batch = self.__next_batch.get_result()
File "/base/python_runtime/python_lib/versions/1/google/appengine/api/apiproxy_stub_map.py", line 604, in get_result
return self.__get_result_hook(self)
File "/base/python_runtime/python_lib/versions/1/google/appengine/datastore/datastore_query.py", line 2452, in __query_result_hook
self._batch_shared.conn.check_rpc_success(rpc)
File "/base/python_runtime/python_lib/versions/1/google/appengine/datastore/datastore_rpc.py", line 1222, in check_rpc_success
rpc.check_success()
File "/base/python_runtime/python_lib/versions/1/google/appengine/api/apiproxy_stub_map.py", line 570, in check_success
self.__rpc.CheckSuccess()
File "/base/python_runtime/python_lib/versions/1/google/appengine/api/apiproxy_rpc.py", line 133, in CheckSuccess
raise self.exception
OverQuotaError: The API call datastore_v3.RunQuery() required more quota than is available.
HN's backend should occasionally submit things like this as a 'poor contributor' CAPTCHA. If you vote the story up then HN can penalize the account for dragging the site down.
OverQuotaError: The API call datastore_v3.RunQuery() required
more quota than is available.
I'm guessing that running a query on initial load is likely for capturing metrics. This should get refactored to fail silently and potentially also use a memcache-backed counter:
Basically, store the count in memcache and only commit to the datastore when the counter hits a certain amount. You run the risk of losing some of your analytics but it's more important to keep your resource usage low and your app online than it is to capture every single hit.
12 comments
[ 2.9 ms ] story [ 43.4 ms ] threaddownornot.com is up.
It took 115 ms for a 302 response with an ip of 208.94.146.70.
http://www.downforeveryoneorjustme.com/downornot.org gives a better result, in my opinion.
Gives the correct response - site is down. The www. is, of course, optional.
https://developers.google.com/appengine/articles/scaling/mem...
Basically, store the count in memcache and only commit to the datastore when the counter hits a certain amount. You run the risk of losing some of your analytics but it's more important to keep your resource usage low and your app online than it is to capture every single hit.
The URL gets truncated by HN. It's: www.isdownforeveryoneorjustmedownforeveryoneorjustme.com