[JBoss JIRA] (JGRP-1920) FC: Flag NO_FC is not applied on RPC calls/responses
by Bela Ban (JIRA)
[ https://issues.jboss.org/browse/JGRP-1920?page=com.atlassian.jira.plugin.... ]
Bela Ban commented on JGRP-1920:
--------------------------------
Can you give more details ? Looking at {{MessageDispatcher.cast()}}, the flags of {{RequestOptions}} are actually copied into the request message:
{noformat}
protected <T> GroupRequest<T> cast(final Collection<Address> dests, Message msg, RequestOptions options,
boolean block_for_results, FutureListener<RspList<T>> listener) throws Exception {
if(options != null) {
msg.setFlag(options.getFlags()).setTransientFlag(options.getTransientFlags());
if(options.getScope() > 0)
msg.setScope(options.getScope());
}
...
{noformat}
Also, in {{RequestCorrelator.sendReply()}}, the flags of the request message are copied into the response message:
{noformat}
Message rsp=req.makeReply().setFlag(req.getFlags()).clearFlag(Message.Flag.RSVP, Message.Flag.SCOPED);
{noformat}
> FC: Flag NO_FC is not applied on RPC calls/responses
> ----------------------------------------------------
>
> Key: JGRP-1920
> URL: https://issues.jboss.org/browse/JGRP-1920
> Project: JGroups
> Issue Type: Bug
> Reporter: Karim AMMOUS
> Assignee: Bela Ban
> Fix For: 3.6.3
>
>
> When we set Flag.NO_FC on an RPC call through "RequestOptions", we expect that both request and response will be not rate limited.
> Currently, both request and response could be slow down by flow control protocols.
--
This message was sent by Atlassian JIRA
(v6.3.11#6341)
9 years, 7 months
[JBoss JIRA] (JGRP-1910) MERGE3: Do not lose any members from view during a series of merges
by Radim Vansa (JIRA)
[ https://issues.jboss.org/browse/JGRP-1910?page=com.atlassian.jira.plugin.... ]
Radim Vansa commented on JGRP-1910:
-----------------------------------
The ultimate goal is to 'not lose any members from view during a series of merges', as JIRA title suggests, unless you get suspection from FD protocol. So, if the messages can be lost/delayed, any algorithm that would base the view on a subset of responses from the nodes (because we don't want to block for all responses and implement guaranteed delivery) can lose some nodes in the new merge view. If a view that is sent to a node is automatically installed there, you can't avoid the situation with two concurrent merge views installed one after another, each missing particular members.
Therefore, the node has to reject some views, and I've suggested the criteria above.
> MERGE3: Do not lose any members from view during a series of merges
> -------------------------------------------------------------------
>
> Key: JGRP-1910
> URL: https://issues.jboss.org/browse/JGRP-1910
> Project: JGroups
> Issue Type: Bug
> Reporter: Radim Vansa
> Assignee: Bela Ban
> Fix For: 3.6.3
>
> Attachments: SplitMergeFailFastTest.java, SplitMergeTest.java
>
>
> When connection between nodes is re-established, MERGE3 should merge the cluster together. This often does not involve a single MergeView but a series of such events. The problematic property of this protocol is that some of those views can lack certain members, though these are reachable.
> This causes problem in Infinispan since the cache cannot be fully rebalanced before another merge arrives, and all owners of certain segment can be gradually removed (and added again) to the view, while this is not detected as partition but crashed nodes -> losing all owners means data loss.
> Removing members from view should be the role of FDx protocols, not MERGEx.
--
This message was sent by Atlassian JIRA
(v6.3.11#6341)
9 years, 7 months
[JBoss JIRA] (JGRP-1910) MERGE3: Do not lose any members from view during a series of merges
by Bela Ban (JIRA)
[ https://issues.jboss.org/browse/JGRP-1910?page=com.atlassian.jira.plugin.... ]
Bela Ban commented on JGRP-1910:
--------------------------------
Oops, the above algorithm doesn't work, e.g. in {{OverlappingMergeTest.testMergeWithDifferentPartitions()}}:
{noformat}
A: {A,C,B}
B: {A,C,B}
C: {A,C,B}
D: {B,A,C,D}
{noformat}
With the new algorithm, potential merge leaders are A and B. If we now sort \[A,B\] and B happens to be first, B will be the merge leader and A won't do anything. However, *B will neither ever become coordinator nor leave, so the merge will never get started !*
We therefore have to revert the new algorithm; merge leaders are always picked from actual senders of view-ids (that are view creators). In the above example, only A would be selected as potential merge leader.
> MERGE3: Do not lose any members from view during a series of merges
> -------------------------------------------------------------------
>
> Key: JGRP-1910
> URL: https://issues.jboss.org/browse/JGRP-1910
> Project: JGroups
> Issue Type: Bug
> Reporter: Radim Vansa
> Assignee: Bela Ban
> Fix For: 3.6.3
>
> Attachments: SplitMergeFailFastTest.java, SplitMergeTest.java
>
>
> When connection between nodes is re-established, MERGE3 should merge the cluster together. This often does not involve a single MergeView but a series of such events. The problematic property of this protocol is that some of those views can lack certain members, though these are reachable.
> This causes problem in Infinispan since the cache cannot be fully rebalanced before another merge arrives, and all owners of certain segment can be gradually removed (and added again) to the view, while this is not detected as partition but crashed nodes -> losing all owners means data loss.
> Removing members from view should be the role of FDx protocols, not MERGEx.
--
This message was sent by Atlassian JIRA
(v6.3.11#6341)
9 years, 7 months
[JBoss JIRA] (WFLY-4413) Network connection leak in asynchronous servlet
by jeremy_lv lv (JIRA)
[ https://issues.jboss.org/browse/WFLY-4413?page=com.atlassian.jira.plugin.... ]
jeremy_lv lv commented on WFLY-4413:
------------------------------------
Hi, [~swd847]:
{quote}
I just tried this out and the connection hangs around for 30s until the default async timeout is hit, then it goes away as expected. I tested against both 8.2.0.Final and the most recent upstream and the behaviour was the same.
The behaviour is basically the expected behaviour, because nothing catches the IOException thrown on flush the request basically hangs around doing nothing until the async timeout is hit. I could potentially forcibly kill the underling connection if a write fails, but either way the request object will be hanging around until the timeout.
{quote}
As you said, if we haven't add ctx.complete after invoking ctx.getResponse().getOutputStream().flush(), the connection hangs around for 30s until the default async timeout is hit, then it goes away as expected.
However, if we add ctx.complete after invoking ctx.getResponse().getOutputStream().flush(), the IOException will thrown during invoking the ctx.complete.
Here's the stacktrace as follows:
{panel:title=Stacktrace|borderStyle=dashed|borderColor=#ccc|titleBGColor=#F7D6C1|bgColor=#FFFFCE}
Exception in thread "default task-35" java.lang.RuntimeException: java.io.IOException: Broken pipe
at io.undertow.servlet.spec.HttpServletResponseImpl.responseDone(HttpServletResponseImpl.java:527)
at io.undertow.servlet.spec.AsyncContextImpl$3.run(AsyncContextImpl.java:295)
at io.undertow.servlet.spec.AsyncContextImpl$6.run(AsyncContextImpl.java:433)
at io.undertow.servlet.spec.AsyncContextImpl$TaskDispatchRunnable.run(AsyncContextImpl.java:518)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:724)
Caused by: java.io.IOException: Broken pipe
at sun.nio.ch.FileDispatcherImpl.write0(Native Method)
at sun.nio.ch.SocketDispatcher.write(SocketDispatcher.java:47)
at sun.nio.ch.IOUtil.writeFromNativeBuffer(IOUtil.java:94)
at sun.nio.ch.IOUtil.write(IOUtil.java:65)
at sun.nio.ch.SocketChannelImpl.write(SocketChannelImpl.java:466)
at org.xnio.nio.NioSocketConduit.write(NioSocketConduit.java:150)
at io.undertow.server.protocol.http.HttpResponseConduit.write(HttpResponseConduit.java:531)
at io.undertow.conduits.ChunkedStreamSinkConduit.flush(ChunkedStreamSinkConduit.java:256)
at org.xnio.conduits.ConduitStreamSinkChannel.flush(ConduitStreamSinkChannel.java:162)
at io.undertow.channels.DetachableStreamSinkChannel.flush(DetachableStreamSinkChannel.java:100)
at org.xnio.channels.Channels.flushBlocking(Channels.java:63)
at io.undertow.servlet.spec.ServletOutputStreamImpl.close(ServletOutputStreamImpl.java:625)
at io.undertow.servlet.spec.HttpServletResponseImpl.closeStreamAndWriter(HttpServletResponseImpl.java:451)
at io.undertow.servlet.spec.HttpServletResponseImpl.responseDone(HttpServletResponseImpl.java:525)
{panel}
Finally, the current socket connection in JVM will keep in alive because of the above thrown exception. We did investigate the above stacktrace and found the IOException will thrown by HttpResponseConduit.write before close the socket connection in JVM. in the other words, there's no operation in undertow to close the socket connection in JVM if the IOException were thrown by HttpResponseConduit.write.
Thanks.
> Network connection leak in asynchronous servlet
> -----------------------------------------------
>
> Key: WFLY-4413
> URL: https://issues.jboss.org/browse/WFLY-4413
> Project: WildFly
> Issue Type: Bug
> Components: Web (Undertow)
> Affects Versions: 8.1.0.Final, 8.2.0.Final
> Environment: Linux
> Reporter: jeremy_lv lv
> Assignee: Stuart Douglas
> Priority: Blocker
> Labels: undertow
>
> {panel:title=Phenomenon|borderStyle=dashed|borderColor=#ccc|titleBGColor=#F7D6C1|bgColor=#FFFFCE}
> When the connection is suddenly terminated during the period we access the asynchronous servlet application, the connection will be leaked. However, the connection won't be leak when we access the synchronous servlet application.
> {panel}
> *Some of the stacktrace are as follows:*
> {panel:title=Stacktrace|borderStyle=dashed|borderColor=#ccc|titleBGColor=#F7D6C1|bgColor=#FFFFCE}
> 14:34:23,751 ERROR [io.undertow.request] (default task-22) Blocking request fail
> at io.undertow.servlet.spec.HttpServletResponseImpl.responseDone(HttpSer
> at io.undertow.servlet.spec.AsyncContextImpl$3.run(AsyncContextImpl.java
> at io.undertow.servlet.spec.AsyncContextImpl$6.run(AsyncContextImpl.java
> at io.undertow.servlet.spec.AsyncContextImpl$TaskDispatchRunnable.run(As
> at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.
> at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor
> at java.lang.Thread.run(Thread.java:724) [rt.jar:1.7.0_25]
> Caused by: java.io.IOException: Connection reset by peer
> at sun.nio.ch.FileDispatcherImpl.write0(Native Method) [rt.jar:1.7.0_25]
> at sun.nio.ch.SocketDispatcher.write(SocketDispatcher.java:47) [rt.jar:1
> at sun.nio.ch.IOUtil.writeFromNativeBuffer(IOUtil.java:94) [rt.jar:1.7.0
> at sun.nio.ch.IOUtil.write(IOUtil.java:51) [rt.jar:1.7.0_25]
> at sun.nio.ch.SocketChannelImpl.write(SocketChannelImpl.java:466) [rt.ja
> at org.xnio.nio.NioSocketConduit.write(NioSocketConduit.java:150)
> at io.undertow.server.protocol.http.HttpResponseConduit.processWrite(Htt
> at io.undertow.server.protocol.http.HttpResponseConduit.flush(HttpRespon
> at io.undertow.conduits.AbstractFixedLengthStreamSinkConduit.flush(Abstr
> at org.xnio.conduits.ConduitStreamSinkChannel.flush(ConduitStreamSinkCha
> at io.undertow.channels.DetachableStreamSinkChannel.flush(DetachableStre
> at org.xnio.channels.Channels.flushBlocking(Channels.java:63)
> at io.undertow.servlet.spec.ServletOutputStreamImpl.close(ServletOutputS
> at io.undertow.servlet.spec.HttpServletResponseImpl.closeStreamAndWriter
> at io.undertow.servlet.spec.HttpServletResponseImpl.responseDone(HttpSer
> ... 6 more
> {panel}
> *Here's the test war code you can used to reproduce this phenomenon:*
> {code:title=AsyncDemoServlet.java|borderStyle=solid}
> import java.io.IOException;
> import javax.servlet.AsyncContext;
> import javax.servlet.ServletException;
> import javax.servlet.annotation.WebServlet;
> import javax.servlet.http.HttpServlet;
> import javax.servlet.http.HttpServletRequest;
> import javax.servlet.http.HttpServletResponse;
> @WebServlet(urlPatterns="/asyncDemoServlet",asyncSupported=true)
> public class AsyncDemoServlet extends HttpServlet {
> private static final long serialVersionUID = 1L;
> protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
> response.setContentType("text/html;charset=UTF-8");
> //Execute the business logic in sub-thread.
> AsyncContext ctx = request.startAsync();
> new Thread(new Executor(ctx)).start();
> }
> protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
> doGet(request, response);
> }
> public class Executor implements Runnable {
> private AsyncContext ctx = null;
> public Executor(AsyncContext ctx){
> this.ctx = ctx;
> }
> public void run(){
> try {
> ctx.getResponse().getOutputStream().write("aaa".getBytes());
> //wait for 5 seconds to simulate the business logic.
> Thread.sleep(5000);
> ctx.getResponse().getOutputStream().flush();
> ctx.complete();
> } catch (Exception e) {
> e.printStackTrace();
> }
> }
> }
> }
> {code}
--
This message was sent by Atlassian JIRA
(v6.3.11#6341)
9 years, 7 months
[JBoss JIRA] (WFLY-4413) Network connection leak in asynchronous servlet
by jeremy_lv lv (JIRA)
[ https://issues.jboss.org/browse/WFLY-4413?page=com.atlassian.jira.plugin.... ]
jeremy_lv lv edited comment on WFLY-4413 at 3/12/15 3:56 AM:
-------------------------------------------------------------
Hi, [~swd847]:
{quote}
I just tried this out and the connection hangs around for 30s until the default async timeout is hit, then it goes away as expected. I tested against both 8.2.0.Final and the most recent upstream and the behaviour was the same.
The behaviour is basically the expected behaviour, because nothing catches the IOException thrown on flush the request basically hangs around doing nothing until the async timeout is hit. I could potentially forcibly kill the underling connection if a write fails, but either way the request object will be hanging around until the timeout.
{quote}
As you said, if we haven't add ctx.complete after invoking ctx.getResponse().getOutputStream().flush(), the connection hangs around for 30s until the default async timeout is hit, then it goes away as expected.
However, if we add ctx.complete after invoking ctx.getResponse().getOutputStream().flush(), the IOException will thrown during invoking the ctx.complete.
Here's the stacktrace as follows:
{panel:title=Stacktrace|borderStyle=dashed|borderColor=#ccc|titleBGColor=#F7D6C1|bgColor=#FFFFCE}
Exception in thread "default task-35" java.lang.RuntimeException: java.io.IOException: Broken pipe
at io.undertow.servlet.spec.HttpServletResponseImpl.responseDone(HttpServletResponseImpl.java:527)
at io.undertow.servlet.spec.AsyncContextImpl$3.run(AsyncContextImpl.java:295)
at io.undertow.servlet.spec.AsyncContextImpl$6.run(AsyncContextImpl.java:433)
at io.undertow.servlet.spec.AsyncContextImpl$TaskDispatchRunnable.run(AsyncContextImpl.java:518)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:724)
Caused by: java.io.IOException: Broken pipe
at sun.nio.ch.FileDispatcherImpl.write0(Native Method)
at sun.nio.ch.SocketDispatcher.write(SocketDispatcher.java:47)
at sun.nio.ch.IOUtil.writeFromNativeBuffer(IOUtil.java:94)
at sun.nio.ch.IOUtil.write(IOUtil.java:65)
at sun.nio.ch.SocketChannelImpl.write(SocketChannelImpl.java:466)
at org.xnio.nio.NioSocketConduit.write(NioSocketConduit.java:150)
at io.undertow.server.protocol.http.HttpResponseConduit.write(HttpResponseConduit.java:531)
at io.undertow.conduits.ChunkedStreamSinkConduit.flush(ChunkedStreamSinkConduit.java:256)
at org.xnio.conduits.ConduitStreamSinkChannel.flush(ConduitStreamSinkChannel.java:162)
at io.undertow.channels.DetachableStreamSinkChannel.flush(DetachableStreamSinkChannel.java:100)
at org.xnio.channels.Channels.flushBlocking(Channels.java:63)
at io.undertow.servlet.spec.ServletOutputStreamImpl.close(ServletOutputStreamImpl.java:625)
at io.undertow.servlet.spec.HttpServletResponseImpl.closeStreamAndWriter(HttpServletResponseImpl.java:451)
at io.undertow.servlet.spec.HttpServletResponseImpl.responseDone(HttpServletResponseImpl.java:525)
{panel}
Finally, the current socket connection in JVM will keep in alive because of the above thrown exception. We did investigate the above stacktrace and found the IOException will thrown by HttpResponseConduit.write before close the socket connection in JVM. in the other words, there's no operation in undertow to close the socket connection in JVM if the IOException were thrown by HttpResponseConduit.write in invoking the ctx.complete.
Thanks.
was (Author: jeremy_lv):
Hi, [~swd847]:
{quote}
I just tried this out and the connection hangs around for 30s until the default async timeout is hit, then it goes away as expected. I tested against both 8.2.0.Final and the most recent upstream and the behaviour was the same.
The behaviour is basically the expected behaviour, because nothing catches the IOException thrown on flush the request basically hangs around doing nothing until the async timeout is hit. I could potentially forcibly kill the underling connection if a write fails, but either way the request object will be hanging around until the timeout.
{quote}
As you said, if we haven't add ctx.complete after invoking ctx.getResponse().getOutputStream().flush(), the connection hangs around for 30s until the default async timeout is hit, then it goes away as expected.
However, if we add ctx.complete after invoking ctx.getResponse().getOutputStream().flush(), the IOException will thrown during invoking the ctx.complete.
Here's the stacktrace as follows:
{panel:title=Stacktrace|borderStyle=dashed|borderColor=#ccc|titleBGColor=#F7D6C1|bgColor=#FFFFCE}
Exception in thread "default task-35" java.lang.RuntimeException: java.io.IOException: Broken pipe
at io.undertow.servlet.spec.HttpServletResponseImpl.responseDone(HttpServletResponseImpl.java:527)
at io.undertow.servlet.spec.AsyncContextImpl$3.run(AsyncContextImpl.java:295)
at io.undertow.servlet.spec.AsyncContextImpl$6.run(AsyncContextImpl.java:433)
at io.undertow.servlet.spec.AsyncContextImpl$TaskDispatchRunnable.run(AsyncContextImpl.java:518)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:724)
Caused by: java.io.IOException: Broken pipe
at sun.nio.ch.FileDispatcherImpl.write0(Native Method)
at sun.nio.ch.SocketDispatcher.write(SocketDispatcher.java:47)
at sun.nio.ch.IOUtil.writeFromNativeBuffer(IOUtil.java:94)
at sun.nio.ch.IOUtil.write(IOUtil.java:65)
at sun.nio.ch.SocketChannelImpl.write(SocketChannelImpl.java:466)
at org.xnio.nio.NioSocketConduit.write(NioSocketConduit.java:150)
at io.undertow.server.protocol.http.HttpResponseConduit.write(HttpResponseConduit.java:531)
at io.undertow.conduits.ChunkedStreamSinkConduit.flush(ChunkedStreamSinkConduit.java:256)
at org.xnio.conduits.ConduitStreamSinkChannel.flush(ConduitStreamSinkChannel.java:162)
at io.undertow.channels.DetachableStreamSinkChannel.flush(DetachableStreamSinkChannel.java:100)
at org.xnio.channels.Channels.flushBlocking(Channels.java:63)
at io.undertow.servlet.spec.ServletOutputStreamImpl.close(ServletOutputStreamImpl.java:625)
at io.undertow.servlet.spec.HttpServletResponseImpl.closeStreamAndWriter(HttpServletResponseImpl.java:451)
at io.undertow.servlet.spec.HttpServletResponseImpl.responseDone(HttpServletResponseImpl.java:525)
{panel}
Finally, the current socket connection in JVM will keep in alive because of the above thrown exception. We did investigate the above stacktrace and found the IOException will thrown by HttpResponseConduit.write before close the socket connection in JVM. in the other words, there's no operation in undertow to close the socket connection in JVM if the IOException were thrown by HttpResponseConduit.write.
Thanks.
> Network connection leak in asynchronous servlet
> -----------------------------------------------
>
> Key: WFLY-4413
> URL: https://issues.jboss.org/browse/WFLY-4413
> Project: WildFly
> Issue Type: Bug
> Components: Web (Undertow)
> Affects Versions: 8.1.0.Final, 8.2.0.Final
> Environment: Linux
> Reporter: jeremy_lv lv
> Assignee: Stuart Douglas
> Priority: Blocker
> Labels: undertow
>
> {panel:title=Phenomenon|borderStyle=dashed|borderColor=#ccc|titleBGColor=#F7D6C1|bgColor=#FFFFCE}
> When the connection is suddenly terminated during the period we access the asynchronous servlet application, the connection will be leaked. However, the connection won't be leak when we access the synchronous servlet application.
> {panel}
> *Some of the stacktrace are as follows:*
> {panel:title=Stacktrace|borderStyle=dashed|borderColor=#ccc|titleBGColor=#F7D6C1|bgColor=#FFFFCE}
> 14:34:23,751 ERROR [io.undertow.request] (default task-22) Blocking request fail
> at io.undertow.servlet.spec.HttpServletResponseImpl.responseDone(HttpSer
> at io.undertow.servlet.spec.AsyncContextImpl$3.run(AsyncContextImpl.java
> at io.undertow.servlet.spec.AsyncContextImpl$6.run(AsyncContextImpl.java
> at io.undertow.servlet.spec.AsyncContextImpl$TaskDispatchRunnable.run(As
> at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.
> at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor
> at java.lang.Thread.run(Thread.java:724) [rt.jar:1.7.0_25]
> Caused by: java.io.IOException: Connection reset by peer
> at sun.nio.ch.FileDispatcherImpl.write0(Native Method) [rt.jar:1.7.0_25]
> at sun.nio.ch.SocketDispatcher.write(SocketDispatcher.java:47) [rt.jar:1
> at sun.nio.ch.IOUtil.writeFromNativeBuffer(IOUtil.java:94) [rt.jar:1.7.0
> at sun.nio.ch.IOUtil.write(IOUtil.java:51) [rt.jar:1.7.0_25]
> at sun.nio.ch.SocketChannelImpl.write(SocketChannelImpl.java:466) [rt.ja
> at org.xnio.nio.NioSocketConduit.write(NioSocketConduit.java:150)
> at io.undertow.server.protocol.http.HttpResponseConduit.processWrite(Htt
> at io.undertow.server.protocol.http.HttpResponseConduit.flush(HttpRespon
> at io.undertow.conduits.AbstractFixedLengthStreamSinkConduit.flush(Abstr
> at org.xnio.conduits.ConduitStreamSinkChannel.flush(ConduitStreamSinkCha
> at io.undertow.channels.DetachableStreamSinkChannel.flush(DetachableStre
> at org.xnio.channels.Channels.flushBlocking(Channels.java:63)
> at io.undertow.servlet.spec.ServletOutputStreamImpl.close(ServletOutputS
> at io.undertow.servlet.spec.HttpServletResponseImpl.closeStreamAndWriter
> at io.undertow.servlet.spec.HttpServletResponseImpl.responseDone(HttpSer
> ... 6 more
> {panel}
> *Here's the test war code you can used to reproduce this phenomenon:*
> {code:title=AsyncDemoServlet.java|borderStyle=solid}
> import java.io.IOException;
> import javax.servlet.AsyncContext;
> import javax.servlet.ServletException;
> import javax.servlet.annotation.WebServlet;
> import javax.servlet.http.HttpServlet;
> import javax.servlet.http.HttpServletRequest;
> import javax.servlet.http.HttpServletResponse;
> @WebServlet(urlPatterns="/asyncDemoServlet",asyncSupported=true)
> public class AsyncDemoServlet extends HttpServlet {
> private static final long serialVersionUID = 1L;
> protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
> response.setContentType("text/html;charset=UTF-8");
> //Execute the business logic in sub-thread.
> AsyncContext ctx = request.startAsync();
> new Thread(new Executor(ctx)).start();
> }
> protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
> doGet(request, response);
> }
> public class Executor implements Runnable {
> private AsyncContext ctx = null;
> public Executor(AsyncContext ctx){
> this.ctx = ctx;
> }
> public void run(){
> try {
> ctx.getResponse().getOutputStream().write("aaa".getBytes());
> //wait for 5 seconds to simulate the business logic.
> Thread.sleep(5000);
> ctx.getResponse().getOutputStream().flush();
> ctx.complete();
> } catch (Exception e) {
> e.printStackTrace();
> }
> }
> }
> }
> {code}
--
This message was sent by Atlassian JIRA
(v6.3.11#6341)
9 years, 7 months
[JBoss JIRA] (WFLY-2999) AJP connector request body stream is wrong mixed
by Jarno Komulainen (JIRA)
[ https://issues.jboss.org/browse/WFLY-2999?page=com.atlassian.jira.plugin.... ]
Jarno Komulainen commented on WFLY-2999:
----------------------------------------
Could you give instructions how to upgrade wildfly 8.2 undertow?
> AJP connector request body stream is wrong mixed
> ------------------------------------------------
>
> Key: WFLY-2999
> URL: https://issues.jboss.org/browse/WFLY-2999
> Project: WildFly
> Issue Type: Bug
> Components: Web (Undertow)
> Affects Versions: 8.0.0.Final
> Environment: Apahce HTTPD 2.2.23 + MOD_CLUSTER 1.3 Final + WildFly 8 Final
> Reporter: JuYeon Yu
> Assignee: Stuart Douglas
> Fix For: 9.0.0.Alpha1
>
>
> Seem to have a problem with the AJP Connector.
> When client(Browser) send request has many parameter, sometime received content is different.
> ex)
> Request Body is:
> dataJson={"crfpage_type":["CRF"],"qst_rowno":["7148#0#0","7141#0#0","7143#0#0","7144#0#0","7145#0#0","7146#0#0","7147#0#0","7123#0#0","7125#0#0","7126#0#0","7127#0#0","7128#0#0","7129#0#0","7130#0#0","7131#0#0","7132#0#0","7133#0#0","7134#0#0","7135#0#0","7136#0#0","7137#0#0","7138#0#0","7139#0#0","7140#0#0","7117#0#0","7119#0#0","7120#0#0","7121#0#0","7122#0#0"],"item_7148_16445_0_0":[""],"_item_7141_16466_0_0":[""],"item_7143_16462_0_0":["RBC"],"item_7143_16463_0_0":[""],"item_7143_16464_0_0":[""],"item_7143_16464_0_0_r":[""],"item_7143_16465_0_0":[""],"item_7144_16458_0_0":["Hemoglobin"],"item_7144_16459_0_0":[""],"item_7144_16460_0_0":[""],"item_7144_16460_0_0_r":[""],"item_7144_16461_0_0":[""],"item_7145_16454_0_0":["Hematocrit"],"item_7145_16455_0_0":[""],"item_7145_16456_0_0":[""],"item_7145_16456_0_0_r":[""],"item_7145_16457_0_0":[""],"item_7146_16450_0_0":["Platelet"],"item_7146_16451_0_0":[""],"item_7146_16452_0_0":[""],"item_7146_16452_0_0_r":[""],"item_7146_16453_0_0":[""],"item_7147_16446_0_0":["WBC"],"item_7147_16447_0_0":[""],"item_7147_16448_0_0":[""],"item_7147_16448_0_0_r":[""],"item_7147_16449_0_0":[""],"_item_7123_16531_0_0":[""],"item_7125_16527_0_0":["Calcium"],"item_7125_16528_0_0":[""],"item_7125_16529_0_0":[""],"item_7125_16529_0_0_r":[""],"item_7125_16530_0_0":[""],"item_7126_16523_0_0":["Sodium"],"item_7126_16524_0_0":[""],"item_7126_16525_0_0":[""],"item_7126_16525_0_0_r":[""],"item_7126_16526_0_0":[""],"item_7127_16519_0_0":["Potassium"],"item_7127_16520_0_0":[""],"item_7127_16521_0_0":[""],"item_7127_16521_0_0_r":[""],"item_7127_16522_0_0":[""],"item_7128_16515_0_0":["Chloride"],"item_7128_16516_0_0":[""],"item_7128_16517_0_0":[""],"item_7128_16517_0_0_r":[""],"item_7128_16518_0_0":[""],"item_7129_16511_0_0":["Creatinine"],"item_7129_16512_0_0":[""],"item_7129_16513_0_0":[""],"item_7129_16513_0_0_r":[""],"item_7129_16514_0_0":[""],"item_7130_16507_0_0":["BUN"],"item_7130_16508_0rl=/cs8635_sit_11_01/crf-submit/S4Z068/3015 , dataJson={"crfpage_type":["CRF"],"qst_rowno":["7148#0#0","7141#0#0","7143#0#0","7144#0#0","7145#0#0","7146#0#0","7147#0#0","7123#0#0","7125#0#0","7126#0#0","7127#0#0","7128#0#0","7129#0#0","7130#0#0","7131#0#0","7132#0#0","7133#0#0","7134#0#0","7135#0#0","7136#0#0","7137#0#0","7138#0#0","7139#0#0","7140#0#0","7117#0#0","7119#0#0","7120#0#0","7121#0#0","7122#0#0"],"item_7148_16445_0_0":[""],"_item_7141_16466_0_0":[""],"item_7143_16462_0_0":["RBC"],"item_7143_16463_0_0":[""],"item_7143_16464_0_0":[""],"item_7143_16464_0_0_r":[""],"item_7143_16465_0_0":[""],"item_7144_16458_0_0":["Hemoglobin"],"item_7144_16459_0_0":[""],"item_7144_16460_0_0":[""],"item_7144_16460_0_0_r":[""],"item_7144_16461_0_0":[""],"item_7145_16454_0_0":["Hematocrit"],"item_7145_16455_0_0":[""],"item_7145_16456_0_0":[""],"item_7145_16456_0_0_r":[""],"item_7145_16457_0_0":[""],"item_7146_16450_0_0":["Platelet"],"item_7146_16451_0_0":[""],"item_7146_16452_0_0":[""],"item_7146_16452_0_0_r":[""],"item_7146_16453_0_0":[""],"item_7147_16446_0_0":["WBC"],"item_7147_16447_0_0":[""],"item_7147_16448_0_0":[""],"item_7147_16448_0_0_r":[""],"item_7147_16449_0_0":[""],"_item_7123_16531_0_0":[""],"item_7125_16527_0_0":["Calcium"],"item_7125_16528_0_0":[""],"item_7125_16529_0_0":[""],"item_7125_16529_0_0_r":[""],"item_7125_16530_0_0":[""],"item_7126_16523_0_0":["Sodium"],"item_7126_16524_0_0":[""],"item_7126_16525_0_0":[""],"item_7126_16525_0_0_r":[""],"item_7126_16526_0_0":[""],"item_7127_16519_0_0":["Potassium"],"item_7127_16520_0_0":[""],"item_7127_16521_0_0":[""],"item_7127_16521_0_0_r":[""],"item_7127_16522_0_0":[""],"item_7128_16515_0_0":["Chloride"],"item_7128_16516_0_0":[""],"item_7128_16517_0_0":[""],"item_7128_16517_0_0_r":[""],"item_7128_16518_0_0":[""],"item_7129_16511_0_0":["Creatinine"],"item_7129_16512_0_0":[""],"item_7129_16513_0_0":[""],"item_7129_16513_0_0_r":[""],"item_7129_16514_0_0":[""],"item_7130_16507_0_0":["BUN"],"item_7130_16508_0rl=/cs8635_sit_11_01/crf-submit/S4Z068/3015 , dataJson={"crfpage_type":["CRF"],"qst_rowno":["7148#0#0","7141#0#0","7143#0#0","7144#0#0","7145#0#0","7146#0#0","7147#0#0","7123#0#0","7125#0#0","7126#0#0","7127#0#0","7128#0#0","7129#0#0","7130#0#0","7131#0#0","7132#0#0","7133#0#0","7134#0#0","7135#0#0","7136#0#0","7137#0#0","7138#0#0","7139#0#0","7140#0#0","7117#0#0","7119#0#0","7120#0#0","7121#0#0","7122#0#0"],"item_7148_16445_0_0":[""],"_item_7141_16466_0_0":[""],"item_7143_16462_0_0":["RBC"],"item_7143_16463_0_0":[""],"item_7143_16464_0_0":[""],"item_7143_16464_0_0_r":[""],"item_7143_16465_0_0":[""],"item_7144_16458_0_0":["Hemoglobin"],"item_7144_16459_0_0":[""],"item_7144_16460_0_0":[""],"item_7144_16460_0_0_r":[""],"item_7144_16461_0_0":[""],"item_7145_16454_0_0":["Hematocrit"],"item_7145_16455_0_0":[""],"item_7145_16456_0_0":[""],"item_7145_16456_0_0_r":[""],"item_7145_16457_0_0":[""],"item_7146_16450_0_0":["Platelet"],"item_7146_16451_0_0":[""],"item_7146_16452_0_0":[""],"item_7146_16452_0_0_r":[""],"item_7146_16453_0_0":[""],"item_7147_16446_0_0":["WBC"],"item_7147_16447_0_0":[""],"item_7147_16448_0_0":[""],"item_7147_16448_0_0_r":[""],"item_7147_16449_0_0":[""],"_item_7123_16531_0_0":[""],"item_7125_16527_0_0":["Calcium"],"item_7125_16528_0_0":[""],"item_7125_16529_0_0":[""],"item_7125_16529_0_0_r":[""],"item_7125_16530_0_0":[""],"item_7126_16523_0_0":["Sodium"],"item_7126_16524_0_0":[""],"item_7126_16525_0_0":[""],"item_7126_16525_0_0_r":[""],"item_7126_16526_0_0":[""],"item_7127_16519_0_0":["Potassium"],"item_7127_16520_0_0":[""],"item_7127_16521_0_0":[""],"item_7127_16521_0_0_r":[""],"item_7127_16522_0_0":[""],"item_7128_16515_0_0":["Chloride"],"item_7128_16516_0_0":[""],"item_7128_16517_0_0":[""],"item_7128_16517_0_0_r":[""],"item_7128_16518_0_0":[""],"item_7129_16511_0_0":["Creatinine"],"item_7129_16512_0_0":[""],"item_7129_16513_0_0":[""],"item_7129_16513_0_0_r":[""],"item_7129_16514_0_0":[""],"item_7130_16507_0_0":["BUN"],"item_7130_16508_03A[""],"item_7121_16536_0_0":["Protein"],"item_7121_16537_0_0":[""],"item_7121_16539_0_0":[""],"item_7122_16532_0_0":["Glucose"],"item_7122_16533_0_0":[""],"item_7122_16535_0_0":[""]}
> Received is:
> dataJson={"crfpage_type":["CRF"],"qst_rowno":["7148#0#0","7141#0#0","7143#0#0","7144#0#0","7145#0#0","7146#0#0","7147#0#0","7123#0#0","7125#0#0","7126#0#0","7127#0#0","7128#0#0","7129#0#0","7130#0#0","7131#0#0","7132#0#0","7133#0#0","7134#0#0","7135#0#0","7136#0#0","7137#0#0","7138#0#0","7139#0#0","7140#0#0","7117#0#0","7119#0#0","7120#0#0","7121#0#0","7122#0#0"],"item_7148_16445_0_0":[""],"_item_7141_16466_0_0":[""],"item_7143_16462_0_0":["RBC"],"item_7143_16463_0_0":[""],"item_7143_16464_0_0":[""],"item_7143_16464_0_0_r":[""],"item_7143_16465_0_0":[""],"item_7144_16458_0_0":["Hemoglobin"],"item_7144_16459_0_0":[""],"item_7144_16460_0_0":[""],"item_7144_16460_0_0_r":[""],"item_7144_16461_0_0":[""],"item_7145_16454_0_0":["Hematocrit"],"item_7145_16455_0_0":[""],"item_7145_16456_0_0":[""],"item_7145_16456_0_0_r":[""],"item_7145_16457_0_0":[""],"item_7146_16450_0_0":["Platelet"],"item_7146_16451_0_0":[""],"item_7146_16452_0_0":[""],"item_7146_16452_0_0_r":[""],"item_7146_16453_0_0":[""],"item_7147_16446_0_0":["WBC"],"item_7147_16447_0_0":[""],"item_7147_16448_0_0":[""],"item_7147_16448_0_0_r":[""],"item_7147_16449_0_0":[""],"_item_7123_16531_0_0":[""],"item_7125_16527_0_0":["Calcium"],"item_7125_16528_0_0":[""],"item_7125_16529_0_0":[""],"item_7125_16529_0_0_r":[""],"item_7125_16530_0_0":[""],"item_7126_16523_0_0":["Sodium"],"item_7126_16524_0_0":[""],"item_7126_16525_0_0":[""],"item_7126_16525_0_0_r":[""],"item_7126_16526_0_0":[""],"item_7127_16519_0_0":["Potassium"],"item_7127_16520_0_0":[""],"item_7127_16521_0_0":[""],"item_7127_16521_0_0_r":[""],"item_7127_16522_0_0":[""],"item_7128_16515_0_0":["Chloride"],"item_7128_16516_0_0":[""],"item_7128_16517_0_0":[""],"item_7128_16517_0_0_r":[""],"item_7128_16518_0_0":[""],"item_7129_16511_0_0":["Creatinine"],"item_7129_16512_0_0":[""],"item_7129_16513_0_0":[""],"item_7129_16513_0_0_r":[""],"item_7129_16514_0_0":[""],"item_7130_16507_0_0":["BUN"],"item_7130_16508_0rl=/cs8635_sit_11_01/crf-submit/S4Z068/3015 , dataJson={"crfpage_type":["CRF"],"qst_rowno":["7148#0#0","7141#0#0","7143#0#0","7144#0#0","7145#0#0","7146#0#0","7147#0#0","7123#0#0","7125#0#0","7126#0#0","7127#0#0","7128#0#0","7129#0#0","7130#0#0","7131#0#0","7132#0#0","7133#0#0","7134#0#0","7135#0#0","7136#0#0","7137#0#0","7138#0#0","7139#0#0","7140#0#0","7117#0#0","7119#0#0","7120#0#0","7121#0#0","7122#0#0"],"item_7148_16445_0_0":[""],"_item_7141_16466_0_0":[""],"item_7143_16462_0_0":["RBC"],"item_7143_16463_0_ataJson={"crfpage_type":["CRF"],"qst_rowno":["7148#0#0","7141#0#0","7143#0#0","7144#0#0","7145#0#0","7146#0#0","7147#0#0","7123#0#0","7125#0#0","7126#0#0","7127#0#0","7128#0#0","7129#0#0","7130#0#0","7131#0#0","7132#0#0","7133#0#0","7134#0#0","7135#0#0","7136#0#0","7137#0#0","7138#0#0","7139#0#0","7140#0#0","7117#0#0","7119#0#0","7120#0#0","7121#0#0","7122#0#0"],"item_7148_16445_0_0":[""],"_item_7141_16466_0_0":[""],"item_7143_16462_0_0":["RBC"],"item_7143_16463_0_0":[""],"item_7143_16464_0_0":[""],"item_7143_16464_0_0_r":[""],"item_7143_16465_0_0":[""],"item_7144_16458_0_0":["Hemoglobin"],"item_7144_16459_0_0":[""],"item_7144_16460_0_0":[""],"item_7144_16460_0_0_r":[""],"item_7144_16461_0_0":[""],"item_7145_16454_0_0":["Hematocrit"],"item_7145_16455_0_0":[""],"item_7145_16456_0_0":[""],"item_7145_16456_0_0_r":[""],"item_7145_16457_0_0":[""],"item_7146_16450_0_0":["Platelet"],"item_7146_16451_0_0":[""],"item_7146_16452_0_0":[""],"item_7146_16452_0_0_r":[""],"item_7146_16453_0_0":[""],"item_7147_16446_0_0":["WBC"],"item_7147_16447_0_0":[""],"item_7147_16448_0_0":[""],"item_7147_16448_0_0_r":[""],"item_7147_16449_0_0":[""],"_item_7123_16531_0_0":[""],"item_7125_16527_0_0":["Calcium"],"item_7125_16528_0_0":[""],"item_7125_16529_0_0":[""],"item_7125_16529_0_0_r":[""],"item_7125_16530_0_0":[""],"item_7126_16523_0_0":["Sodium"],"item_7126_16524_0_0":[""],"item_7126_16525_0_0":[""],"item_7126_16525_0_0_r":[""],"item_7126_16526_0_0":[""],"item_7127_16519_0_0":["Potassium"],"item_7127_16520_0_0":[""],"item_7127_16521_0_0":[""],"item_7127_16521_0_0_r":[""],"item_7127_16522_0_0":[""],"item_7128_16515_0_0":["Chloride"],"item_7128_16516_0_0":[""],"item_7128_16517_0_0":[""],"item_7128_16517_0_0_r":[""],"item_7128_16518_0_0":[""],"item_7129_16511_0_0":["Creatinine"],"item_7129_16512_0_0":[""],"item_7129_16513_0_0":[""],"item_7129_16513_0_0_r":[""],"item_7129_16514_0_0":[""],"item_7130_16507_0_0":["BUN"],"item_7130_16508_0rl=/cs8635_sit_11_01/crf-submit/S4Z068/3015 , dataJson={"crfpage_type":["CRF"],"qst_rowno":["7148#0#0","7141#0#0","7143#0#0","7144#0#0","7145#0#0","7146#0#0","7147#0#0","7123#0#0","7125#0#0","7126#0#0","7127#0#0","7128#0#0","7129#0#0","7130#0#0","7131#0#0","7132#0#0","7133#0#0","7134#0#0","7135#0#0","7136#0#0","7137#0#0","7138#0#0","7139#0#0","7140#0#0","7117#0#0","7119#0#0","7120#0#0","7121#0#0","7122#0#0"],"item_7148_16445_0_0":[""],"_item_7141_16466_0_0":[""],"item_7143_16462_0_0":["RBC"],"item_7143_16463_0_
> I test use HTTP Connector same case, but it is normal(request and received is same)
--
This message was sent by Atlassian JIRA
(v6.3.11#6341)
9 years, 7 months
[JBoss JIRA] (WFLY-2999) AJP connector request body stream is wrong mixed
by Stuart Douglas (JIRA)
[ https://issues.jboss.org/browse/WFLY-2999?page=com.atlassian.jira.plugin.... ]
Stuart Douglas commented on WFLY-2999:
--------------------------------------
Try upgrading Undertow to 1.1.3.Final, I think the issue should already be fixed there.
> AJP connector request body stream is wrong mixed
> ------------------------------------------------
>
> Key: WFLY-2999
> URL: https://issues.jboss.org/browse/WFLY-2999
> Project: WildFly
> Issue Type: Bug
> Components: Web (Undertow)
> Affects Versions: 8.0.0.Final
> Environment: Apahce HTTPD 2.2.23 + MOD_CLUSTER 1.3 Final + WildFly 8 Final
> Reporter: JuYeon Yu
> Assignee: Stuart Douglas
> Fix For: 9.0.0.Alpha1
>
>
> Seem to have a problem with the AJP Connector.
> When client(Browser) send request has many parameter, sometime received content is different.
> ex)
> Request Body is:
> dataJson={"crfpage_type":["CRF"],"qst_rowno":["7148#0#0","7141#0#0","7143#0#0","7144#0#0","7145#0#0","7146#0#0","7147#0#0","7123#0#0","7125#0#0","7126#0#0","7127#0#0","7128#0#0","7129#0#0","7130#0#0","7131#0#0","7132#0#0","7133#0#0","7134#0#0","7135#0#0","7136#0#0","7137#0#0","7138#0#0","7139#0#0","7140#0#0","7117#0#0","7119#0#0","7120#0#0","7121#0#0","7122#0#0"],"item_7148_16445_0_0":[""],"_item_7141_16466_0_0":[""],"item_7143_16462_0_0":["RBC"],"item_7143_16463_0_0":[""],"item_7143_16464_0_0":[""],"item_7143_16464_0_0_r":[""],"item_7143_16465_0_0":[""],"item_7144_16458_0_0":["Hemoglobin"],"item_7144_16459_0_0":[""],"item_7144_16460_0_0":[""],"item_7144_16460_0_0_r":[""],"item_7144_16461_0_0":[""],"item_7145_16454_0_0":["Hematocrit"],"item_7145_16455_0_0":[""],"item_7145_16456_0_0":[""],"item_7145_16456_0_0_r":[""],"item_7145_16457_0_0":[""],"item_7146_16450_0_0":["Platelet"],"item_7146_16451_0_0":[""],"item_7146_16452_0_0":[""],"item_7146_16452_0_0_r":[""],"item_7146_16453_0_0":[""],"item_7147_16446_0_0":["WBC"],"item_7147_16447_0_0":[""],"item_7147_16448_0_0":[""],"item_7147_16448_0_0_r":[""],"item_7147_16449_0_0":[""],"_item_7123_16531_0_0":[""],"item_7125_16527_0_0":["Calcium"],"item_7125_16528_0_0":[""],"item_7125_16529_0_0":[""],"item_7125_16529_0_0_r":[""],"item_7125_16530_0_0":[""],"item_7126_16523_0_0":["Sodium"],"item_7126_16524_0_0":[""],"item_7126_16525_0_0":[""],"item_7126_16525_0_0_r":[""],"item_7126_16526_0_0":[""],"item_7127_16519_0_0":["Potassium"],"item_7127_16520_0_0":[""],"item_7127_16521_0_0":[""],"item_7127_16521_0_0_r":[""],"item_7127_16522_0_0":[""],"item_7128_16515_0_0":["Chloride"],"item_7128_16516_0_0":[""],"item_7128_16517_0_0":[""],"item_7128_16517_0_0_r":[""],"item_7128_16518_0_0":[""],"item_7129_16511_0_0":["Creatinine"],"item_7129_16512_0_0":[""],"item_7129_16513_0_0":[""],"item_7129_16513_0_0_r":[""],"item_7129_16514_0_0":[""],"item_7130_16507_0_0":["BUN"],"item_7130_16508_0rl=/cs8635_sit_11_01/crf-submit/S4Z068/3015 , dataJson={"crfpage_type":["CRF"],"qst_rowno":["7148#0#0","7141#0#0","7143#0#0","7144#0#0","7145#0#0","7146#0#0","7147#0#0","7123#0#0","7125#0#0","7126#0#0","7127#0#0","7128#0#0","7129#0#0","7130#0#0","7131#0#0","7132#0#0","7133#0#0","7134#0#0","7135#0#0","7136#0#0","7137#0#0","7138#0#0","7139#0#0","7140#0#0","7117#0#0","7119#0#0","7120#0#0","7121#0#0","7122#0#0"],"item_7148_16445_0_0":[""],"_item_7141_16466_0_0":[""],"item_7143_16462_0_0":["RBC"],"item_7143_16463_0_0":[""],"item_7143_16464_0_0":[""],"item_7143_16464_0_0_r":[""],"item_7143_16465_0_0":[""],"item_7144_16458_0_0":["Hemoglobin"],"item_7144_16459_0_0":[""],"item_7144_16460_0_0":[""],"item_7144_16460_0_0_r":[""],"item_7144_16461_0_0":[""],"item_7145_16454_0_0":["Hematocrit"],"item_7145_16455_0_0":[""],"item_7145_16456_0_0":[""],"item_7145_16456_0_0_r":[""],"item_7145_16457_0_0":[""],"item_7146_16450_0_0":["Platelet"],"item_7146_16451_0_0":[""],"item_7146_16452_0_0":[""],"item_7146_16452_0_0_r":[""],"item_7146_16453_0_0":[""],"item_7147_16446_0_0":["WBC"],"item_7147_16447_0_0":[""],"item_7147_16448_0_0":[""],"item_7147_16448_0_0_r":[""],"item_7147_16449_0_0":[""],"_item_7123_16531_0_0":[""],"item_7125_16527_0_0":["Calcium"],"item_7125_16528_0_0":[""],"item_7125_16529_0_0":[""],"item_7125_16529_0_0_r":[""],"item_7125_16530_0_0":[""],"item_7126_16523_0_0":["Sodium"],"item_7126_16524_0_0":[""],"item_7126_16525_0_0":[""],"item_7126_16525_0_0_r":[""],"item_7126_16526_0_0":[""],"item_7127_16519_0_0":["Potassium"],"item_7127_16520_0_0":[""],"item_7127_16521_0_0":[""],"item_7127_16521_0_0_r":[""],"item_7127_16522_0_0":[""],"item_7128_16515_0_0":["Chloride"],"item_7128_16516_0_0":[""],"item_7128_16517_0_0":[""],"item_7128_16517_0_0_r":[""],"item_7128_16518_0_0":[""],"item_7129_16511_0_0":["Creatinine"],"item_7129_16512_0_0":[""],"item_7129_16513_0_0":[""],"item_7129_16513_0_0_r":[""],"item_7129_16514_0_0":[""],"item_7130_16507_0_0":["BUN"],"item_7130_16508_0rl=/cs8635_sit_11_01/crf-submit/S4Z068/3015 , dataJson={"crfpage_type":["CRF"],"qst_rowno":["7148#0#0","7141#0#0","7143#0#0","7144#0#0","7145#0#0","7146#0#0","7147#0#0","7123#0#0","7125#0#0","7126#0#0","7127#0#0","7128#0#0","7129#0#0","7130#0#0","7131#0#0","7132#0#0","7133#0#0","7134#0#0","7135#0#0","7136#0#0","7137#0#0","7138#0#0","7139#0#0","7140#0#0","7117#0#0","7119#0#0","7120#0#0","7121#0#0","7122#0#0"],"item_7148_16445_0_0":[""],"_item_7141_16466_0_0":[""],"item_7143_16462_0_0":["RBC"],"item_7143_16463_0_0":[""],"item_7143_16464_0_0":[""],"item_7143_16464_0_0_r":[""],"item_7143_16465_0_0":[""],"item_7144_16458_0_0":["Hemoglobin"],"item_7144_16459_0_0":[""],"item_7144_16460_0_0":[""],"item_7144_16460_0_0_r":[""],"item_7144_16461_0_0":[""],"item_7145_16454_0_0":["Hematocrit"],"item_7145_16455_0_0":[""],"item_7145_16456_0_0":[""],"item_7145_16456_0_0_r":[""],"item_7145_16457_0_0":[""],"item_7146_16450_0_0":["Platelet"],"item_7146_16451_0_0":[""],"item_7146_16452_0_0":[""],"item_7146_16452_0_0_r":[""],"item_7146_16453_0_0":[""],"item_7147_16446_0_0":["WBC"],"item_7147_16447_0_0":[""],"item_7147_16448_0_0":[""],"item_7147_16448_0_0_r":[""],"item_7147_16449_0_0":[""],"_item_7123_16531_0_0":[""],"item_7125_16527_0_0":["Calcium"],"item_7125_16528_0_0":[""],"item_7125_16529_0_0":[""],"item_7125_16529_0_0_r":[""],"item_7125_16530_0_0":[""],"item_7126_16523_0_0":["Sodium"],"item_7126_16524_0_0":[""],"item_7126_16525_0_0":[""],"item_7126_16525_0_0_r":[""],"item_7126_16526_0_0":[""],"item_7127_16519_0_0":["Potassium"],"item_7127_16520_0_0":[""],"item_7127_16521_0_0":[""],"item_7127_16521_0_0_r":[""],"item_7127_16522_0_0":[""],"item_7128_16515_0_0":["Chloride"],"item_7128_16516_0_0":[""],"item_7128_16517_0_0":[""],"item_7128_16517_0_0_r":[""],"item_7128_16518_0_0":[""],"item_7129_16511_0_0":["Creatinine"],"item_7129_16512_0_0":[""],"item_7129_16513_0_0":[""],"item_7129_16513_0_0_r":[""],"item_7129_16514_0_0":[""],"item_7130_16507_0_0":["BUN"],"item_7130_16508_03A[""],"item_7121_16536_0_0":["Protein"],"item_7121_16537_0_0":[""],"item_7121_16539_0_0":[""],"item_7122_16532_0_0":["Glucose"],"item_7122_16533_0_0":[""],"item_7122_16535_0_0":[""]}
> Received is:
> dataJson={"crfpage_type":["CRF"],"qst_rowno":["7148#0#0","7141#0#0","7143#0#0","7144#0#0","7145#0#0","7146#0#0","7147#0#0","7123#0#0","7125#0#0","7126#0#0","7127#0#0","7128#0#0","7129#0#0","7130#0#0","7131#0#0","7132#0#0","7133#0#0","7134#0#0","7135#0#0","7136#0#0","7137#0#0","7138#0#0","7139#0#0","7140#0#0","7117#0#0","7119#0#0","7120#0#0","7121#0#0","7122#0#0"],"item_7148_16445_0_0":[""],"_item_7141_16466_0_0":[""],"item_7143_16462_0_0":["RBC"],"item_7143_16463_0_0":[""],"item_7143_16464_0_0":[""],"item_7143_16464_0_0_r":[""],"item_7143_16465_0_0":[""],"item_7144_16458_0_0":["Hemoglobin"],"item_7144_16459_0_0":[""],"item_7144_16460_0_0":[""],"item_7144_16460_0_0_r":[""],"item_7144_16461_0_0":[""],"item_7145_16454_0_0":["Hematocrit"],"item_7145_16455_0_0":[""],"item_7145_16456_0_0":[""],"item_7145_16456_0_0_r":[""],"item_7145_16457_0_0":[""],"item_7146_16450_0_0":["Platelet"],"item_7146_16451_0_0":[""],"item_7146_16452_0_0":[""],"item_7146_16452_0_0_r":[""],"item_7146_16453_0_0":[""],"item_7147_16446_0_0":["WBC"],"item_7147_16447_0_0":[""],"item_7147_16448_0_0":[""],"item_7147_16448_0_0_r":[""],"item_7147_16449_0_0":[""],"_item_7123_16531_0_0":[""],"item_7125_16527_0_0":["Calcium"],"item_7125_16528_0_0":[""],"item_7125_16529_0_0":[""],"item_7125_16529_0_0_r":[""],"item_7125_16530_0_0":[""],"item_7126_16523_0_0":["Sodium"],"item_7126_16524_0_0":[""],"item_7126_16525_0_0":[""],"item_7126_16525_0_0_r":[""],"item_7126_16526_0_0":[""],"item_7127_16519_0_0":["Potassium"],"item_7127_16520_0_0":[""],"item_7127_16521_0_0":[""],"item_7127_16521_0_0_r":[""],"item_7127_16522_0_0":[""],"item_7128_16515_0_0":["Chloride"],"item_7128_16516_0_0":[""],"item_7128_16517_0_0":[""],"item_7128_16517_0_0_r":[""],"item_7128_16518_0_0":[""],"item_7129_16511_0_0":["Creatinine"],"item_7129_16512_0_0":[""],"item_7129_16513_0_0":[""],"item_7129_16513_0_0_r":[""],"item_7129_16514_0_0":[""],"item_7130_16507_0_0":["BUN"],"item_7130_16508_0rl=/cs8635_sit_11_01/crf-submit/S4Z068/3015 , dataJson={"crfpage_type":["CRF"],"qst_rowno":["7148#0#0","7141#0#0","7143#0#0","7144#0#0","7145#0#0","7146#0#0","7147#0#0","7123#0#0","7125#0#0","7126#0#0","7127#0#0","7128#0#0","7129#0#0","7130#0#0","7131#0#0","7132#0#0","7133#0#0","7134#0#0","7135#0#0","7136#0#0","7137#0#0","7138#0#0","7139#0#0","7140#0#0","7117#0#0","7119#0#0","7120#0#0","7121#0#0","7122#0#0"],"item_7148_16445_0_0":[""],"_item_7141_16466_0_0":[""],"item_7143_16462_0_0":["RBC"],"item_7143_16463_0_ataJson={"crfpage_type":["CRF"],"qst_rowno":["7148#0#0","7141#0#0","7143#0#0","7144#0#0","7145#0#0","7146#0#0","7147#0#0","7123#0#0","7125#0#0","7126#0#0","7127#0#0","7128#0#0","7129#0#0","7130#0#0","7131#0#0","7132#0#0","7133#0#0","7134#0#0","7135#0#0","7136#0#0","7137#0#0","7138#0#0","7139#0#0","7140#0#0","7117#0#0","7119#0#0","7120#0#0","7121#0#0","7122#0#0"],"item_7148_16445_0_0":[""],"_item_7141_16466_0_0":[""],"item_7143_16462_0_0":["RBC"],"item_7143_16463_0_0":[""],"item_7143_16464_0_0":[""],"item_7143_16464_0_0_r":[""],"item_7143_16465_0_0":[""],"item_7144_16458_0_0":["Hemoglobin"],"item_7144_16459_0_0":[""],"item_7144_16460_0_0":[""],"item_7144_16460_0_0_r":[""],"item_7144_16461_0_0":[""],"item_7145_16454_0_0":["Hematocrit"],"item_7145_16455_0_0":[""],"item_7145_16456_0_0":[""],"item_7145_16456_0_0_r":[""],"item_7145_16457_0_0":[""],"item_7146_16450_0_0":["Platelet"],"item_7146_16451_0_0":[""],"item_7146_16452_0_0":[""],"item_7146_16452_0_0_r":[""],"item_7146_16453_0_0":[""],"item_7147_16446_0_0":["WBC"],"item_7147_16447_0_0":[""],"item_7147_16448_0_0":[""],"item_7147_16448_0_0_r":[""],"item_7147_16449_0_0":[""],"_item_7123_16531_0_0":[""],"item_7125_16527_0_0":["Calcium"],"item_7125_16528_0_0":[""],"item_7125_16529_0_0":[""],"item_7125_16529_0_0_r":[""],"item_7125_16530_0_0":[""],"item_7126_16523_0_0":["Sodium"],"item_7126_16524_0_0":[""],"item_7126_16525_0_0":[""],"item_7126_16525_0_0_r":[""],"item_7126_16526_0_0":[""],"item_7127_16519_0_0":["Potassium"],"item_7127_16520_0_0":[""],"item_7127_16521_0_0":[""],"item_7127_16521_0_0_r":[""],"item_7127_16522_0_0":[""],"item_7128_16515_0_0":["Chloride"],"item_7128_16516_0_0":[""],"item_7128_16517_0_0":[""],"item_7128_16517_0_0_r":[""],"item_7128_16518_0_0":[""],"item_7129_16511_0_0":["Creatinine"],"item_7129_16512_0_0":[""],"item_7129_16513_0_0":[""],"item_7129_16513_0_0_r":[""],"item_7129_16514_0_0":[""],"item_7130_16507_0_0":["BUN"],"item_7130_16508_0rl=/cs8635_sit_11_01/crf-submit/S4Z068/3015 , dataJson={"crfpage_type":["CRF"],"qst_rowno":["7148#0#0","7141#0#0","7143#0#0","7144#0#0","7145#0#0","7146#0#0","7147#0#0","7123#0#0","7125#0#0","7126#0#0","7127#0#0","7128#0#0","7129#0#0","7130#0#0","7131#0#0","7132#0#0","7133#0#0","7134#0#0","7135#0#0","7136#0#0","7137#0#0","7138#0#0","7139#0#0","7140#0#0","7117#0#0","7119#0#0","7120#0#0","7121#0#0","7122#0#0"],"item_7148_16445_0_0":[""],"_item_7141_16466_0_0":[""],"item_7143_16462_0_0":["RBC"],"item_7143_16463_0_
> I test use HTTP Connector same case, but it is normal(request and received is same)
--
This message was sent by Atlassian JIRA
(v6.3.11#6341)
9 years, 7 months
[JBoss JIRA] (JGRP-1910) MERGE3: Do not lose any members from view during a series of merges
by Bela Ban (JIRA)
[ https://issues.jboss.org/browse/JGRP-1910?page=com.atlassian.jira.plugin.... ]
Bela Ban commented on JGRP-1910:
--------------------------------
Added {{GMS.use_all_views_to_determine_merge_leaders}} (default=true) to define whether to select all view creators as potential merge leaders (true), or to select only view creators which are also the senders of view-ids (false). Default is true, so this is a slight change of behavior.
The change is that now we reduced the chances of parallel merges happening, but also slightly increased the chances of a merge leader not being accessible and merging having to wait until that coord is suspected and excluded.
> MERGE3: Do not lose any members from view during a series of merges
> -------------------------------------------------------------------
>
> Key: JGRP-1910
> URL: https://issues.jboss.org/browse/JGRP-1910
> Project: JGroups
> Issue Type: Bug
> Reporter: Radim Vansa
> Assignee: Bela Ban
> Fix For: 3.6.3
>
> Attachments: SplitMergeFailFastTest.java, SplitMergeTest.java
>
>
> When connection between nodes is re-established, MERGE3 should merge the cluster together. This often does not involve a single MergeView but a series of such events. The problematic property of this protocol is that some of those views can lack certain members, though these are reachable.
> This causes problem in Infinispan since the cache cannot be fully rebalanced before another merge arrives, and all owners of certain segment can be gradually removed (and added again) to the view, while this is not detected as partition but crashed nodes -> losing all owners means data loss.
> Removing members from view should be the role of FDx protocols, not MERGEx.
--
This message was sent by Atlassian JIRA
(v6.3.11#6341)
9 years, 7 months
[JBoss JIRA] (WFLY-2999) AJP connector request body stream is wrong mixed
by Jarno Komulainen (JIRA)
[ https://issues.jboss.org/browse/WFLY-2999?page=com.atlassian.jira.plugin.... ]
Jarno Komulainen commented on WFLY-2999:
----------------------------------------
Hi, we have combination Apache 2.2.22 + mod_jk 1.2.37 + Wildfly 8.2. When trying to use webservice we get:
13:09:37,773 ERROR [io.undertow.request] (default task-25) UT005023: Exception handling request to /ttmi-ws/services/NetworkService: java.lang.NullPointerException
at io.undertow.server.HttpServerExchange.getHostName(HttpServerExchange.java:580) [undertow-core-1.1.0.Final.jar:1.1.0.Final]
at io.undertow.servlet.spec.HttpServletRequestImpl.getServerName(HttpServletRequestImpl.java:772) [undertow-servlet-1.1.0.Final.jar:1.1.0.Final]
at javax.servlet.http.HttpUtils.getRequestURL(HttpUtils.java:310) [jboss-servlet-api_3.1_spec-1.0.0.Final.jar:1.0.0.Final]
at org.apache.axis.transport.http.AxisServlet.doPost(AxisServlet.java:652) [axis.jar:]
at javax.servlet.http.HttpServlet.service(HttpServlet.java:707) [jboss-servlet-api_3.1_spec-1.0.0.Final.jar:1.0.0.Final]
at org.apache.axis.transport.http.AxisServletBase.service(AxisServletBase.java:327) [axis.jar:]
at javax.servlet.http.HttpServlet.service(HttpServlet.java:790) [jboss-servlet-api_3.1_spec-1.0.0.Final.jar:1.0.0.Final]
at io.undertow.servlet.handlers.ServletHandler.handleRequest(ServletHandler.java:85) [undertow-servlet-1.1.0.Final.jar:1.1.0.Final]
at io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.java:61) [undertow-servlet-1.1.0.Final.jar:1.1.0.Final]
at io.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest(ServletDispatchingHandler.java:36) [undertow-servlet-1.1.0.Final.jar:1.1.0.Final]
at org.wildfly.extension.undertow.security.SecurityContextAssociationHandler.handleRequest(SecurityContextAssociationHandler.java:78)
at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43) [undertow-core-1.1.0.Final.jar:1.1.0.Final]
at io.undertow.servlet.handlers.security.SSLInformationAssociationHandler.handleRequest(SSLInformationAssociationHandler.java:131) [undertow-servlet-1.1.0.Final.jar:1.1.0.Final]
at io.undertow.servlet.handlers.security.ServletAuthenticationCallHandler.handleRequest(ServletAuthenticationCallHandler.java:56) [undertow-servlet-1.1.0.Final.jar:1.1.0.Final]
at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43) [undertow-core-1.1.0.Final.jar:1.1.0.Final]
at io.undertow.security.handlers.AbstractConfidentialityHandler.handleRequest(AbstractConfidentialityHandler.java:45) [undertow-core-1.1.0.Final.jar:1.1.0.Final]
at io.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler.handleRequest(ServletConfidentialityConstraintHandler.java:63) [undertow-servlet-1.1.0.Final.jar:1.1.0.Final]
at io.undertow.security.handlers.AuthenticationMechanismsHandler.handleRequest(AuthenticationMechanismsHandler.java:58) [undertow-core-1.1.0.Final.jar:1.1.0.Final]
at io.undertow.servlet.handlers.security.CachedAuthenticatedSessionHandler.handleRequest(CachedAuthenticatedSessionHandler.java:70) [undertow-servlet-1.1.0.Final.jar:1.1.0.Final]
at io.undertow.security.handlers.SecurityInitialHandler.handleRequest(SecurityInitialHandler.java:76) [undertow-core-1.1.0.Final.jar:1.1.0.Final]
at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43) [undertow-core-1.1.0.Final.jar:1.1.0.Final]
at org.wildfly.extension.undertow.security.jacc.JACCContextIdHandler.handleRequest(JACCContextIdHandler.java:61)
at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43) [undertow-core-1.1.0.Final.jar:1.1.0.Final]
at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43) [undertow-core-1.1.0.Final.jar:1.1.0.Final]
at io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:261) [undertow-servlet-1.1.0.Final.jar:1.1.0.Final]
at io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:247) [undertow-servlet-1.1.0.Final.jar:1.1.0.Final]
at io.undertow.servlet.handlers.ServletInitialHandler.access$000(ServletInitialHandler.java:76) [undertow-servlet-1.1.0.Final.jar:1.1.0.Final]
at io.undertow.servlet.handlers.ServletInitialHandler$1.handleRequest(ServletInitialHandler.java:166) [undertow-servlet-1.1.0.Final.jar:1.1.0.Final]
at io.undertow.server.Connectors.executeRootHandler(Connectors.java:197) [undertow-core-1.1.0.Final.jar:1.1.0.Final]
at io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:759) [undertow-core-1.1.0.Final.jar:1.1.0.Final]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) [rt.jar:1.7.0_76]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) [rt.jar:1.7.0_76]
at java.lang.Thread.run(Thread.java:745) [rt.jar:1.7.0_76]
Same thing if we use mod_proxy with ajp. But if we use mod_proxy with http it works. It also works if we remove apache and connect directly to wildfly.
> AJP connector request body stream is wrong mixed
> ------------------------------------------------
>
> Key: WFLY-2999
> URL: https://issues.jboss.org/browse/WFLY-2999
> Project: WildFly
> Issue Type: Bug
> Components: Web (Undertow)
> Affects Versions: 8.0.0.Final
> Environment: Apahce HTTPD 2.2.23 + MOD_CLUSTER 1.3 Final + WildFly 8 Final
> Reporter: JuYeon Yu
> Assignee: Stuart Douglas
> Fix For: 9.0.0.Alpha1
>
>
> Seem to have a problem with the AJP Connector.
> When client(Browser) send request has many parameter, sometime received content is different.
> ex)
> Request Body is:
> dataJson={"crfpage_type":["CRF"],"qst_rowno":["7148#0#0","7141#0#0","7143#0#0","7144#0#0","7145#0#0","7146#0#0","7147#0#0","7123#0#0","7125#0#0","7126#0#0","7127#0#0","7128#0#0","7129#0#0","7130#0#0","7131#0#0","7132#0#0","7133#0#0","7134#0#0","7135#0#0","7136#0#0","7137#0#0","7138#0#0","7139#0#0","7140#0#0","7117#0#0","7119#0#0","7120#0#0","7121#0#0","7122#0#0"],"item_7148_16445_0_0":[""],"_item_7141_16466_0_0":[""],"item_7143_16462_0_0":["RBC"],"item_7143_16463_0_0":[""],"item_7143_16464_0_0":[""],"item_7143_16464_0_0_r":[""],"item_7143_16465_0_0":[""],"item_7144_16458_0_0":["Hemoglobin"],"item_7144_16459_0_0":[""],"item_7144_16460_0_0":[""],"item_7144_16460_0_0_r":[""],"item_7144_16461_0_0":[""],"item_7145_16454_0_0":["Hematocrit"],"item_7145_16455_0_0":[""],"item_7145_16456_0_0":[""],"item_7145_16456_0_0_r":[""],"item_7145_16457_0_0":[""],"item_7146_16450_0_0":["Platelet"],"item_7146_16451_0_0":[""],"item_7146_16452_0_0":[""],"item_7146_16452_0_0_r":[""],"item_7146_16453_0_0":[""],"item_7147_16446_0_0":["WBC"],"item_7147_16447_0_0":[""],"item_7147_16448_0_0":[""],"item_7147_16448_0_0_r":[""],"item_7147_16449_0_0":[""],"_item_7123_16531_0_0":[""],"item_7125_16527_0_0":["Calcium"],"item_7125_16528_0_0":[""],"item_7125_16529_0_0":[""],"item_7125_16529_0_0_r":[""],"item_7125_16530_0_0":[""],"item_7126_16523_0_0":["Sodium"],"item_7126_16524_0_0":[""],"item_7126_16525_0_0":[""],"item_7126_16525_0_0_r":[""],"item_7126_16526_0_0":[""],"item_7127_16519_0_0":["Potassium"],"item_7127_16520_0_0":[""],"item_7127_16521_0_0":[""],"item_7127_16521_0_0_r":[""],"item_7127_16522_0_0":[""],"item_7128_16515_0_0":["Chloride"],"item_7128_16516_0_0":[""],"item_7128_16517_0_0":[""],"item_7128_16517_0_0_r":[""],"item_7128_16518_0_0":[""],"item_7129_16511_0_0":["Creatinine"],"item_7129_16512_0_0":[""],"item_7129_16513_0_0":[""],"item_7129_16513_0_0_r":[""],"item_7129_16514_0_0":[""],"item_7130_16507_0_0":["BUN"],"item_7130_16508_0rl=/cs8635_sit_11_01/crf-submit/S4Z068/3015 , dataJson={"crfpage_type":["CRF"],"qst_rowno":["7148#0#0","7141#0#0","7143#0#0","7144#0#0","7145#0#0","7146#0#0","7147#0#0","7123#0#0","7125#0#0","7126#0#0","7127#0#0","7128#0#0","7129#0#0","7130#0#0","7131#0#0","7132#0#0","7133#0#0","7134#0#0","7135#0#0","7136#0#0","7137#0#0","7138#0#0","7139#0#0","7140#0#0","7117#0#0","7119#0#0","7120#0#0","7121#0#0","7122#0#0"],"item_7148_16445_0_0":[""],"_item_7141_16466_0_0":[""],"item_7143_16462_0_0":["RBC"],"item_7143_16463_0_0":[""],"item_7143_16464_0_0":[""],"item_7143_16464_0_0_r":[""],"item_7143_16465_0_0":[""],"item_7144_16458_0_0":["Hemoglobin"],"item_7144_16459_0_0":[""],"item_7144_16460_0_0":[""],"item_7144_16460_0_0_r":[""],"item_7144_16461_0_0":[""],"item_7145_16454_0_0":["Hematocrit"],"item_7145_16455_0_0":[""],"item_7145_16456_0_0":[""],"item_7145_16456_0_0_r":[""],"item_7145_16457_0_0":[""],"item_7146_16450_0_0":["Platelet"],"item_7146_16451_0_0":[""],"item_7146_16452_0_0":[""],"item_7146_16452_0_0_r":[""],"item_7146_16453_0_0":[""],"item_7147_16446_0_0":["WBC"],"item_7147_16447_0_0":[""],"item_7147_16448_0_0":[""],"item_7147_16448_0_0_r":[""],"item_7147_16449_0_0":[""],"_item_7123_16531_0_0":[""],"item_7125_16527_0_0":["Calcium"],"item_7125_16528_0_0":[""],"item_7125_16529_0_0":[""],"item_7125_16529_0_0_r":[""],"item_7125_16530_0_0":[""],"item_7126_16523_0_0":["Sodium"],"item_7126_16524_0_0":[""],"item_7126_16525_0_0":[""],"item_7126_16525_0_0_r":[""],"item_7126_16526_0_0":[""],"item_7127_16519_0_0":["Potassium"],"item_7127_16520_0_0":[""],"item_7127_16521_0_0":[""],"item_7127_16521_0_0_r":[""],"item_7127_16522_0_0":[""],"item_7128_16515_0_0":["Chloride"],"item_7128_16516_0_0":[""],"item_7128_16517_0_0":[""],"item_7128_16517_0_0_r":[""],"item_7128_16518_0_0":[""],"item_7129_16511_0_0":["Creatinine"],"item_7129_16512_0_0":[""],"item_7129_16513_0_0":[""],"item_7129_16513_0_0_r":[""],"item_7129_16514_0_0":[""],"item_7130_16507_0_0":["BUN"],"item_7130_16508_0rl=/cs8635_sit_11_01/crf-submit/S4Z068/3015 , dataJson={"crfpage_type":["CRF"],"qst_rowno":["7148#0#0","7141#0#0","7143#0#0","7144#0#0","7145#0#0","7146#0#0","7147#0#0","7123#0#0","7125#0#0","7126#0#0","7127#0#0","7128#0#0","7129#0#0","7130#0#0","7131#0#0","7132#0#0","7133#0#0","7134#0#0","7135#0#0","7136#0#0","7137#0#0","7138#0#0","7139#0#0","7140#0#0","7117#0#0","7119#0#0","7120#0#0","7121#0#0","7122#0#0"],"item_7148_16445_0_0":[""],"_item_7141_16466_0_0":[""],"item_7143_16462_0_0":["RBC"],"item_7143_16463_0_0":[""],"item_7143_16464_0_0":[""],"item_7143_16464_0_0_r":[""],"item_7143_16465_0_0":[""],"item_7144_16458_0_0":["Hemoglobin"],"item_7144_16459_0_0":[""],"item_7144_16460_0_0":[""],"item_7144_16460_0_0_r":[""],"item_7144_16461_0_0":[""],"item_7145_16454_0_0":["Hematocrit"],"item_7145_16455_0_0":[""],"item_7145_16456_0_0":[""],"item_7145_16456_0_0_r":[""],"item_7145_16457_0_0":[""],"item_7146_16450_0_0":["Platelet"],"item_7146_16451_0_0":[""],"item_7146_16452_0_0":[""],"item_7146_16452_0_0_r":[""],"item_7146_16453_0_0":[""],"item_7147_16446_0_0":["WBC"],"item_7147_16447_0_0":[""],"item_7147_16448_0_0":[""],"item_7147_16448_0_0_r":[""],"item_7147_16449_0_0":[""],"_item_7123_16531_0_0":[""],"item_7125_16527_0_0":["Calcium"],"item_7125_16528_0_0":[""],"item_7125_16529_0_0":[""],"item_7125_16529_0_0_r":[""],"item_7125_16530_0_0":[""],"item_7126_16523_0_0":["Sodium"],"item_7126_16524_0_0":[""],"item_7126_16525_0_0":[""],"item_7126_16525_0_0_r":[""],"item_7126_16526_0_0":[""],"item_7127_16519_0_0":["Potassium"],"item_7127_16520_0_0":[""],"item_7127_16521_0_0":[""],"item_7127_16521_0_0_r":[""],"item_7127_16522_0_0":[""],"item_7128_16515_0_0":["Chloride"],"item_7128_16516_0_0":[""],"item_7128_16517_0_0":[""],"item_7128_16517_0_0_r":[""],"item_7128_16518_0_0":[""],"item_7129_16511_0_0":["Creatinine"],"item_7129_16512_0_0":[""],"item_7129_16513_0_0":[""],"item_7129_16513_0_0_r":[""],"item_7129_16514_0_0":[""],"item_7130_16507_0_0":["BUN"],"item_7130_16508_03A[""],"item_7121_16536_0_0":["Protein"],"item_7121_16537_0_0":[""],"item_7121_16539_0_0":[""],"item_7122_16532_0_0":["Glucose"],"item_7122_16533_0_0":[""],"item_7122_16535_0_0":[""]}
> Received is:
> dataJson={"crfpage_type":["CRF"],"qst_rowno":["7148#0#0","7141#0#0","7143#0#0","7144#0#0","7145#0#0","7146#0#0","7147#0#0","7123#0#0","7125#0#0","7126#0#0","7127#0#0","7128#0#0","7129#0#0","7130#0#0","7131#0#0","7132#0#0","7133#0#0","7134#0#0","7135#0#0","7136#0#0","7137#0#0","7138#0#0","7139#0#0","7140#0#0","7117#0#0","7119#0#0","7120#0#0","7121#0#0","7122#0#0"],"item_7148_16445_0_0":[""],"_item_7141_16466_0_0":[""],"item_7143_16462_0_0":["RBC"],"item_7143_16463_0_0":[""],"item_7143_16464_0_0":[""],"item_7143_16464_0_0_r":[""],"item_7143_16465_0_0":[""],"item_7144_16458_0_0":["Hemoglobin"],"item_7144_16459_0_0":[""],"item_7144_16460_0_0":[""],"item_7144_16460_0_0_r":[""],"item_7144_16461_0_0":[""],"item_7145_16454_0_0":["Hematocrit"],"item_7145_16455_0_0":[""],"item_7145_16456_0_0":[""],"item_7145_16456_0_0_r":[""],"item_7145_16457_0_0":[""],"item_7146_16450_0_0":["Platelet"],"item_7146_16451_0_0":[""],"item_7146_16452_0_0":[""],"item_7146_16452_0_0_r":[""],"item_7146_16453_0_0":[""],"item_7147_16446_0_0":["WBC"],"item_7147_16447_0_0":[""],"item_7147_16448_0_0":[""],"item_7147_16448_0_0_r":[""],"item_7147_16449_0_0":[""],"_item_7123_16531_0_0":[""],"item_7125_16527_0_0":["Calcium"],"item_7125_16528_0_0":[""],"item_7125_16529_0_0":[""],"item_7125_16529_0_0_r":[""],"item_7125_16530_0_0":[""],"item_7126_16523_0_0":["Sodium"],"item_7126_16524_0_0":[""],"item_7126_16525_0_0":[""],"item_7126_16525_0_0_r":[""],"item_7126_16526_0_0":[""],"item_7127_16519_0_0":["Potassium"],"item_7127_16520_0_0":[""],"item_7127_16521_0_0":[""],"item_7127_16521_0_0_r":[""],"item_7127_16522_0_0":[""],"item_7128_16515_0_0":["Chloride"],"item_7128_16516_0_0":[""],"item_7128_16517_0_0":[""],"item_7128_16517_0_0_r":[""],"item_7128_16518_0_0":[""],"item_7129_16511_0_0":["Creatinine"],"item_7129_16512_0_0":[""],"item_7129_16513_0_0":[""],"item_7129_16513_0_0_r":[""],"item_7129_16514_0_0":[""],"item_7130_16507_0_0":["BUN"],"item_7130_16508_0rl=/cs8635_sit_11_01/crf-submit/S4Z068/3015 , dataJson={"crfpage_type":["CRF"],"qst_rowno":["7148#0#0","7141#0#0","7143#0#0","7144#0#0","7145#0#0","7146#0#0","7147#0#0","7123#0#0","7125#0#0","7126#0#0","7127#0#0","7128#0#0","7129#0#0","7130#0#0","7131#0#0","7132#0#0","7133#0#0","7134#0#0","7135#0#0","7136#0#0","7137#0#0","7138#0#0","7139#0#0","7140#0#0","7117#0#0","7119#0#0","7120#0#0","7121#0#0","7122#0#0"],"item_7148_16445_0_0":[""],"_item_7141_16466_0_0":[""],"item_7143_16462_0_0":["RBC"],"item_7143_16463_0_ataJson={"crfpage_type":["CRF"],"qst_rowno":["7148#0#0","7141#0#0","7143#0#0","7144#0#0","7145#0#0","7146#0#0","7147#0#0","7123#0#0","7125#0#0","7126#0#0","7127#0#0","7128#0#0","7129#0#0","7130#0#0","7131#0#0","7132#0#0","7133#0#0","7134#0#0","7135#0#0","7136#0#0","7137#0#0","7138#0#0","7139#0#0","7140#0#0","7117#0#0","7119#0#0","7120#0#0","7121#0#0","7122#0#0"],"item_7148_16445_0_0":[""],"_item_7141_16466_0_0":[""],"item_7143_16462_0_0":["RBC"],"item_7143_16463_0_0":[""],"item_7143_16464_0_0":[""],"item_7143_16464_0_0_r":[""],"item_7143_16465_0_0":[""],"item_7144_16458_0_0":["Hemoglobin"],"item_7144_16459_0_0":[""],"item_7144_16460_0_0":[""],"item_7144_16460_0_0_r":[""],"item_7144_16461_0_0":[""],"item_7145_16454_0_0":["Hematocrit"],"item_7145_16455_0_0":[""],"item_7145_16456_0_0":[""],"item_7145_16456_0_0_r":[""],"item_7145_16457_0_0":[""],"item_7146_16450_0_0":["Platelet"],"item_7146_16451_0_0":[""],"item_7146_16452_0_0":[""],"item_7146_16452_0_0_r":[""],"item_7146_16453_0_0":[""],"item_7147_16446_0_0":["WBC"],"item_7147_16447_0_0":[""],"item_7147_16448_0_0":[""],"item_7147_16448_0_0_r":[""],"item_7147_16449_0_0":[""],"_item_7123_16531_0_0":[""],"item_7125_16527_0_0":["Calcium"],"item_7125_16528_0_0":[""],"item_7125_16529_0_0":[""],"item_7125_16529_0_0_r":[""],"item_7125_16530_0_0":[""],"item_7126_16523_0_0":["Sodium"],"item_7126_16524_0_0":[""],"item_7126_16525_0_0":[""],"item_7126_16525_0_0_r":[""],"item_7126_16526_0_0":[""],"item_7127_16519_0_0":["Potassium"],"item_7127_16520_0_0":[""],"item_7127_16521_0_0":[""],"item_7127_16521_0_0_r":[""],"item_7127_16522_0_0":[""],"item_7128_16515_0_0":["Chloride"],"item_7128_16516_0_0":[""],"item_7128_16517_0_0":[""],"item_7128_16517_0_0_r":[""],"item_7128_16518_0_0":[""],"item_7129_16511_0_0":["Creatinine"],"item_7129_16512_0_0":[""],"item_7129_16513_0_0":[""],"item_7129_16513_0_0_r":[""],"item_7129_16514_0_0":[""],"item_7130_16507_0_0":["BUN"],"item_7130_16508_0rl=/cs8635_sit_11_01/crf-submit/S4Z068/3015 , dataJson={"crfpage_type":["CRF"],"qst_rowno":["7148#0#0","7141#0#0","7143#0#0","7144#0#0","7145#0#0","7146#0#0","7147#0#0","7123#0#0","7125#0#0","7126#0#0","7127#0#0","7128#0#0","7129#0#0","7130#0#0","7131#0#0","7132#0#0","7133#0#0","7134#0#0","7135#0#0","7136#0#0","7137#0#0","7138#0#0","7139#0#0","7140#0#0","7117#0#0","7119#0#0","7120#0#0","7121#0#0","7122#0#0"],"item_7148_16445_0_0":[""],"_item_7141_16466_0_0":[""],"item_7143_16462_0_0":["RBC"],"item_7143_16463_0_
> I test use HTTP Connector same case, but it is normal(request and received is same)
--
This message was sent by Atlassian JIRA
(v6.3.11#6341)
9 years, 7 months
[JBoss JIRA] (WFLY-4413) Network connection leak in asynchronous servlet
by jeremy_lv lv (JIRA)
[ https://issues.jboss.org/browse/WFLY-4413?page=com.atlassian.jira.plugin.... ]
jeremy_lv lv updated WFLY-4413:
-------------------------------
Description:
{panel:title=Phenomenon|borderStyle=dashed|borderColor=#ccc|titleBGColor=#F7D6C1|bgColor=#FFFFCE}
When the connection is suddenly terminated during the period we access the asynchronous servlet application, the connection will be leaked. However, the connection won't be leak when we access the synchronous servlet application.
{panel}
*Some of the stacktrace are as follows:*
{panel:title=Stacktrace|borderStyle=dashed|borderColor=#ccc|titleBGColor=#F7D6C1|bgColor=#FFFFCE}
14:34:23,751 ERROR [io.undertow.request] (default task-22) Blocking request fail
at io.undertow.servlet.spec.HttpServletResponseImpl.responseDone(HttpSer
at io.undertow.servlet.spec.AsyncContextImpl$3.run(AsyncContextImpl.java
at io.undertow.servlet.spec.AsyncContextImpl$6.run(AsyncContextImpl.java
at io.undertow.servlet.spec.AsyncContextImpl$TaskDispatchRunnable.run(As
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor
at java.lang.Thread.run(Thread.java:724) [rt.jar:1.7.0_25]
Caused by: java.io.IOException: Connection reset by peer
at sun.nio.ch.FileDispatcherImpl.write0(Native Method) [rt.jar:1.7.0_25]
at sun.nio.ch.SocketDispatcher.write(SocketDispatcher.java:47) [rt.jar:1
at sun.nio.ch.IOUtil.writeFromNativeBuffer(IOUtil.java:94) [rt.jar:1.7.0
at sun.nio.ch.IOUtil.write(IOUtil.java:51) [rt.jar:1.7.0_25]
at sun.nio.ch.SocketChannelImpl.write(SocketChannelImpl.java:466) [rt.ja
at org.xnio.nio.NioSocketConduit.write(NioSocketConduit.java:150)
at io.undertow.server.protocol.http.HttpResponseConduit.processWrite(Htt
at io.undertow.server.protocol.http.HttpResponseConduit.flush(HttpRespon
at io.undertow.conduits.AbstractFixedLengthStreamSinkConduit.flush(Abstr
at org.xnio.conduits.ConduitStreamSinkChannel.flush(ConduitStreamSinkCha
at io.undertow.channels.DetachableStreamSinkChannel.flush(DetachableStre
at org.xnio.channels.Channels.flushBlocking(Channels.java:63)
at io.undertow.servlet.spec.ServletOutputStreamImpl.close(ServletOutputS
at io.undertow.servlet.spec.HttpServletResponseImpl.closeStreamAndWriter
at io.undertow.servlet.spec.HttpServletResponseImpl.responseDone(HttpSer
... 6 more
{panel}
*Here's the test war code you can used to reproduce this phenomenon:*
{code:title=AsyncDemoServlet.java|borderStyle=solid}
import java.io.IOException;
import javax.servlet.AsyncContext;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet(urlPatterns="/asyncDemoServlet",asyncSupported=true)
public class AsyncDemoServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
//Execute the business logic in sub-thread.
AsyncContext ctx = request.startAsync();
new Thread(new Executor(ctx)).start();
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
public class Executor implements Runnable {
private AsyncContext ctx = null;
public Executor(AsyncContext ctx){
this.ctx = ctx;
}
public void run(){
try {
ctx.getResponse().getOutputStream().write("aaa".getBytes());
//wait for 5 seconds to simulate the business logic.
Thread.sleep(5000);
ctx.getResponse().getOutputStream().flush();
ctx.complete();
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
{code}
was:
{panel:title=Phenomenon|borderStyle=dashed|borderColor=#ccc|titleBGColor=#F7D6C1|bgColor=#FFFFCE}
When the connection is suddenly terminated during the period we access the asynchronous servlet application, the connection will be leaked. However, the connection won't be leak when we access the synchronous servlet application.
{panel}
*Some of the stacktrace are as follows:*
{panel:title=Stacktrace|borderStyle=dashed|borderColor=#ccc|titleBGColor=#F7D6C1|bgColor=#FFFFCE}
14:34:23,751 ERROR [io.undertow.request] (default task-22) Blocking request fail
at io.undertow.servlet.spec.HttpServletResponseImpl.responseDone(HttpSer
at io.undertow.servlet.spec.AsyncContextImpl$3.run(AsyncContextImpl.java
at io.undertow.servlet.spec.AsyncContextImpl$6.run(AsyncContextImpl.java
at io.undertow.servlet.spec.AsyncContextImpl$TaskDispatchRunnable.run(As
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor
at java.lang.Thread.run(Thread.java:724) [rt.jar:1.7.0_25]
Caused by: java.io.IOException: Connection reset by peer
at sun.nio.ch.FileDispatcherImpl.write0(Native Method) [rt.jar:1.7.0_25]
at sun.nio.ch.SocketDispatcher.write(SocketDispatcher.java:47) [rt.jar:1
at sun.nio.ch.IOUtil.writeFromNativeBuffer(IOUtil.java:94) [rt.jar:1.7.0
at sun.nio.ch.IOUtil.write(IOUtil.java:51) [rt.jar:1.7.0_25]
at sun.nio.ch.SocketChannelImpl.write(SocketChannelImpl.java:466) [rt.ja
at org.xnio.nio.NioSocketConduit.write(NioSocketConduit.java:150)
at io.undertow.server.protocol.http.HttpResponseConduit.processWrite(Htt
at io.undertow.server.protocol.http.HttpResponseConduit.flush(HttpRespon
at io.undertow.conduits.AbstractFixedLengthStreamSinkConduit.flush(Abstr
at org.xnio.conduits.ConduitStreamSinkChannel.flush(ConduitStreamSinkCha
at io.undertow.channels.DetachableStreamSinkChannel.flush(DetachableStre
at org.xnio.channels.Channels.flushBlocking(Channels.java:63)
at io.undertow.servlet.spec.ServletOutputStreamImpl.close(ServletOutputS
at io.undertow.servlet.spec.HttpServletResponseImpl.closeStreamAndWriter
at io.undertow.servlet.spec.HttpServletResponseImpl.responseDone(HttpSer
... 6 more
{panel}
*Here's the test war code you can used to reproduce this phenomenon:*
{code:title=AsyncDemoServlet.java|borderStyle=solid}
import java.io.IOException;
import javax.servlet.AsyncContext;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet(urlPatterns="/asyncDemoServlet",asyncSupported=true)
public class AsyncDemoServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
//Execute the business logic in sub-thread.
AsyncContext ctx = request.startAsync();
new Thread(new Executor(ctx)).start();
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
public class Executor implements Runnable {
private AsyncContext ctx = null;
public Executor(AsyncContext ctx){
this.ctx = ctx;
}
public void run(){
try {
ctx.getResponse().getOutputStream().write("aaa".getBytes());
//wait for 5 seconds to simulate the business logic.
Thread.sleep(5000);
ctx.getResponse().getOutputStream().flush();
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
{code}
> Network connection leak in asynchronous servlet
> -----------------------------------------------
>
> Key: WFLY-4413
> URL: https://issues.jboss.org/browse/WFLY-4413
> Project: WildFly
> Issue Type: Bug
> Components: Web (Undertow)
> Affects Versions: 8.1.0.Final, 8.2.0.Final
> Environment: Linux
> Reporter: jeremy_lv lv
> Assignee: Stuart Douglas
> Priority: Blocker
> Labels: undertow
>
> {panel:title=Phenomenon|borderStyle=dashed|borderColor=#ccc|titleBGColor=#F7D6C1|bgColor=#FFFFCE}
> When the connection is suddenly terminated during the period we access the asynchronous servlet application, the connection will be leaked. However, the connection won't be leak when we access the synchronous servlet application.
> {panel}
> *Some of the stacktrace are as follows:*
> {panel:title=Stacktrace|borderStyle=dashed|borderColor=#ccc|titleBGColor=#F7D6C1|bgColor=#FFFFCE}
> 14:34:23,751 ERROR [io.undertow.request] (default task-22) Blocking request fail
> at io.undertow.servlet.spec.HttpServletResponseImpl.responseDone(HttpSer
> at io.undertow.servlet.spec.AsyncContextImpl$3.run(AsyncContextImpl.java
> at io.undertow.servlet.spec.AsyncContextImpl$6.run(AsyncContextImpl.java
> at io.undertow.servlet.spec.AsyncContextImpl$TaskDispatchRunnable.run(As
> at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.
> at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor
> at java.lang.Thread.run(Thread.java:724) [rt.jar:1.7.0_25]
> Caused by: java.io.IOException: Connection reset by peer
> at sun.nio.ch.FileDispatcherImpl.write0(Native Method) [rt.jar:1.7.0_25]
> at sun.nio.ch.SocketDispatcher.write(SocketDispatcher.java:47) [rt.jar:1
> at sun.nio.ch.IOUtil.writeFromNativeBuffer(IOUtil.java:94) [rt.jar:1.7.0
> at sun.nio.ch.IOUtil.write(IOUtil.java:51) [rt.jar:1.7.0_25]
> at sun.nio.ch.SocketChannelImpl.write(SocketChannelImpl.java:466) [rt.ja
> at org.xnio.nio.NioSocketConduit.write(NioSocketConduit.java:150)
> at io.undertow.server.protocol.http.HttpResponseConduit.processWrite(Htt
> at io.undertow.server.protocol.http.HttpResponseConduit.flush(HttpRespon
> at io.undertow.conduits.AbstractFixedLengthStreamSinkConduit.flush(Abstr
> at org.xnio.conduits.ConduitStreamSinkChannel.flush(ConduitStreamSinkCha
> at io.undertow.channels.DetachableStreamSinkChannel.flush(DetachableStre
> at org.xnio.channels.Channels.flushBlocking(Channels.java:63)
> at io.undertow.servlet.spec.ServletOutputStreamImpl.close(ServletOutputS
> at io.undertow.servlet.spec.HttpServletResponseImpl.closeStreamAndWriter
> at io.undertow.servlet.spec.HttpServletResponseImpl.responseDone(HttpSer
> ... 6 more
> {panel}
> *Here's the test war code you can used to reproduce this phenomenon:*
> {code:title=AsyncDemoServlet.java|borderStyle=solid}
> import java.io.IOException;
> import javax.servlet.AsyncContext;
> import javax.servlet.ServletException;
> import javax.servlet.annotation.WebServlet;
> import javax.servlet.http.HttpServlet;
> import javax.servlet.http.HttpServletRequest;
> import javax.servlet.http.HttpServletResponse;
> @WebServlet(urlPatterns="/asyncDemoServlet",asyncSupported=true)
> public class AsyncDemoServlet extends HttpServlet {
> private static final long serialVersionUID = 1L;
> protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
> response.setContentType("text/html;charset=UTF-8");
> //Execute the business logic in sub-thread.
> AsyncContext ctx = request.startAsync();
> new Thread(new Executor(ctx)).start();
> }
> protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
> doGet(request, response);
> }
> public class Executor implements Runnable {
> private AsyncContext ctx = null;
> public Executor(AsyncContext ctx){
> this.ctx = ctx;
> }
> public void run(){
> try {
> ctx.getResponse().getOutputStream().write("aaa".getBytes());
> //wait for 5 seconds to simulate the business logic.
> Thread.sleep(5000);
> ctx.getResponse().getOutputStream().flush();
> ctx.complete();
> } catch (Exception e) {
> e.printStackTrace();
> }
> }
> }
> }
> {code}
--
This message was sent by Atlassian JIRA
(v6.3.11#6341)
9 years, 7 months