Stanton, Thanks for pointing me in the right direction. It does appear I have a problem with my NO_CACHE setting.
I do the following when rendering the gadget. renderParams[osapi.container.RenderParam.NO_CACHE] = true; container.navigateGadget( gadgetSite, gadget.appUrl, {}, renderParams, function(gadgetInfo) However I’m not seeing it set in MakeRequestHandler.java where it does req.setIgnoreCache("1".equals(getParameter(request, Param.NO_CACHE.getKey(), null))); Looking into this. From looking at the code it does seem like all this staleResponse and caching mumbo-jumbo should be bypassed if I get this set right. Thanks, doug On Aug 20, 2014, at 4:44 PM, Davies,Douglas <davi...@oclc.org> wrote: > The response code on the first request is a 200 and I see an access token > created in the db. Then the next call is the one that returns the 500. I > tried the “nocache” but wasn’t successful. Let me try again. > > What I ended up doing was this (just to test — not necessarily the solution). > I extended DefaultRequestPipeline and then bound to it with Guice. > > @Singleton > public class PlatformDefaultRequestPipeline extends DefaultRequestPipeline { > > @Inject > public PlatformDefaultRequestPipeline(HttpFetcher httpFetcher, > HttpCache httpCache, > Provider<OAuthRequest> oauthRequestProvider, > Provider<OAuth2Request> > oauth2RequestProvider, > @RewriterRegistry(rewriteFlow = > ResponseRewriterList.RewriteFlow.REQUEST_PIPELINE) > ResponseRewriterRegistry > responseRewriterRegistry, > InvalidationService invalidationService, > @Nullable HttpResponseMetadataHelper > metadataHelper) { > > super(httpFetcher, httpCache, oauthRequestProvider, > oauth2RequestProvider, responseRewriterRegistry, > invalidationService, metadataHelper); > } > > protected HttpResponse fixFetchedResponse(HttpRequest request, > HttpResponse fetchedResponse, > @Nullable HttpResponse > invalidatedResponse, @Nullable HttpResponse staleResponse) > throws GadgetException { > > // Don't touch OAUTH2 requests (for now!!!) > > if (request.getAuthType() == AuthType.OAUTH2) { > > return fetchedResponse; > } > > return super.fixFetchedResponse(request, fetchedResponse, > invalidatedResponse, staleResponse); > } > > } > > It just bypasses the fixFetchedResponse for oauth2 calls. When I do this my > gadget behaves as desired. Maybe that helps shed some more light on it. > > doug > > > > On Aug 20, 2014, at 4:30 PM, Stanton Sievers > <ssiev...@apache.org<mailto:ssiev...@apache.org>> wrote: > > Hey Doug, > > What's the HTTP response code on the first request that returns the > oauthApprovalUrl? From what I can tell, if the cachedResponse has a status > code >=400, we won't use it as the staleResponse in the case of a 500 error > on the subsequent request. > > Regarding not caching your service calls at all, you can use the "nocache" > in the render parameters but that will result in ALL calls bypassing the > cache and not just your particular service calls. > > Regards, > -Stanton > > > On Wed, Aug 20, 2014 at 11:18 AM, Davies,Douglas > <davi...@oclc.org<mailto:davi...@oclc.org>> wrote: > > Hi Guys, > > It’s Doug Davies. Been a while since I’ve been active on the shindig mail > list. We are getting back into our shindig implementation. We have > upgraded our container to the latest release. > > We are having an issue that I think I brought up in the past, but I can’t > find the thread in the archives. > > Here’s the scenario… > > We have an oauth2 gadget that makes a request to one of our internal > services. That service happens to return a 500 error for a bad parameter > that gets passed in (I know probably not the right response, but I don’t > have control over that). When it makes the first call to the service it > gets back an oauthApprovalUrl like it should. I then present the UI for > that link to initiate the oauth2 handshake. Once it’s done the gadget then > makes the request again, this time with an access token. However, since > the service returns a 500 it seems the DefaultRequestPipeline code uses the > “staleResponse” (the last successful response that had the oauthApprovalUrl > in it) and so I get into an infinite loop. > > I tried setting > > params[gadgets.io.RequestParameters.REFRESH_INTERVAL] = 0; > > but that doesn’t seem to matter. Ideas on how to solve this? Even if a > 500 error isn’t the right response to be returning, it still seems like I’d > want to detect that this happened rather than the response looking like the > oauth flow needs to be initiated again. > > In fact, I don’t know that I want any of my service calls being cached. > > Thanks, > Doug Davies > > > >