New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
WebClient.post() not sending complete Flux on Windows [SPR-15790] #20345
Comments
Rossen Stoyanchev commented I can't reproduce the behavior with neither Boot 2.0 M2 (Spring Framework 5.0 RC2) nor with the latest Boot 2.0 snapshots. I'm using the exact code above. Note that it does stream because you're writing a sequence of Strings which the CharSequenceEncoder is happy to stream as data chunks. However what you're sending is not valid JSON and should be a JSON array instead rather a concatenation of individual JSON objects. WebFlux does support "application/stream+json" which is exactly the same as what you're doing plus an extra new line between objects, and of course the format is actually valid for the content type. So I would recommend using that instead. |
Malte Finnern commented Hi, 257 --- 127.0.0.1:59271->127.0.0.1:8080 opened --
--- 127.0.0.1:8080->127.0.0.1:59271 opened --
------ 127.0.0.1:59271->127.0.0.1:8080 ------
POST /eventSink HTTP/1.1
user-agent: ReactorNetty/0.6.4.RELEASE
transfer-encoding: chunked
host: localhost:6080
accept: */*
Content-Type: application/stream+json
------ 127.0.0.1:59271->127.0.0.1:8080 ------
10
{"content":"1"}
10
{"content":"2"}
10
{"content":"3"}
10
{"content":"4"}
10
{"content":"5"}
10
------ 127.0.0.1:59271->127.0.0.1:8080 ------
{"content":"6"}
10
{"content":"7"}
10
{"content":"8"}
10
{"content":"9"}
11
{"content":"10"}
11
{"content":"11"}
11
{"content":"12"}
11
{"content":"13"}
11
{"content":"14"}
11
{"content":"15"}
11
{"content":"16"}
------ 127.0.0.1:59271->127.0.0.1:8080 ------
11
{"content":"17"}
11
{"content":"18"}
11
{"content":"19"}
11
{"content":"20"}
11
{"content":"21"}
11
{"content":"22"}
11
{"content":"23"}
11
{"content":"24"}
11
{"content":"25"}
11
{"content":"26"}
11
{"content":"27"}
11
{"content":"28"}
11
{"content":"29"}
11
{"content":"30"}
11
{"content":"31"}
11
{"content":"32"}
11
{"content":"33"}
11
{"content":"34"}
11
{"content":"35"}
11
{"content":"36"}
11
{"content":"37"}
11
{"content":"38"}
11
{"content":"39"}
11
{"content":"40"}
11
{"content":"41"}
11
{"content":"42"}
11
{"content":"43"}
11
{"content":"44"}
11
{"content":"45"}
11
{"content":"46"}
11
{"content":"47"}
11
{"content":"48"}
11
{"content":"49"}
11
{"content":"50"}
11
{"content":"51"}
11
{"content":"52"}
11
{"content":"53"}
11
{"content":"54"}
11
{"content":"55"}
11
{"content":"56"}
11
{"content":"57"}
11
{"content":"58"}
11
{"content":"59"}
11
{"content":"60"}
11
{"content":"61"}
11
{"content":"62"}
11
{"content":"63"}
11
{"content":"64"}
11
{"content":"65"}
11
{"content":"66"}
11
{"content":"67"}
11
{"content":"68"}
11
{"content":"69"}
11
{"content":"70"}
11
{"content":"71"}
11
{"content":"72"}
11
{"content":"73"}
11
{"content":"74"}
11
{"content":"75"}
11
{"content":"76"}
11
{"content":"77"}
11
{"content":"78"}
11
{"content":"79"}
11
{"content":"80"}
11
{"content":"81"}
11
{"content":"82"}
11
{"content":"83"}
11
{"content":"84"}
11
{"content":"85"}
11
------ 127.0.0.1:59271->127.0.0.1:8080 ------
{"content":"86"}
11
{"content":"87"}
11
{"content":"88"}
11
{"content":"89"}
11
{"content":"90"}
11
{"content":"91"}
------ 127.0.0.1:59271->127.0.0.1:8080 ------
11
{"content":"92"}
11
{"content":"93"}
11
{"content":"94"}
11
{"content":"95"}
11
{"content":"96"}
11
{"content":"97"}
11
{"content":"98"}
11
{"content":"99"}
12
{"content":"100"}
12
{"content":"101"}
12
------ 127.0.0.1:59271->127.0.0.1:8080 ------
{"content":"102"}
12
{"content":"103"}
12
{"content":"104"}
12
{"content":"105"}
12
{"content":"106"}
12
{"content":"107"}
12
{"content":"108"}
12
{"content":"109"}
12
{"content":"110"}
12
{"content":"111"}
12
{"content":"112"}
------ 127.0.0.1:59271->127.0.0.1:8080 ------
12
{"content":"113"}
12
{"content":"114"}
12
{"content":"115"}
12
{"content":"116"}
12
{"content":"117"}
12
{"content":"118"}
12
{"content":"119"}
12
{"content":"120"}
12
{"content":"121"}
12
{"content":"122"}
12
{"content":"123"}
------ 127.0.0.1:59271->127.0.0.1:8080 ------
12
{"content":"124"}
12
{"content":"125"}
12
{"content":"126"}
12
{"content":"127"}
12
{"content":"128"}
------ 127.0.0.1:59271->127.0.0.1:8080 ------
12
{"content":"129"}
12
{"content":"130"}
12
{"content":"131"}
12
{"content":"132"}
12
{"content":"133"}
12
------ 127.0.0.1:59271->127.0.0.1:8080 ------
{"content":"134"}
12
{"content":"135"}
12
{"content":"136"}
12
{"content":"137"}
12
{"content":"138"}
12
{"content":"139"}
------ 127.0.0.1:59271->127.0.0.1:8080 ------
12
{"content":"140"}
12
{"content":"141"}
12
{"content":"142"}
12
{"content":"143"}
12
{"content":"144"}
------ 127.0.0.1:59271->127.0.0.1:8080 ------
12
{"content":"145"}
12
{"content":"146"}
12
{"content":"147"}
12
{"content":"148"}
12
{"content":"149"}
12
{"content":"150"}
12
{"content":"151"}
12
{"content":"152"}
12
{"content":"153"}
12
{"content":"154"}
12
{"content":"155"}
------ 127.0.0.1:59271->127.0.0.1:8080 ------
12
{"content":"156"}
12
{"content":"157"}
12
{"content":"158"}
12
{"content":"159"}
12
{"content":"160"}
------ 127.0.0.1:59271->127.0.0.1:8080 ------
12
{"content":"161"}
12
{"content":"162"}
12
{"content":"163"}
12
{"content":"164"}
12
{"content":"165"}
12
------ 127.0.0.1:59271->127.0.0.1:8080 ------
{"content":"166"}
12
{"content":"167"}
12
{"content":"168"}
12
{"content":"169"}
12
{"content":"170"}
12
{"content":"171"}
------ 127.0.0.1:59271->127.0.0.1:8080 ------
12
{"content":"172"}
12
{"content":"173"}
12
{"content":"174"}
12
{"content":"175"}
12
{"content":"176"}
------ 127.0.0.1:59271->127.0.0.1:8080 ------
12
{"content":"177"}
12
{"content":"178"}
12
{"content":"179"}
12
{"content":"180"}
12
{"content":"181"}
12
{"content":"182"}
12
{"content":"183"}
12
{"content":"184"}
12
{"content":"185"}
12
{"content":"186"}
12
{"content":"187"}
12
{"content":"188"}
12
{"content":"189"}
12
{"content":"190"}
12
{"content":"191"}
12
{"content":"192"}
12
{"content":"193"}
12
{"content":"194"}
12
{"content":"195"}
12
{"content":"196"}
12
{"content":"197"}
12
{"content":"198"}
12
{"content":"199"}
12
{"content":"200"}
12
{"content":"201"}
12
{"content":"202"}
12
{"content":"203"}
12
{"content":"204"}
12
{"content":"205"}
12
{"content":"206"}
12
{"content":"207"}
12
{"content":"208"}
------ 127.0.0.1:59271->127.0.0.1:8080 ------
12
{"content":"209"}
12
{"content":"210"}
12
{"content":"211"}
12
{"content":"212"}
12
{"content":"213"}
12
{"content":"214"}
12
{"content":"215"}
12
{"content":"216"}
12
{"content":"217"}
12
{"content":"218"}
12
{"content":"219"}
12
{"content":"220"}
12
{"content":"221"}
12
{"content":"222"}
12
{"content":"223"}
12
{"content":"224"}
12
{"content":"225"}
12
{"content":"226"}
12
{"content":"227"}
12
{"content":"228"}
12
{"content":"229"}
12
{"content":"230"}
12
{"content":"231"}
12
{"content":"232"}
12
{"content":"233"}
12
{"content":"234"}
12
{"content":"235"}
------ 127.0.0.1:59271->127.0.0.1:8080 ------
12
{"content":"236"}
12
{"content":"237"}
12
{"content":"238"}
12
{"content":"239"}
12
{"content":"240"}
12
{"content":"241"}
12
{"content":"242"}
12
{"content":"243"}
12
{"content":"244"}
12
{"content":"245"}
12
{"content":"246"}
12
{"content":"247"}
12
{"content":"248"}
12
{"content":"249"}
12
{"content":"250"}
12
{"content":"251"}
12
{"content":"252"}
12
{"content":"253"}
12
{"content":"254"}
12
{"content":"255"}
12
{"content":"256"}
256 --- 127.0.0.1:59429->127.0.0.1:8080 opened --
--- 127.0.0.1:8080->127.0.0.1:59429 opened --
------ 127.0.0.1:59429->127.0.0.1:8080 ------
POST /eventSink HTTP/1.1
user-agent: ReactorNetty/0.6.4.RELEASE
transfer-encoding: chunked
host: localhost:6080
accept: */*
Content-Type: application/stream+json
------ 127.0.0.1:59429->127.0.0.1:8080 ------
10
{"content":"1"}
10
{"content":"2"}
10
{"content":"3"}
10
{"content":"4"}
10
{"content":"5"}
10
------ 127.0.0.1:59429->127.0.0.1:8080 ------
{"content":"6"}
10
{"content":"7"}
10
{"content":"8"}
10
{"content":"9"}
11
{"content":"10"}
11
{"content":"11"}
11
{"content":"12"}
11
{"content":"13"}
11
{"content":"14"}
11
{"content":"15"}
11
{"content":"16"}
11
{"content":"17"}
11
{"content":"18"}
11
{"content":"19"}
11
{"content":"20"}
11
{"content":"21"}
11
{"content":"22"}
11
{"content":"23"}
11
{"content":"24"}
11
{"content":"25"}
11
{"content":"26"}
11
{"content":"27"}
------ 127.0.0.1:59429->127.0.0.1:8080 ------
11
{"content":"28"}
11
{"content":"29"}
11
{"content":"30"}
11
{"content":"31"}
11
{"content":"32"}
11
{"content":"33"}
11
{"content":"34"}
11
{"content":"35"}
11
{"content":"36"}
11
{"content":"37"}
11
{"content":"38"}
11
{"content":"39"}
11
{"content":"40"}
11
{"content":"41"}
11
{"content":"42"}
11
{"content":"43"}
11
{"content":"44"}
11
{"content":"45"}
11
{"content":"46"}
11
{"content":"47"}
11
{"content":"48"}
11
{"content":"49"}
11
{"content":"50"}
11
{"content":"51"}
11
{"content":"52"}
11
{"content":"53"}
11
{"content":"54"}
11
{"content":"55"}
11
{"content":"56"}
11
{"content":"57"}
11
{"content":"58"}
11
{"content":"59"}
11
{"content":"60"}
11
{"content":"61"}
11
{"content":"62"}
11
{"content":"63"}
11
{"content":"64"}
11
{"content":"65"}
11
{"content":"66"}
11
{"content":"67"}
11
{"content":"68"}
11
{"content":"69"}
11
{"content":"70"}
11
{"content":"71"}
11
{"content":"72"}
11
{"content":"73"}
11
{"content":"74"}
11
{"content":"75"}
11
{"content":"76"}
11
{"content":"77"}
11
{"content":"78"}
11
{"content":"79"}
11
{"content":"80"}
11
{"content":"81"}
11
{"content":"82"}
11
{"content":"83"}
11
{"content":"84"}
11
{"content":"85"}
11
{"content":"86"}
11
{"content":"87"}
11
{"content":"88"}
11
{"content":"89"}
11
{"content":"90"}
11
{"content":"91"}
11
{"content":"92"}
11
{"content":"93"}
11
{"content":"94"}
11
{"content":"95"}
11
{"content":"96"}
11
{"content":"97"}
11
{"content":"98"}
11
{"content":"99"}
12
{"content":"100"}
12
{"content":"101"}
12
{"content":"102"}
12
{"content":"103"}
12
{"content":"104"}
12
{"content":"105"}
12
{"content":"106"}
12
{"content":"107"}
12
{"content":"108"}
12
{"content":"109"}
12
{"content":"110"}
12
{"content":"111"}
12
{"content":"112"}
12
{"content":"113"}
12
{"content":"114"}
12
{"content":"115"}
12
{"content":"116"}
12
{"content":"117"}
12
{"content":"118"}
12
{"content":"119"}
12
{"content":"120"}
12
{"content":"121"}
12
{"content":"122"}
12
{"content":"123"}
12
{"content":"124"}
12
{"content":"125"}
12
{"content":"126"}
12
{"content":"127"}
12
{"content":"128"}
12
{"content":"129"}
12
{"content":"130"}
12
{"content":"131"}
12
{"content":"132"}
12
{"content":"133"}
12
{"content":"134"}
12
{"content":"135"}
12
{"content":"136"}
12
{"content":"137"}
12
{"content":"138"}
12
{"content":"139"}
12
{"content":"140"}
12
{"content":"141"}
12
{"content":"142"}
12
{"content":"143"}
12
{"content":"144"}
12
{"content":"145"}
12
{"content":"146"}
12
{"content":"147"}
12
{"content":"148"}
12
{"content":"149"}
12
{"content":"150"}
12
{"content":"151"}
12
{"content":"152"}
12
{"content":"153"}
12
{"content":"154"}
12
{"content":"155"}
------ 127.0.0.1:59429->127.0.0.1:8080 ------
12
{"content":"156"}
12
{"content":"157"}
12
{"content":"158"}
12
{"content":"159"}
12
{"content":"160"}
12
{"content":"161"}
12
{"content":"162"}
12
{"content":"163"}
12
{"content":"164"}
12
{"content":"165"}
12
{"content":"166"}
12
{"content":"167"}
12
{"content":"168"}
12
{"content":"169"}
12
{"content":"170"}
12
{"content":"171"}
------ 127.0.0.1:59429->127.0.0.1:8080 ------
12
{"content":"172"}
12
{"content":"173"}
12
{"content":"174"}
12
{"content":"175"}
12
{"content":"176"}
------ 127.0.0.1:59429->127.0.0.1:8080 ------
12
{"content":"177"}
12
{"content":"178"}
12
{"content":"179"}
12
{"content":"180"}
12
{"content":"181"}
12
{"content":"182"}
12
{"content":"183"}
12
{"content":"184"}
12
{"content":"185"}
12
{"content":"186"}
12
{"content":"187"}
12
{"content":"188"}
12
{"content":"189"}
12
{"content":"190"}
12
{"content":"191"}
12
{"content":"192"}
12
{"content":"193"}
12
{"content":"194"}
12
{"content":"195"}
12
{"content":"196"}
12
{"content":"197"}
12
------ 127.0.0.1:59429->127.0.0.1:8080 ------
{"content":"198"}
12
{"content":"199"}
12
{"content":"200"}
12
{"content":"201"}
12
{"content":"202"}
12
{"content":"203"}
12
{"content":"204"}
12
{"content":"205"}
12
{"content":"206"}
12
{"content":"207"}
12
{"content":"208"}
12
{"content":"209"}
12
{"content":"210"}
12
{"content":"211"}
12
{"content":"212"}
12
{"content":"213"}
12
{"content":"214"}
12
{"content":"215"}
12
{"content":"216"}
12
{"content":"217"}
12
{"content":"218"}
12
{"content":"219"}
------ 127.0.0.1:59429->127.0.0.1:8080 ------
12
{"content":"220"}
12
{"content":"221"}
12
{"content":"222"}
12
{"content":"223"}
12
{"content":"224"}
12
{"content":"225"}
12
{"content":"226"}
12
{"content":"227"}
12
{"content":"228"}
12
{"content":"229"}
12
{"content":"230"}
12
{"content":"231"}
12
{"content":"232"}
12
{"content":"233"}
12
{"content":"234"}
12
{"content":"235"}
------ 127.0.0.1:59429->127.0.0.1:8080 ------
12
{"content":"236"}
12
{"content":"237"}
12
{"content":"238"}
12
{"content":"239"}
12
{"content":"240"}
------ 127.0.0.1:59429->127.0.0.1:8080 ------
12
{"content":"241"}
12
{"content":"242"}
12
{"content":"243"}
12
{"content":"244"}
12
{"content":"245"}
12
{"content":"246"}
12
{"content":"247"}
12
{"content":"248"}
12
{"content":"249"}
12
{"content":"250"}
12
{"content":"251"}
------ 127.0.0.1:59429->127.0.0.1:8080 ------
12
{"content":"252"}
12
{"content":"253"}
12
{"content":"254"}
12
{"content":"255"}
12
{"content":"256"}
------ 127.0.0.1:59429->127.0.0.1:8080 ------
0
------ 127.0.0.1:8080->127.0.0.1:59429 ------
HTTP/1.1 200 OK
content-length: 0
--- 127.0.0.1:59429->127.0.0.1:8080 closed --
--- 127.0.0.1:8080->127.0.0.1:59429 closed -- |
Rossen Stoyanchev commented Hm, unless it's something in the network layer with Windows? I don't have Windows though! For a start I created a repro project based on your description. Could you confirm that you can see the failure with that source code just to rule out any source code differences? |
Juergen Hoeller commented I ran the repro project on Windows 10 and it passed with a 200 response, so it doesn't look like something specific to Windows... |
Malte Finnern commented Hey, public static void main(String[] args) {
int toBeSent = 257;
Flux<String> flux = Flux.range(1, toBeSent).map(count -> "{\"content\":" + "\"" + count + "\"}\n")
.doOnNext(System.out::println);
WebClient client = WebClient.create();
ClientResponse result = client.post().uri(URI.create("http://localhost:8080/eventSink"))
.contentType(MediaType.APPLICATION_STREAM_JSON).body(flux, String.class).exchange().block();
System.err.println(result.statusCode());
} I also monitored your version with the sniffer(see below) and I get a different result. --- 127.0.0.1:8080->127.0.0.1:59255 opened --
--- 127.0.0.1:59255->127.0.0.1:8080 opened --
------ 127.0.0.1:59255->127.0.0.1:8080 ------
POST /eventSink HTTP/1.1
user-agent: ReactorNetty/0.6.4.RELEASE
transfer-encoding: chunked
host: localhost:6080
accept: */*
Content-Type: application/stream+json
------ 127.0.0.1:59255->127.0.0.1:8080 ------
10
{"content":"1"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
10
{"content":"2"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
10
{"content":"3"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
10
{"content":"4"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
10
{"content":"5"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
10
{"content":"6"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
10
{"content":"7"}
10
{"content":"8"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
10
{"content":"9"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
11
{"content":"10"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
11
{"content":"11"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
11
{"content":"12"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
11
{"content":"13"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
11
{"content":"14"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
11
{"content":"15"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
11
{"content":"16"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
11
{"content":"17"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
11
{"content":"18"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
11
{"content":"19"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
11
{"content":"20"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
11
{"content":"21"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
11
{"content":"22"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
11
{"content":"23"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
11
{"content":"24"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
11
{"content":"25"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
11
{"content":"26"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
11
{"content":"27"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
11
{"content":"28"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
11
{"content":"29"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
11
{"content":"30"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
11
{"content":"31"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
11
{"content":"32"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
11
{"content":"33"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
11
{"content":"34"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
11
{"content":"35"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
11
{"content":"36"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
11
{"content":"37"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
11
{"content":"38"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
11
{"content":"39"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
11
{"content":"40"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
11
{"content":"41"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
11
{"content":"42"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
11
{"content":"43"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
11
{"content":"44"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
11
{"content":"45"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
11
{"content":"46"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
11
{"content":"47"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
11
{"content":"48"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
11
{"content":"49"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
11
{"content":"50"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
11
{"content":"51"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
11
{"content":"52"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
11
{"content":"53"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
11
{"content":"54"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
11
{"content":"55"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
11
{"content":"56"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
11
{"content":"57"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
11
{"content":"58"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
11
{"content":"59"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
11
{"content":"60"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
11
{"content":"61"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
11
{"content":"62"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
11
{"content":"63"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
11
{"content":"64"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
11
{"content":"65"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
11
{"content":"66"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
11
{"content":"67"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
11
{"content":"68"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
11
{"content":"69"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
11
{"content":"70"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
11
{"content":"71"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
11
{"content":"72"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
11
{"content":"73"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
11
{"content":"74"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
11
{"content":"75"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
11
{"content":"76"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
11
{"content":"77"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
11
{"content":"78"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
11
{"content":"79"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
11
{"content":"80"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
11
{"content":"81"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
11
{"content":"82"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
11
{"content":"83"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
11
{"content":"84"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
11
{"content":"85"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
11
{"content":"86"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
11
{"content":"87"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
11
{"content":"88"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
11
{"content":"89"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
11
{"content":"90"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
11
{"content":"91"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
11
{"content":"92"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
11
{"content":"93"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
11
{"content":"94"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
11
{"content":"95"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
11
{"content":"96"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
11
{"content":"97"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
11
{"content":"98"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
11
{"content":"99"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
12
{"content":"100"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
12
{"content":"101"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
12
{"content":"102"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
12
{"content":"103"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
12
{"content":"104"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
12
{"content":"105"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
12
{"content":"106"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
12
{"content":"107"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
12
{"content":"108"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
12
{"content":"109"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
12
{"content":"110"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
12
{"content":"111"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
12
{"content":"112"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
12
{"content":"113"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
12
{"content":"114"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
12
{"content":"115"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
12
{"content":"116"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
12
{"content":"117"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
12
{"content":"118"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
12
{"content":"119"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
12
{"content":"120"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
12
{"content":"121"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
12
{"content":"122"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
12
{"content":"123"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
12
{"content":"124"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
12
{"content":"125"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
12
{"content":"126"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
12
{"content":"127"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
12
{"content":"128"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
12
{"content":"129"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
12
{"content":"130"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
12
{"content":"131"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
12
{"content":"132"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
12
{"content":"133"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
12
{"content":"134"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
12
{"content":"135"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
12
{"content":"136"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
12
{"content":"137"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
12
{"content":"138"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
12
{"content":"139"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
12
{"content":"140"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
12
{"content":"141"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
12
{"content":"142"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
12
{"content":"143"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
12
{"content":"144"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
12
{"content":"145"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
12
{"content":"146"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
12
{"content":"147"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
12
{"content":"148"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
12
{"content":"149"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
12
{"content":"150"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
12
{"content":"151"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
12
{"content":"152"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
12
{"content":"153"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
12
{"content":"154"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
12
{"content":"155"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
12
{"content":"156"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
12
{"content":"157"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
12
{"content":"158"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
12
{"content":"159"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
12
{"content":"160"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
12
{"content":"161"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
12
{"content":"162"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
12
{"content":"163"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
12
{"content":"164"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
12
{"content":"165"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
12
{"content":"166"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
12
{"content":"167"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
12
{"content":"168"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
12
{"content":"169"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
12
{"content":"170"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
12
{"content":"171"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
12
{"content":"172"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
12
{"content":"173"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
12
{"content":"174"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
12
{"content":"175"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
12
{"content":"176"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
12
{"content":"177"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
12
{"content":"178"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
12
{"content":"179"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
12
{"content":"180"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
12
{"content":"181"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
12
{"content":"182"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
12
{"content":"183"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
12
{"content":"184"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
12
{"content":"185"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
12
{"content":"186"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
12
{"content":"187"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
12
{"content":"188"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
12
{"content":"189"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
12
{"content":"190"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
12
{"content":"191"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
12
{"content":"192"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
12
{"content":"193"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
12
{"content":"194"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
12
{"content":"195"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
12
{"content":"196"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
12
{"content":"197"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
12
{"content":"198"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
12
{"content":"199"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
12
{"content":"200"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
12
{"content":"201"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
12
{"content":"202"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
12
{"content":"203"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
12
{"content":"204"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
12
{"content":"205"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
12
{"content":"206"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
12
{"content":"207"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
12
{"content":"208"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
12
{"content":"209"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
12
{"content":"210"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
12
{"content":"211"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
12
{"content":"212"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
12
{"content":"213"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
12
{"content":"214"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
12
{"content":"215"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
12
{"content":"216"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
12
{"content":"217"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
12
{"content":"218"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
12
{"content":"219"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
12
{"content":"220"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
12
{"content":"221"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
12
{"content":"222"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
12
{"content":"223"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
12
{"content":"224"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
12
{"content":"225"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
12
{"content":"226"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
12
{"content":"227"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
12
{"content":"228"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
12
{"content":"229"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
12
{"content":"230"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
12
{"content":"231"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
12
{"content":"232"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
12
{"content":"233"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
12
{"content":"234"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
12
{"content":"235"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
12
{"content":"236"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
12
{"content":"237"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
12
{"content":"238"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
12
{"content":"239"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
12
{"content":"240"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
12
{"content":"241"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
12
{"content":"242"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
12
{"content":"243"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
12
{"content":"244"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
12
{"content":"245"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
12
{"content":"246"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
12
{"content":"247"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
12
{"content":"248"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
12
{"content":"249"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
12
{"content":"250"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
12
{"content":"251"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
12
{"content":"252"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
12
{"content":"253"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
12
{"content":"254"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
12
{"content":"255"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
12
{"content":"256"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
12
{"content":"257"}
------ 127.0.0.1:59255->127.0.0.1:8080 ------
0
------ 127.0.0.1:8080->127.0.0.1:59255 ------
HTTP/1.1 200 OK
content-length: 0
--- 127.0.0.1:59255->127.0.0.1:8080 closed --
--- 127.0.0.1:8080->127.0.0.1:59255 closed -- |
Rossen Stoyanchev commented Are you saying that it works for you on the latest Boot 2.0 snapshot? If not what is different about your version? I copied it. |
Malte Finnern commented No, I didn't have the snapshot repository in my envirionment, so I used the 2.0.0.M2. The difference is, that I create the JSON as a String (and via the Spring Json serializer). |
Rossen Stoyanchev commented So |
Rossen Stoyanchev commented I've updated the sample once more to send |
Malte Finnern commented I did some testing, here the Results: 2.0.0.M2: 2.0.0.BUILD-SNAPSHOT |
Rossen Stoyanchev commented Okay so it looks like: Flux<String> + application/stream+json by the way is really identical to "application/json" in terms of how it's rendered. |
Rossen Stoyanchev commented I'm scheduling for RC4 although the root cause and fix will come from Reactor Netty based on issue #134. |
Malte Finnern commented Thanks for the help! |
Rossen Stoyanchev commented Malte Finnern, since #134 is now resolved, could you give it a try? |
Rossen Stoyanchev commented I am resolving for now since it should be fixed and in any case the fix is in Reactor Netty but feel free to comment. |
Malte Finnern commented Hey, I tested the current repository version on Windows. I updated everything (reactor-netty-0.7.0M1 is now the dependency). I'm afraid that it still does not work on my side. Is there any check, that I have the correct .jars? Regards, |
Violeta Georgieva commented Hello, The fix for that issue will be in Reactor Netty 0.7.0.M2 which is about to be released. Thanks in advance, |
Malte Finnern commented Hi, it works with 0.7.0.BUILD-SNAPSHOT! Thanks for the fix, |
spring-projects-issues commentedJul 18, 2017
Malte Finnern opened SPR-15790 and commented
Hi,
I have a very strange issue regarding the WebClient. It seems like, that the last bit of my Flux is not sent to the server.
I a very simple spring boot application. (just spring-boot-starter-webflux, generated by the Initializr )
My Server Code:
A very simple Event Class:
And a very simple client:
When i send 256 Events, every Event reaches the server and I get a HTTP 200 response. When I send 257 Events, the WebClient never returns and the Server prints out all the Events til 256 (so one is missing).When I send 10000 events, 9984 Events reaching the server.
Either I'm using the API wrong or the last chunk of the Event Flux is not read correctly. Since 256 is the inital buffer for a lot of operators, it might be the later.
Thanks for the help,
Malte
Affects: 5.0 RC2
Referenced from: commits spring-attic/spring-framework-issues@5837376, spring-attic/spring-framework-issues@7a67823
The text was updated successfully, but these errors were encountered: