[google-appengine] datastore timeouts?
anyone else seeing increased datastore timeouts? I've confirmed that traffic levels are normal i.e. not getting DOS'd... E 2015-12-28 15:19:09.728 error:Timeout('The datastore operation timed out, or the data was temporarily unavailable.',) ... E 2015-12-28 15:08:31.447 error:TransactionFailedError('too much contention on these datastore entities. please try again.',) adam -- You received this message because you are subscribed to the Google Groups "Google App Engine" group. To unsubscribe from this group and stop receiving emails from it, send an email to google-appengine+unsubscr...@googlegroups.com. To post to this group, send email to google-appengine@googlegroups.com. Visit this group at https://groups.google.com/group/google-appengine. To view this discussion on the web visit https://groups.google.com/d/msgid/google-appengine/f458c5e9-ae4e-4f5b-9d0f-04d792d79646%40googlegroups.com. For more options, visit https://groups.google.com/d/optout.
[google-appengine] Datastore Timeouts
My app is throwing tons of datastore timeouts. Seems to be worse after maintenance. AppEngine team, please fix this. I cant take these errors anymore. And not to mention i am paying for this service. Also please provide easier path to HA datastore. Please dont tell it is on your roadmap. This should have already be taken care off. We are your current customers, while all your energy seems to be focused on future customers. Pretty please, listen to the ones who are already paying. -- 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 google-appengine+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-appengine?hl=en.
[google-appengine] Datastore Timeouts
Hi there, I'm recently getting a lot of datastore timeouts. app id = networkedhub The datastore operation timed out, or the data was temporarily unavailable. Regards, Waleed -- 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.
[google-appengine] Datastore timeouts - retry or just let fail?
Hi all, I've got a query that fetches an entity by key_name, and now and then (maybe once or twice a day) it times out. Reading the docs, it seems like this is fairly common. Most of times I see it it's from a search bot or something, so I haven't really bothered doing anything, but since it is affecting visitors to, I wonder if I should. I saw some code that retries failed data access, but I don't know how long whatever causes these timeouts takes. Is it likely to just time out again if it's re-issued immediately? Should I just let the 500 be served, and hope the user/bot retries, or is it recommended to wait a few seconds and try again? I'd be interesting in hearing peoples experiences with retrying. Do retries just fail too, or does it generally clear up the problem? -- 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.
[google-appengine] Datastore timeouts
Last several minutes my app experiences a lot of datastore timeouts What can be the problem? App id is: sovpad --~--~-~--~~~---~--~~ 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 google-appengine+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/google-appengine?hl=en -~--~~~~--~~--~--~---
[google-appengine] datastore timeouts on get_or_insert
Our application was running with 1 user this morning and received a datastore timeout. The code has no loops in it, it gets 1 row each from 4 entities, 2 of them by key using get_or_insert and 2 of them using a reference property. They are all root entities and there is no contention as you can see from the log below. The tables all have <1000 rows in them. The timeout happened on the first datastore call using get_or_insert. Even if I retried this call it is bananas waiting 3 seconds for a single row to come back. Am I better off doing a get and if that fails then trying the get_or_insert? It looks like other applications running on the server are affecting my application. If I was being billed I believe this would cost me money. Here's the log, no transactions have been removed, the two transactions at 2:11AM failed with a huge cpu spike. 05-14 02:24AM 55.926 /api/ 200 1040ms 1116cpu_ms 218api_cpu_ms 0kb 05-14 02:22AM 08.620 /api/ 200 198ms 237cpu_ms 160api_cpu_ms 0kb 05-14 02:22AM 07.806 /api/ 200 258ms 279cpu_ms 218api_cpu_ms 0kb 05-14 02:22AM 05.176 /api/ 200 205ms 218cpu_ms 160api_cpu_ms 0kb 05-14 02:22AM 00.864 /api/ 200 774ms 979cpu_ms 160api_cpu_ms 0kb 05-14 02:11AM 22.391 /client/ 500 3189ms 6357cpu_ms 6093api_cpu_ms 10kb 05-14 02:11AM 18.195 /api/ 500 3444ms 6450cpu_ms 6212api_cpu_ms 8kb 05-14 02:10AM 37.957 /api/ 200 175ms 223cpu_ms 160api_cpu_ms 0kb 05-14 02:10AM 27.585 /api/ 200 906ms 1005cpu_ms 160api_cpu_ms 0kb Thank you very much for any assistance. --~--~-~--~~~---~--~~ 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 google-appengine+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/google-appengine?hl=en -~--~~~~--~~--~--~---
[google-appengine] Datastore timeouts - anyone else?
I seem to be getting a few datastore timeouts. If I look at percentages it isn't really that much but it does clog up the log. The timeouts tend to correspond with the spikes in latency. http://code.google.com/status/appengine/detail/datastore/2009/03/30#ae-trust-detail-datastore-get-latency I would be quite happy if the data was returned in the time specified (300 miliseconds) but the pages are timing out at 6000 or 8000 miliseconds. Has something changed with the google app engine which needs some code to be changed on my pages? --~--~-~--~~~---~--~~ 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 google-appengine+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/google-appengine?hl=en -~--~~~~--~~--~--~---
[google-appengine] Datastore Timeouts ( large amount of data per row )
I understand that there have been recent problems with latency with regards to the datastore. I am not sure if it is the app engine environment that is the problem or if is my app. I am consistently getting datastore timeouts for certain querys. My app is storing farely large image files ~500KB each in the datastore. Since I want my user to by upload images files dynamically, putting them in the datastore seems to be the only way of doing this. I have around 80 images in the datastore currently. I looked into only fetch'ing() a certain limit at a time and then incrementing offset however the datastore still fetch's a constant number of rows from the datastore. Is there anyway around this problem ( or perhaps a better way of handling this ). --~--~-~--~~~---~--~~ 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 google-appengine+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/google-appengine?hl=en -~--~~~~--~~--~--~---
[google-appengine] Datastore timeouts and retries.
Hi there, Having got my application to a barely working state last week, I tried to demonstrate it to a friend. Before he had even reached the main page of the application, a Datastore timeout had occurred while updating his session record. I talked to a few people about this, and it seems when this occurs it is usually safe to retry the operation a few times. I've been thinking about this issue a little since then, and have reached the conclusion that my application code should not need to be handling this explicitly at all. I considered the following avenues for continuity in the face of a Datastore timeout: * Somehow use memcache as an alternative. This assumes that during some future request, my code would eventually retry the operation and it would succeed, and in the meantime, memcache does not get flushed. Anywhere this kind of data needs accessed, my code would need to explicitly check both memcache and the datastore. Basically this seems like a dumb thing to attempt. * Use some alternative storage via urlfetch. This seems pretty much insane. * Return a friendly error message This seems premature unless we've already retried the operation a few times. * Retry the operation. Leaving the fourth option, which seems to me, should be the default. I've been trying to think of the downsides of wrapping or monkey-patching the Datastore API to always automatically retry, and I'm coming up blank. I can imagine there are cases when such automatic behaviour might not be ideal, and so, perhaps providing an extra parameter to get()/put()/Query.fetch() to disable it would work. Any thoughts? It kinda sucks that user code needs to handle these exceptions when the only real sane thing it can do is retry the operation. As always, I'm probably missing something obvious. :) Thanks, David. -- It is better to be wrong than to be vague. — Freeman Dyson --~--~-~--~~~---~--~~ 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 google-appengine+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/google-appengine?hl=en -~--~~~~--~~--~--~---
[google-appengine] Datastore timeouts
I have a class that holds advanced information for a frame of bowling. It looks like: class Frame(db.Model): version = db.IntegerProperty(default=1) user = db.UserProperty() game = db.ReferenceProperty(Game, required=True) frame_number = db.IntegerProperty(required=True) first_count = db.IntegerProperty(required=True) second_count = db.IntegerProperty() total_count = db.IntegerProperty() score = db.IntegerProperty() ball = db.ReferenceProperty(Ball) stance = db.FloatProperty() target = db.FloatProperty() actual = db.FloatProperty() slide = db.FloatProperty() breakpoint = db.FloatProperty() pocket = db.BooleanProperty() pocket_type = db.StringProperty() notes = db.TextProperty() first_pinfall = db.ListProperty(bool) second_pinfall = db.ListProperty(bool) split = db.BooleanProperty(default=False) Here is the code the takes the form input and updates or creates a new frame. I get datastore timeouts on this rather often, on the frame.put() command. Is there some good way to code this more optimally? Just getting to frame.put() sometimes takes 15000 mcycles() class FrameActions(webapp.RequestHandler): def get(self): self.post() def post(self): user = users.get_current_user() if not user: self.redirect('/unauth.html') action = self.request.get('action') if action=="edit": self.edit_frame(user) return else: gameId = self.request.get('game') if gameId: self.redirect("edit-game.html?game="+gameId) return self.redirect("series.html") def edit_frame(self, user): game = model.get_for_user(type=model.Game, id=self.request.get('game'), user=user, allow_public=False) #This is simple dao code if not game: self.redirect("series.html?errMsg=The&20game&20could&20not&20be&20found") return frame_number = self.request.get('frame_number') if not frame_number: self.redirect("edit-game.html?game="+gameId); return; errors=[] last_frame = game.get_last_frame() # data_store query, orders game.frame_set in reverse and uses get() highest_allowed = 1 if last_frame: highest_allowed = last_frame.frame_number + 1 if frame_number: frame_number = int(frame_number) if frame_number > highest_allowed: frame_number = highest_allowed else: frame_number = highest_allowed # check 11th and 12th legality if frame_number == 11 and not game.allow_11th(): # checks that game.frame_set().filter("frame_number =", 10).totalCount == 10 self.redirect("edit-game.html?game="+gameId); return; if frame_number == 12 and not game.allow_11th(): # checks that game.frame_set().filter("frame_number =", 10).firstCount == 10, and the same for frame number 11 self.redirect("edit-game.html?game="+gameId); return; first_pinfall = [] first_count=0 for pin in range(1,11): if self.request.get('f1p'+str(pin)) == "down": first_pinfall += [True] first_count+=1 else: first_pinfall += [False] do_second = True if frame_number == 12: do_second = False elif frame_number == 11: tenth = game.frame_set.filter("frame_number =",10).get() do_second = tenth.first_count == 10 if not do_second: second_pinfall = [] second_count=None else: second_pinfall = [] second_count=0 for pin in range(1,11): if self.request.get('f2p'+str(pin)) == "down": second_pinfall += [True] if not first_pinfall[pin-1]: second_count+=1 else: second_pinfall += [False] frame = game.frame_set.filter("frame_number =", frame_number).get() if not frame: logging.debug("Creating new frame") frame = model.Frame(user=user,game=game,frame_number=frame_number,first_count=first_count,second_count=second_count) else: logging.debug("Updating existing frame") frame.first_count=first_count frame.second_count=second_count frame.first_pinfall = first_pinfall frame.second_pinfall = second_pinfall frame.ball = model.get_for_user(type = model.Ball, user=user, id=self.request.get('ball'), allow_public=False) if self.request.get('stance'): try: frame.stance = float(self.request.get('stance')) except: errors += ["Stance is not a valid board!"] else: frame.stance = None if self.request.get('target'): try: frame.target = float(self.request.get('target')) except: errors += ["Target is not a valid board!"] else: frame.target = None if self.request.get('actual'): try: frame.actual = float(self.request.get('actual')) except: errors += ["Actual board hit is not a valid board!"] else: frame.actual = None if self.request.get('slide'): try: frame.slide = float(self.request.get('slid
[google-appengine] Datastore Timeouts Must Die
Please see: http://code.google.com/p/googleappengine/issues/detail?id=764 There is a recent thread on this group titled "Why Google App Engine is broken and what Google must do to fix it." I personally don't think that any of the topics raised by the OP of that thread imply that anything is broken - they are just feature requests. What *is* broken, however, is writing to the Datastore. Lots of developers, not just me, have been complaining about this here for months. I don't think there's been any real response from the Google team about this. This issue needs to be investigated and hopefully fixed before App Engine can be used for production. The probability of failure for any given data write request is just too high right now. I actually *am* using App Engine in production and somewhat regretting it, mostly due to this issue. --~--~-~--~~~---~--~~ 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 -~--~~~~--~~--~--~---