I'm using Spring social 1.0.1.RELEASE and framework 3.1.0.RELEASE to make various Facebook calls, and a 1.1.0 facebook variant.
I'm having a very hard time figuring out how to set the read timeout on the low level calls. The level of indirection is maddening, and ends deep in private static classes I have little hope of sub-classing.
The system ends up delegating to org.springframework.social.support.HttpComponentsC lientHttpRequestFactory which sets a read timeout of 60,000 ms. I wish to set the timeout lower, since some fraction of my Facebook calls timeout, and I wish to have them error out faster!
Oddly, these errors happen more when several threads are making simultaneous requests.
n.b. I have made modifications to my spring social libraries for other requested features, so am not running pure. If this has been fixed in more up to date versions, that would make me happy, and have to merge.
Thanks,
rbb
--
exception info:
org.springframework.web.client.ResourceAccessExcep tion: I/O error: Read timed out; nested exception is java.net.SocketTimeoutException: Read timed out
at org.springframework.web.client.RestTemplate.doExec ute(RestTemplate.java:453)
at org.springframework.web.client.RestTemplate.execut e(RestTemplate.java:415)
at org.springframework.web.client.RestTemplate.getFor Object(RestTemplate.java:213)
at org.springframework.social.facebook.api.impl.Faceb ookTemplate.fetchObject(FacebookTemplate.java:205)
at com.inqmobile.inqcloud.service.FacebookQueryServic e.multiQuery(FacebookQueryService.java:75)
at com.inqmobile.inqcloud.service.FacebookNewsHarvest Service.doHarvestDetails(FacebookNewsHarvestServic e.java:187)
at com.inqmobile.inqcloud.service.FacebookNewsHarvest Service.doHarvestByKeys(FacebookNewsHarvestService .java:133)
at com.inqmobile.inqcloud.service.FacebookNewsHarvest Service.getHarvestItemsBySocialKeys(FacebookNewsHa rvestService.java:108)
at com.inqmobile.inqcloud.service.HarvestFeedService. harvestSocialKey(HarvestFeedService.java:73)
at com.inqmobile.inqcloud.service.HarvestFeedService. harvestFeed(HarvestFeedService.java:64)
at com.inqmobile.inqcloud.task.HarvestFeedAsyncTask.r un(HarvestFeedAsyncTask.java:40)
at java.util.concurrent.ThreadPoolExecutor.runWorker( ThreadPoolExecutor.java:1110)
at java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:603)
at java.lang.Thread.run(Thread.java:679)
Caused by: java.net.SocketTimeoutException: Read timed out
at java.net.SocketInputStream.socketRead0(Native Method)
at java.net.SocketInputStream.read(SocketInputStream. java:146)
at sun.security.ssl.InputRecord.readFully(InputRecord .java:312)
at sun.security.ssl.InputRecord.read(InputRecord.java :350)
at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocke tImpl.java:850)
at sun.security.ssl.SSLSocketImpl.readDataRecord(SSLS ocketImpl.java:807)
at sun.security.ssl.AppInputStream.read(AppInputStrea m.java:94)
at org.apache.http.impl.io.AbstractSessionInputBuffer .fillBuffer(AbstractSessionInputBuffer.java:149)
at org.apache.http.impl.io.SocketInputBuffer.fillBuff er(SocketInputBuffer.java:110)
at org.apache.http.impl.io.AbstractSessionInputBuffer .readLine(AbstractSessionInputBuffer.java:264)
at org.apache.http.impl.conn.DefaultResponseParser.pa rseHead(DefaultResponseParser.java:98)
at org.apache.http.impl.io.AbstractMessageParser.pars e(AbstractMessageParser.java:252)
at org.apache.http.impl.AbstractHttpClientConnection. receiveResponseHeader(AbstractHttpClientConnection .java:281)
at org.apache.http.impl.conn.DefaultClientConnection. receiveResponseHeader(DefaultClientConnection.java :247)
at org.apache.http.impl.conn.AbstractClientConnAdapte r.receiveResponseHeader(AbstractClientConnAdapter. java:216)
at org.apache.http.protocol.HttpRequestExecutor.doRec eiveResponse(HttpRequestExecutor.java:298)
at org.apache.http.protocol.HttpRequestExecutor.execu te(HttpRequestExecutor.java:125)
at org.apache.http.impl.client.DefaultRequestDirector .tryExecute(DefaultRequestDirector.java:647)
at org.apache.http.impl.client.DefaultRequestDirector .execute(DefaultRequestDirector.java:464)
at org.apache.http.impl.client.AbstractHttpClient.exe cute(AbstractHttpClient.java:820)
at org.apache.http.impl.client.AbstractHttpClient.exe cute(AbstractHttpClient.java:754)
at org.apache.http.impl.client.AbstractHttpClient.exe cute(AbstractHttpClient.java:732)
at org.springframework.social.support.HttpComponentsC lientHttpRequest.executeInternal(HttpComponentsCli entHttpRequest.java:81)
at org.springframework.social.support.AbstractBufferi ngClientHttpRequest.executeInternal(AbstractBuffer ingClientHttpRequest.java:48)
at org.springframework.http.client.AbstractClientHttp Request.execute(AbstractClientHttpRequest.java:49)
at org.springframework.http.client.InterceptingClient HttpRequest$RequestExecution.execute(InterceptingC lientHttpRequest.java:91)
at org.springframework.social.oauth2.OAuth2RequestInt erceptor.intercept(OAuth2RequestInterceptor.java:4 5)
at org.springframework.http.client.InterceptingClient HttpRequest$RequestExecution.execute(InterceptingC lientHttpRequest.java:81)
at org.springframework.http.client.InterceptingClient HttpRequest.executeInternal(InterceptingClientHttp Request.java:67)
at org.springframework.http.client.AbstractBufferingC lientHttpRequest.executeInternal(AbstractBuffering ClientHttpRequest.java:46)
at org.springframework.http.client.AbstractClientHttp Request.execute(AbstractClientHttpRequest.java:49)
at org.springframework.social.support.BufferingClient HttpRequest.executeInternal(BufferingClientHttpReq uest.java:57)
at org.springframework.social.support.AbstractBufferi ngClientHttpRequest.executeInternal(AbstractBuffer ingClientHttpRequest.java:48)
at org.springframework.http.client.AbstractClientHttp Request.execute(AbstractClientHttpRequest.java:49)
at org.springframework.http.client.InterceptingClient HttpRequest$RequestExecution.execute(InterceptingC lientHttpRequest.java:91)
at org.springframework.social.oauth2.OAuth2RequestInt erceptor.intercept(OAuth2RequestInterceptor.java:4 5)
at org.springframework.http.client.InterceptingClient HttpRequest$RequestExecution.execute(InterceptingC lientHttpRequest.java:81)
at org.springframework.http.client.InterceptingClient HttpRequest.executeInternal(InterceptingClientHttp Request.java:67)
at org.springframework.http.client.AbstractBufferingC lientHttpRequest.executeInternal(AbstractBuffering ClientHttpRequest.java:46)
at org.springframework.http.client.AbstractClientHttp Request.execute(AbstractClientHttpRequest.java:49)
at org.springframework.social.support.BufferingClient HttpRequest.executeInternal(BufferingClientHttpReq uest.java:57)
at org.springframework.social.support.AbstractBufferi ngClientHttpRequest.executeInternal(AbstractBuffer ingClientHttpRequest.java:48)
at org.springframework.http.client.AbstractClientHttp Request.execute(AbstractClientHttpRequest.java:49)
at org.springframework.http.client.InterceptingClient HttpRequest$RequestExecution.execute(InterceptingC lientHttpRequest.java:91)
at org.springframework.social.oauth2.OAuth2RequestInt erceptor.intercept(OAuth2RequestInterceptor.java:4 5)
at org.springframework.http.client.InterceptingClient HttpRequest$RequestExecution.execute(InterceptingC lientHttpRequest.java:81)
at org.springframework.http.client.InterceptingClient HttpRequest.executeInternal(InterceptingClientHttp Request.java:67)
at org.springframework.http.client.AbstractBufferingC lientHttpRequest.executeInternal(AbstractBuffering ClientHttpRequest.java:46)
at org.springframework.http.client.AbstractClientHttp Request.execute(AbstractClientHttpRequest.java:49)
at org.springframework.web.client.RestTemplate.doExec ute(RestTemplate.java:438)
... 13 more


Reply With Quote
