[Urgent] No response after click

My project has encountered a issue that the Vaadin red circle rolling until timeout after a click (any button or component). This happened not so frequently but has possibility on any clickable objects.

Our initial thinking is the server may not be able to capture such request. However, through looking into and placing logs into the system, we found that the transaction start function was triggered by the async call. However, the target function cannot be executed and entered the transaction end function after timeout.

The question here is Why the button click event processing function cannot be entered (I marked a log there but no result print)? Is there any mechanism to let me trace the route between transaction start to the transaction end to let me know what happened?

Thanks in advance.

From the description, someone might not be able to help you. It will help if you could post a sample code.

Thanks your reply. Which part of source code should I provide? The class that extends Application Object?

Strange.
You could see what AbstractApplicationServlet.service() does and maybe even have your own copy of the class that does more logging there, but I suspect it is somewhere in your application code (maybe in a listener) that the application gets stuck, possibly e.g. with an exception or by locking something it shouldn’t.

Henri, thanks your reply. We did override AbstractApplicationServlet by our servlet class (service procedure is shown below). We are trying to mark the log to trace where cause the stopper. However, we found the log cannot reach our event handling routine. The gap between Transaction Start and Our Event handling Routine should be the Vaadin source code, right? We need to find a way to trace where has a problem. (As I checked that no error log throws excep the Async timeout throw by portal server)


	protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException,
			IOException {
		final Locale locale = localeResolver.resolveLocale(request);
		LocaleContextHolder.setLocale(locale);
		ServletRequestAttributes requestAttributes = new ServletRequestAttributes(request);
		RequestContextHolder.setRequestAttributes(requestAttributes);
		logger.info("Serice for "+applicationClass.getName());
		try {
			super.service(new HttpServletRequestWrapper(request) {
				@Override
				public Locale getLocale() {
					return locale;
				}
				
			}, response);
		} finally {
			if(!locale.equals(LocaleContextHolder.getLocale())) {
				if(logger.isDebugEnabled()) {
					logger.debug("locale changed, updating locale resolver");
				}
				localeResolver.setLocale(request, response, LocaleContextHolder.getLocale());
			}
			LocaleContextHolder.resetLocaleContext();
			RequestContextHolder.resetRequestAttributes();
		}
	}

The problem occurred again. Here is the log. You can see that the transaction started without any response. After Async Timeout throws, the transaction ended. com.vaadin.incubator.spring.servlet.SpringApplicationServlet is our servlet extends AbstractApplicationServlet. Where can I put the log to trace the probelm? Who can give me a hint? Thanks.

[12-5-21 23:44:27:030 CST]
0000033f SpringApplica I com.vaadin.incubator.spring.servlet.SpringApplicationServlet service Serice for ibs.web.app.module.CISTaskPlatformApplication
[12-5-21 23:44:27:045 CST]
0000033f CISTaskPlatfo I ibs.web.app.VaadinApplication requestStart __________ requestStart(HttpServletRequest,HttpServletResponse) username=wpsadmin, request.getSession().getId()=HL8Mzo_GVi0gub2jXRPBBqC
[12-5-21 23:44:27:045 CST]
0000033f CISTaskPlatfo I ibs.web.app.VaadinApplication transactionStart __________ transactionStart() username=wpsadmin, time=1337615067045
[12-5-21 23:44:27:045 CST]
0000033f CISTaskPlatfo I ibs.web.app.VaadinApplication transactionStart __________ transactionStart() username=wpsadmin, time=1337615067045
[12-5-21 23:45:00:015 CST]
00000707 SysInformatio I ibs.core.job.service.impl.SysInformationManagerImpl updateStock Stock update start
[12-5-21 23:45:00:827 CST]
00000707 SysInformatio I ibs.core.job.service.impl.SysInformationManagerImpl updateStock Stock update end
[12-5-21 23:47:27:048 CST]
0000033f SpringApplica I com.vaadin.incubator.spring.servlet.SpringApplicationServlet getApplicationClass Return Application Class: ibs.web.app.module.CISTaskPlatformApplication
[12-5-21 23:47:27:048 CST]
0000033f Application E Terminal error:
java.net.SocketTimeoutException: Async operation timed out
at com.ibm.ws.tcp.channel.impl.AioTCPReadRequestContextImpl.processSyncReadRequest(AioTCPReadRequestContextImpl.java:189)
at com.ibm.ws.tcp.channel.impl.TCPReadRequestContextImpl.read(TCPReadRequestContextImpl.java:111)
at com.ibm.ws.http.channel.impl.HttpServiceContextImpl.fillABuffer(HttpServiceContextImpl.java:4171)
at com.ibm.ws.http.channel.impl.HttpServiceContextImpl.readSingleBlock(HttpServiceContextImpl.java:3403)
at com.ibm.ws.http.channel.impl.HttpServiceContextImpl.readBodyBuffer(HttpServiceContextImpl.java:3509)
at com.ibm.ws.http.channel.inbound.impl.HttpInboundServiceContextImpl.getRequestBodyBuffer(HttpInboundServiceContextImpl.java:1705)
at com.ibm.ws.webcontainer.channel.WCCByteBufferInputStream.bufferIsGood(WCCByteBufferInputStream.java:373)
at com.ibm.ws.webcontainer.channel.WCCByteBufferInputStream.read(WCCByteBufferInputStream.java:266)
at com.ibm.ws.webcontainer.srt.http.HttpInputStream.read(HttpInputStream.java:325)
at java.io.InputStream.read(InputStream.java:97)
at com.vaadin.terminal.gwt.server.AbstractCommunicationManager.getRequestPayload(AbstractCommunicationManager.java:1386)
at com.vaadin.terminal.gwt.server.AbstractCommunicationManager.handleVariables(AbstractCommunicationManager.java:1187)
at com.vaadin.terminal.gwt.server.AbstractCommunicationManager.doHandleUidlRequest(AbstractCommunicationManager.java:735)
at com.vaadin.terminal.gwt.server.CommunicationManager.handleUidlRequest(CommunicationManager.java:296)
at com.vaadin.terminal.gwt.server.AbstractApplicationServlet.service(AbstractApplicationServlet.java:501)
at com.vaadin.incubator.spring.servlet.SpringApplicationServlet.service(SpringApplicationServlet.java:94)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:831)
at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1657)
at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1597)
at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:131)
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
at com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:184)
at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:116)
at com.ibm.ws.webcontainer.filter.WebAppFilterChain._doFilter(WebAppFilterChain.java:77)
at com.ibm.ws.webcontainer.filter.WebAppFilterManager.doFilter(WebAppFilterManager.java:908)
at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:934)
at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:502)
at com.ibm.ws.webcontainer.servlet.ServletWrapperImpl.handleRequest(ServletWrapperImpl.java:179)
at com.ibm.ws.webcontainer.webapp.WebApp.handleRequest(WebApp.java:3935)
at com.ibm.ws.webcontainer.webapp.WebGroup.handleRequest(WebGroup.java:276)
at com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:931)
at com.ibm.ws.webcontainer.WSWebContainer.handleRequest(WSWebContainer.java:1583)
at com.ibm.ws.webcontainer.channel.WCChannelLink.ready(WCChannelLink.java:186)
at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDiscrimination(HttpInboundLink.java:452)
at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewRequest(HttpInboundLink.java:511)
at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.processRequest(HttpInboundLink.java:305)
at com.ibm.ws.http.channel.inbound.impl.HttpICLReadCallback.complete(HttpICLReadCallback.java:78)
at com.ibm.ws.tcp.channel.impl.AioReadCompletionListener.futureCompleted(AioReadCompletionListener.java:165)
at com.ibm.io.async.AbstractAsyncFuture.invokeCallback(AbstractAsyncFuture.java:217)
at com.ibm.io.async.AsyncChannelFuture.fireCompletionActions(AsyncChannelFuture.java:161)
at com.ibm.io.async.AsyncFuture.completed(AsyncFuture.java:138)
at com.ibm.io.async.ResultHandler.complete(ResultHandler.java:204)
at com.ibm.io.async.ResultHandler.runEventProcessingLoop(ResultHandler.java:775)
at com.ibm.io.async.ResultHandler$2.run(ResultHandler.java:905)
at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1604)
Caused by: com.ibm.io.async.AsyncTimeoutException(Async operation timed out, [Timeout, rc=0]
)
at com.ibm.io.async.AsyncException.(AsyncException.java:42)
at com.ibm.io.async.AsyncTimeoutException.(AsyncTimeoutException.java:25)
at com.ibm.io.async.AbstractAsyncFuture.waitForCompletion(AbstractAsyncFuture.java:315)
at com.ibm.io.async.AsyncFuture.getByteCount(AsyncFuture.java:218)
at com.ibm.ws.tcp.channel.impl.AioSocketIOChannel.readAIOSync(AioSocketIOChannel.java:215)
at com.ibm.ws.tcp.channel.impl.AioTCPReadRequestContextImpl.processSyncReadRequest(AioTCPReadRequestContextImpl.java:182)
… 45 more

[12-5-21 23:47:27:048 CST]
0000033f CISTaskPlatfo I ibs.web.app.VaadinApplication transactionEnd __________ transactionEnd() username=wpsadmin, time=1337615247048, elapsed=180003
[12-5-21 23:47:27:048 CST]
0000033f CISTaskPlatfo I ibs.web.app.VaadinApplication transactionEnd __________ transactionEnd() username=wpsadmin, time=1337615247048, elapsed=180003

I found a similar issue
What may cause AbstractCommunicationManager.readRequest() hanged
before looks like the same syndrome. According to
XMLHttpRequest POST sometimes fails when server is using keep-alive
, I will try to disable the keep-alive in server to see whether the situation can improve.