Hi Ikai, Thanks for replying with the info about mem cache staying up and a good way for me to detect the datastore's status. I'll change my datastore down-time detection method using this.
Since I use sessions extensively and unavoidably in my application (a big hello to Apache Wicket), do you have any general tips about how I should react to session disablement? Is a general worst case to present a page with a service disabled message during down-times? (I already display a functionality degredation message during mem cache (! = datastore!) down-times or my own pre-declared down-time date-time slots, but I still rely on sessions to do this). Cheers, Ian On Nov 9, 6:15 pm, "Ikai Lan (Google)" <[email protected]> wrote: > Hey Ian, > > During our maintenance periods, Memcache no longer goes down - we just flush > it. > > Our docs on handing maintenance periods is unfortunately out of date. Thanks > for bringing this to my attention. I'll put this on my plate to document it. > In the meantime, here is some sample code. You can use your IDE's > autocomplete to explore this API: > > http://pastie.org/1284924 > > import com.google.appengine.api.capabilities.CapabilitiesService; > import com.google.appengine.api.capabilities.CapabilitiesServiceFactory; > import com.google.appengine.api.capabilities.Capability; > import com.google.appengine.api.capabilities.CapabilityState; > > CapabilitiesService cs = > CapabilitiesServiceFactory.getCapabilitiesService(); > CapabilityState state = cs.getStatus(Capability.DATASTORE); > Capability capability = state.getCapability(); > > -- > Ikai Lan > Developer Programs Engineer, Google App Engine > Blogger:http://googleappengine.blogspot.com > Reddit:http://www.reddit.com/r/appengine > Twitter:http://twitter.com/app_engine > > On Tue, Nov 9, 2010 at 3:42 AM, Ian Marshall <[email protected]>wrote: > > > In the GAE/J documentation for "Gracefully Degrading During Scheduled > > Maintenance" it states > > > "Note: Because App Engine for Java sessions are backed by memcache and > > the datastore, sessions are effectively disabled during read-only > > periods. You must take this into account when designing your > > application." > > > My code for detecting datastore down-times failed during last > > Saturday's scheduled down-time. It attempts to detect a down-time by > > writing to the mem cache using a StrictErrorHandler, and responding to > > any MemcacheServiceException raised to disable parts of my web site > > which write to the datastore, but I got severe errors before this got > > detected: > > > com.google.apphosting.api.ApiProxy$CapabilityDisabledException: > > The API call datastore_v3.Put() is temporarily unavailable. > > > This could be my fault in many ways (perhaps the mem cache stayed up). > > In particular, I suspect that my app's use of sessions is at fault. > > The relevant fragment of my "appengine-web.xml" config is: > > > <appengine-web-app xmlns="http://appengine.google.com/ns/1.0"> > > ... > > <sessions-enabled>true</sessions-enabled> > > ... > > </appengine-web-app> > > > This may be a silly question, but in what ways can one anticipate, > > detect and handle the disabling of sessions during a datastore down- > > time period? > > > -- > > You received this message because you are subscribed to the Google Groups > > "Google App Engine for Java" group. > > To post to this group, send email to > > [email protected]. > > To unsubscribe from this group, send email to > > [email protected]<google-appengine-java%[email protected]> > > . > > For more options, visit this group at > >http://groups.google.com/group/google-appengine-java?hl=en. > > -- You received this message because you are subscribed to the Google Groups "Google App Engine for Java" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/google-appengine-java?hl=en.
