KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
I have a Jetty server handling long running HTTP requests- the responses are generated by an a different process X and end up in a collector hash which Jetty requests periodically check. There are 3 cases: Process X finishes before the timeout period of the HTTP request - no problem Process X finishes after the timeout period of the request - no problem Process X never finishes - below exception occurs How do I detect this situation (3) and prevent the exception while allowing the other two cases to properly work? Exception: 2012-06-18 00:13:31.055:WARN:oejut.QueuedThreadPool: java.lang.IllegalStateException: IDLE,initial at org.eclipse.jetty.server.AsyncContinuation.complete(AsyncContinuation.java:569) at server.AsyncHTTPRequestProcessor.run(AsyncHTTPRequestProcessor.java:72) at org.eclipse.jetty.server.handler.ContextHandler.handle(ContextHandler.java:1119) at org.eclipse.jetty.server.AsyncContinuation$1.run(AsyncContinuation.java:875) at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:599) at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:534) at java.lang.Thread.run(Thread.java:679) Jetty continuation of an HTTP request: public class AsyncHTTPRequestProcessor implements Runnable { private ConcurrentHashMap<String, String> collector; private Logger logger; private AsyncContext ctx; //Defined this here because of strange behaviour when running junit //tests and the response json string being empty... private String responseStr = null; public AsyncHTTPRequestProcessor(AsyncContext _ctx, ConcurrentHashMap<String, String> _collector, Logger _logger) { ctx = _ctx; collector = _collector; logger = _logger; } @Override public void run() { logger.info("AsyncContinuation
Tags (comma-separated)
Save Edits
Cancel