Hi, Our engineers are currently investigating this issue.
-Marzia On Wed, Nov 26, 2008 at 11:11 AM, Fred <[EMAIL PROTECTED]> wrote: > > Seems to fluctuate between an 'internal error' and the deadline > exceeded error. > > On Nov 26, 7:09 pm, Fred <[EMAIL PROTECTED]> wrote: > > I'm getting timeouts at the moment when fetching a single item from > > the datastore: > > > > Traceback (most recent call last): > > File "/base/python_lib/versions/1/google/appengine/ext/webapp/ > > __init__.py", line 499, in __call__ > > handler.get(*groups) > > File "/base/data/home/apps/mycycleroute/1.329543171657420466/ > > main.py", line 1583, in get > > 'greeting' : getUserGreeting(self), > > File "/base/data/home/apps/mycycleroute/1.329543171657420466/ > > main.py", line 1773, in getUserGreeting > > userPreferencesQuery = db.GqlQuery("SELECT * FROM UserPreferences > > WHERE user = :1", user).fetch(1) > > File "/base/python_lib/versions/1/google/appengine/ext/db/ > > __init__.py", line 1377, in fetch > > raw = self._get_query().Get(limit, offset) > > File "/base/python_lib/versions/1/google/appengine/api/ > > datastore.py", line 938, in Get > > return self._Run(limit, offset)._Next(limit) > > File "/base/python_lib/versions/1/google/appengine/api/ > > datastore.py", line 879, in _Run > > apiproxy_stub_map.MakeSyncCall('datastore_v3', 'RunQuery', pb, > > result) > > File "/base/python_lib/versions/1/google/appengine/api/ > > apiproxy_stub_map.py", line 46, in MakeSyncCall > > stub.MakeSyncCall(service, call, request, response) > > File "/base/python_lib/versions/1/google/appengine/runtime/ > > apiproxy.py", line 246, in MakeSyncCall > > rpc.CheckSuccess() > > File "/base/python_lib/versions/1/google/appengine/runtime/ > > apiproxy.py", line 189, in CheckSuccess > > raise self.exception > > DeadlineExceededError: The API call datastore_v3.RunQuery() took too > > long to respond and was cancelled. > > > > :( > > > > This is on the front page of my site! > > > > On Nov 26, 4:27 am, Rob <[EMAIL PROTECTED]> wrote: > > > > > Hi Marzia, > > > > > Thanks again for the help. I've done some careful tracing through > > > my code to document exactly the number of datastore requests on a > > > typical failure. I believe they are very minimal but I'd be very > > > interested to hear your advice. > > > > > > Is that the only datastore query in the request, or does the request > also > > > > contain other datastore queries? To clarify, it may be timing out > here as a > > > > result of the total number of results fetched in the entire request. > > > > > Here is a list of the datastore gets and puts that are called, in > > > order for a typical failed execution. There are no queries which > > > return more than a single Entity and I tried to grab the database > > > Entities directly by id when possible: > > > > > # Grabs a single player out of the database by id > > > self.db = datamodel.PlayerDb2.get(db.Key(id)) > > > > > # Checks the state of a single room (by id) > > > self.db = id > > > data = self.db.state > > > > > # For the current player, checks the list of drawers > > > # to verify the player is not next to draw > > > if self.db.wannaDrawList and len(self.db.wannaDrawList): > > > return self.db.wannaDrawList[0] > > > > > # Updates the player's last connection time and > > > # puts it back into the database > > > self.db.lastPing = time > > > self.db.put() > > > > > I just did a scan of my recent errors in my logs and it appears that > > > the total execution time for all of the above commands (plus the logic > > > surrounding it) is about 80 to 130ms. This part never seems to time > > > out--but the problem query below seems to hang for several seconds > > > before regularly timing out. In addition, I used to have many more > > > database accesses in this part of the code before and those have all > > > been removed in order to try to fix the consistent time outs for the > > > "pruneInactive" function. So far I've never been able to move the > > > timeout around or see it fail in another place. > > > > > Here is the current version of the pruneInactive function where the > > > timeout happens: > > > > > ------ Code Snippet ------ > > > > > # first, grab all the players who's ping is older than 10 > > > seconds in our room > > > # 8 maximum players per room > > > query = datamodel.PlayerDb2.all() > > > query.filter("room =", self.db.room) > > > query.filter("lastPing <", time.time() - TIMEOUT_TIME) > > > > > logging.debug("Query is built\n") > > > > > # Run the query for up to 5 players > > > results = query.fetch(5) # this is the timeout line > > > logging.debug("Query is executed (limit 5)\n") > > > > > ... > > > > > ------ End Code Snippet ------ > > > > > Thanks again for your help with this confusing issue. (At least it's > > > confusing to me!) > > > > > Sincerely, > > > > > Rob > > > > > > > --~--~---------~--~----~------------~-------~--~----~ 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-appengine@googlegroups.com To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/google-appengine?hl=en -~----------~----~----~----~------~----~------~--~---