12 comments

[ 2.9 ms ] story [ 43.4 ms ] thread
http://isitup.org/downornot.com

downornot.com is up.

It took 115 ms for a 302 response with an ip of 208.94.146.70.

Sure, it responds to a request, but is it really what you expected when you go to downornot.com?
Not sure how they get a 302, I get a 500. And in any case, a 302 is a redirect, they should follow it to know if it's really down.

http://www.downforeveryoneorjustme.com/downornot.org gives a better result, in my opinion.

I don't get an HTTP error, I get a stack trace:

  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.
Is the pun really worth the story?
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.
Someone likely used up their free quota:

  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:

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.

Well, it worked. I know it's down.