in invoker/core/src/main/java/com/google/cloud/functions/invoker/http/TimeoutFilter.java [38:70]
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException {
Timer timer = new Timer(true);
TimerTask timeoutTask =
new TimerTask() {
@Override
public void run() {
if (response instanceof HttpServletResponse) {
try {
((HttpServletResponse) response)
.sendError(HttpServletResponse.SC_REQUEST_TIMEOUT, "Request timed out");
} catch (IOException e) {
logger.warning("Error while sending HTTP response: " + e.toString());
}
} else {
try {
response.getWriter().write("Request timed out");
} catch (IOException e) {
logger.warning("Error while writing response: " + e.toString());
}
}
}
};
timer.schedule(timeoutTask, timeoutMs);
try {
chain.doFilter(request, response);
timeoutTask.cancel();
} finally {
timer.purge();
}
}