Skip to content
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

FAST HTTP YEAH #2355

Closed
wants to merge 4 commits into from
Closed

FAST HTTP YEAH #2355

wants to merge 4 commits into from

Conversation

indutny
Copy link
Member

@indutny indutny commented Aug 12, 2015

Depends on: #2351

I just want to kick off the discussion of where this path may lead us. With this change http Server will consume all data from the net.Socket, skipping its data events, and the server will parse this data directly without going to JS-land and without allocating Buffer instances.

From my local benchmarks (simple server, GET requests):

  • Performance is 20% better with empty body on GET requests
  • 10% better with 16kb body, still on GET requests

I'm yet to run our benchmarks on some server (or my laptop) to see what general effects this patch has on everything, but I think it should be mostly an improvement, not degradation.

The downside of this thing is absence of data events on the net.Socket. We will also need to handle the cases where the socket is not a net.Socket instance after all, which might appear in user-land modules.

Please leave your feedback here.

cc @bnoordhuis @trevnorris @nodejs/collaborators

@Fishrock123 Fishrock123 added the http Issues or PRs related to the http subsystem. label Aug 12, 2015
@rvagg
Copy link
Member

rvagg commented Aug 12, 2015

could we keep backward compat by checking for 'data' listeners and taking the original path if there's >0?

@mscdex
Copy link
Contributor

mscdex commented Aug 12, 2015

Yeah, this might break my httpolyglot module ;-)

@indutny
Copy link
Member Author

indutny commented Aug 12, 2015

@rvagg I think we can do it. Though, we will need to do it by replacing .on method (as we do in stream_readable).

In fact it does start emitting data events on CONNECT/UPGRADE requests, so there is already a way to do it.

@indutny
Copy link
Member Author

indutny commented Aug 12, 2015

@mscdex even more, it will break node-spdy as well :) Let's figure out how to do it with least possible consequences

@Fishrock123 Fishrock123 added the semver-major PRs that contain breaking changes and should be released in the next major version. label Aug 12, 2015
@Fishrock123
Copy link
Contributor

Tagging as major for now, remove if we can verify it isn't. :)

@brendanashworth brendanashworth added the c++ Issues and PRs that require attention from people who are familiar with C++. label Aug 12, 2015
@indutny
Copy link
Member Author

indutny commented Aug 12, 2015

Here is the results of benchmarks (number of runs=10):

http/chunked.js num=1 size=1 c=100: ./iojs-fast: 2340.6 ./iojs-slow: 2343.4 ................................. -0.12%
http/chunked.js num=1 size=64 c=100: ./iojs-fast: 2328.1 ./iojs-slow: 2319.9 ................................. 0.35%
http/chunked.js num=1 size=256 c=100: ./iojs-fast: 2334.5 ./iojs-slow: 2325.3 ................................ 0.39%
http/chunked.js num=4 size=1 c=100: ./iojs-fast: 2281.5 ./iojs-slow: 2208.4 .................................. 3.31%
http/chunked.js num=4 size=64 c=100: ./iojs-fast: 2260.4 ./iojs-slow: 2223.2 ................................. 1.67%
http/chunked.js num=4 size=256 c=100: ./iojs-fast: 2267.9 ./iojs-slow: 2215.3 ................................ 2.37%
http/chunked.js num=8 size=1 c=100: ./iojs-fast: 1974.7 ./iojs-slow: 1909.7 .................................. 3.41%
http/chunked.js num=8 size=64 c=100: ./iojs-fast: 1991.4 ./iojs-slow: 1910.9 ................................. 4.21%
http/chunked.js num=8 size=256 c=100: ./iojs-fast: 2007.7 ./iojs-slow: 1944.1 ................................ 3.27%
http/chunked.js num=16 size=1 c=100: ./iojs-fast: 1687.9 ./iojs-slow: 1701.6 ................................ -0.81%
http/chunked.js num=16 size=64 c=100: ./iojs-fast: 1674.1 ./iojs-slow: 1583.8 ................................ 5.70%
http/chunked.js num=16 size=256 c=100: ./iojs-fast: 1600.4 ./iojs-slow: 1622.9 .............................. -1.39%
http/client-request-body.js dur=5 type=asc bytes=32 method=write: ./iojs-fast: 49.6 ./iojs-slow: 49.727 ..... -0.26%
http/client-request-body.js dur=5 type=asc bytes=32 method=end: ./iojs-fast: 49.462 ./iojs-slow: 49.658 ..... -0.39%
http/client-request-body.js dur=5 type=asc bytes=256 method=write: ./iojs-fast: 49.328 ./iojs-slow: 49.726 .. -0.80%
http/client-request-body.js dur=5 type=asc bytes=256 method=end: ./iojs-fast: 49.728 ./iojs-slow: 49.596 ..... 0.27%
http/client-request-body.js dur=5 type=asc bytes=1024 method=write: ./iojs-fast: 49.661 ./iojs-slow: 49.658 .. 0.01%
http/client-request-body.js dur=5 type=asc bytes=1024 method=end: ./iojs-fast: 49.726 ./iojs-slow: 49.662 .... 0.13%
http/client-request-body.js dur=5 type=utf bytes=32 method=write: ./iojs-fast: 49.463 ./iojs-slow: 49.859 ... -0.79%
http/client-request-body.js dur=5 type=utf bytes=32 method=end: ./iojs-fast: 49.827 ./iojs-slow: 49.662 ...... 0.33%
http/client-request-body.js dur=5 type=utf bytes=256 method=write: ./iojs-fast: 49.861 ./iojs-slow: 49.86 .... 0.00%
http/client-request-body.js dur=5 type=utf bytes=256 method=end: ./iojs-fast: 49.793 ./iojs-slow: 49.729 ..... 0.13%
http/client-request-body.js dur=5 type=utf bytes=1024 method=write: ./iojs-fast: 49.729 ./iojs-slow: 49.859 . -0.26%
http/client-request-body.js dur=5 type=utf bytes=1024 method=end: ./iojs-fast: 49.726 ./iojs-slow: 49.792 ... -0.13%
http/client-request-body.js dur=5 type=buf bytes=32 method=write: ./iojs-fast: 49.658 ./iojs-slow: 49.73 .... -0.14%
http/client-request-body.js dur=5 type=buf bytes=32 method=end: ./iojs-fast: 49.664 ./iojs-slow: 49.729 ..... -0.13%
http/client-request-body.js dur=5 type=buf bytes=256 method=write: ./iojs-fast: 49.861 ./iojs-slow: 49.828 ... 0.07%
http/client-request-body.js dur=5 type=buf bytes=256 method=end: ./iojs-fast: 49.794 ./iojs-slow: 49.862 .... -0.14%
http/client-request-body.js dur=5 type=buf bytes=1024 method=write: ./iojs-fast: 49.527 ./iojs-slow: 49.657 . -0.26%
http/client-request-body.js dur=5 type=buf bytes=1024 method=end: ./iojs-fast: 49.658 ./iojs-slow: 49.464 .... 0.39%
http/cluster.js type=bytes length=4 c=50: ./iojs-fast: 19980 ./iojs-slow: 16151 ............................. 23.71%
http/cluster.js type=bytes length=4 c=500: ./iojs-fast: 17272 ./iojs-slow: 13413 ............................ 28.77%
http/cluster.js type=bytes length=1024 c=50: ./iojs-fast: 18127 ./iojs-slow: 14487 .......................... 25.12%
http/cluster.js type=bytes length=1024 c=500: ./iojs-fast: 15819 ./iojs-slow: 12521 ......................... 26.34%
http/cluster.js type=bytes length=102400 c=50: ./iojs-fast: 773.68 ./iojs-slow: 748.8 ........................ 3.32%
http/cluster.js type=bytes length=102400 c=500: ./iojs-fast: 749.03 ./iojs-slow: 746.32 ...................... 0.36%
http/cluster.js type=buffer length=4 c=50: ./iojs-fast: 17955 ./iojs-slow: 14326 ............................ 25.33%
http/cluster.js type=buffer length=4 c=500: ./iojs-fast: 15126 ./iojs-slow: 11552 ........................... 30.94%
http/cluster.js type=buffer length=1024 c=50: ./iojs-fast: 17356 ./iojs-slow: 14555 ......................... 19.24%
http/cluster.js type=buffer length=1024 c=500: ./iojs-fast: 15020 ./iojs-slow: 11715 ........................ 28.21%
http/cluster.js type=buffer length=102400 c=50: ./iojs-fast: 14093 ./iojs-slow: 11811 ....................... 19.32%
http/cluster.js type=buffer length=102400 c=500: ./iojs-fast: 12028 ./iojs-slow: 9617.2 ..................... 25.06%
http/end-vs-write-end.js type=asc kb=64 c=100 method=write: ./iojs-fast: 3964.1 ./iojs-slow: 3650.9 .......... 8.58%                                                                               [55/1830]
http/end-vs-write-end.js type=asc kb=64 c=100 method=end: ./iojs-fast: 4292 ./iojs-slow: 3827.7 ............. 12.13%
http/end-vs-write-end.js type=asc kb=128 c=100 method=write: ./iojs-fast: 2520.6 ./iojs-slow: 2492.6 ......... 1.12%
http/end-vs-write-end.js type=asc kb=128 c=100 method=end: ./iojs-fast: 2596.5 ./iojs-slow: 2946.7 ......... -11.88%
http/end-vs-write-end.js type=asc kb=256 c=100 method=write: ./iojs-fast: 1431.3 ./iojs-slow: 1687.3 ....... -15.17%
http/end-vs-write-end.js type=asc kb=256 c=100 method=end: ./iojs-fast: 1488.4 ./iojs-slow: 1769.5 ......... -15.89%
http/end-vs-write-end.js type=asc kb=1024 c=100 method=write: ./iojs-fast: 322.29 ./iojs-slow: 323.3 ........ -0.31%
http/end-vs-write-end.js type=asc kb=1024 c=100 method=end: ./iojs-fast: 339.86 ./iojs-slow: 334.82 .......... 1.51%
http/end-vs-write-end.js type=utf kb=64 c=100 method=write: ./iojs-fast: 3414.6 ./iojs-slow: 3489.9 ......... -2.16%
http/end-vs-write-end.js type=utf kb=64 c=100 method=end: ./iojs-fast: 3964.4 ./iojs-slow: 3772.2 ............ 5.09%
http/end-vs-write-end.js type=utf kb=128 c=100 method=write: ./iojs-fast: 2185.3 ./iojs-slow: 2250 .......... -2.87%
http/end-vs-write-end.js type=utf kb=128 c=100 method=end: ./iojs-fast: 2269.1 ./iojs-slow: 2509.7 .......... -9.59%
http/end-vs-write-end.js type=utf kb=256 c=100 method=write: ./iojs-fast: 1269.7 ./iojs-slow: 1372.1 ........ -7.46%
http/end-vs-write-end.js type=utf kb=256 c=100 method=end: ./iojs-fast: 1279.4 ./iojs-slow: 1373 ............ -6.82%
http/end-vs-write-end.js type=utf kb=1024 c=100 method=write: ./iojs-fast: 378.16 ./iojs-slow: 375.77 ........ 0.63%
http/end-vs-write-end.js type=utf kb=1024 c=100 method=end: ./iojs-fast: 383.06 ./iojs-slow: 384.13 ......... -0.28%
http/end-vs-write-end.js type=buf kb=64 c=100 method=write: ./iojs-fast: 8312.8 ./iojs-slow: 5721.8 ......... 45.28%
http/end-vs-write-end.js type=buf kb=64 c=100 method=end: ./iojs-fast: 7207.5 ./iojs-slow: 6295.9 ........... 14.48%
http/end-vs-write-end.js type=buf kb=128 c=100 method=write: ./iojs-fast: 7752.2 ./iojs-slow: 5604.6 ........ 38.32%
http/end-vs-write-end.js type=buf kb=128 c=100 method=end: ./iojs-fast: 6739.5 ./iojs-slow: 5377.6 .......... 25.33%
http/end-vs-write-end.js type=buf kb=256 c=100 method=write: ./iojs-fast: 6194.1 ./iojs-slow: 4569.8 ........ 35.54%
http/end-vs-write-end.js type=buf kb=256 c=100 method=end: ./iojs-fast: 5823.7 ./iojs-slow: 4486.2 .......... 29.81%
http/end-vs-write-end.js type=buf kb=1024 c=100 method=write: ./iojs-fast: 2808.7 ./iojs-slow: 2313.1 ....... 21.42%
http/end-vs-write-end.js type=buf kb=1024 c=100 method=end: ./iojs-fast: 2724.8 ./iojs-slow: 2356.3 ......... 15.64%
http/_chunky_http_client.js len=1 num=5 type=send: ./iojs-fast: 100.69 ./iojs-slow: 82.893 .................. 21.47%                                                                               [31/1830]
http/_chunky_http_client.js len=1 num=50 type=send: ./iojs-fast: 217.4 ./iojs-slow: 168.98 .................. 28.65%
http/_chunky_http_client.js len=1 num=500 type=send: ./iojs-fast: 192.44 ./iojs-slow: 165.75 ................ 16.10%
http/_chunky_http_client.js len=1 num=2000 type=send: ./iojs-fast: 200.76 ./iojs-slow: 212.35 ............... -5.46%
http/_chunky_http_client.js len=4 num=5 type=send: ./iojs-fast: 120.52 ./iojs-slow: 141.02 ................. -14.53%
http/_chunky_http_client.js len=4 num=50 type=send: ./iojs-fast: 214.4 ./iojs-slow: 203.76 ................... 5.22%
http/_chunky_http_client.js len=4 num=500 type=send: ./iojs-fast: 182.54 ./iojs-slow: 198.43 ................ -8.01%
http/_chunky_http_client.js len=4 num=2000 type=send: ./iojs-fast: 220.42 ./iojs-slow: 210.88 ................ 4.53%
http/_chunky_http_client.js len=8 num=5 type=send: ./iojs-fast: 170.57 ./iojs-slow: 147.93 .................. 15.31%
http/_chunky_http_client.js len=8 num=50 type=send: ./iojs-fast: 150.58 ./iojs-slow: 190.8 ................. -21.08%
http/_chunky_http_client.js len=8 num=500 type=send: ./iojs-fast: 214.96 ./iojs-slow: 187.92 ................ 14.39%
http/_chunky_http_client.js len=8 num=2000 type=send: ./iojs-fast: 200.26 ./iojs-slow: 215.32 ............... -6.99%
http/_chunky_http_client.js len=16 num=5 type=send: ./iojs-fast: 69.386 ./iojs-slow: 136.17 ................ -49.05%
http/_chunky_http_client.js len=16 num=50 type=send: ./iojs-fast: 176.96 ./iojs-slow: 172.64 ................. 2.50%
http/_chunky_http_client.js len=16 num=500 type=send: ./iojs-fast: 195.12 ./iojs-slow: 197.17 ............... -1.04%
http/_chunky_http_client.js len=16 num=2000 type=send: ./iojs-fast: 208.39 ./iojs-slow: 217.45 .............. -4.17%
http/_chunky_http_client.js len=32 num=5 type=send: ./iojs-fast: 71.084 ./iojs-slow: 128.12 ................ -44.52%
http/_chunky_http_client.js len=32 num=50 type=send: ./iojs-fast: 183.15 ./iojs-slow: 196.61 ................ -6.85%
http/_chunky_http_client.js len=32 num=500 type=send: ./iojs-fast: 221.72 ./iojs-slow: 184.39 ............... 20.24%
http/_chunky_http_client.js len=32 num=2000 type=send: ./iojs-fast: 216.17 ./iojs-slow: 212.86 ............... 1.56%
http/_chunky_http_client.js len=64 num=5 type=send: ./iojs-fast: 103.49 ./iojs-slow: 145.06 ................ -28.66%
http/_chunky_http_client.js len=64 num=50 type=send: ./iojs-fast: 187.48 ./iojs-slow: 191.91 ................ -2.31%
http/_chunky_http_client.js len=64 num=500 type=send: ./iojs-fast: 193.35 ./iojs-slow: 189.57 ................ 1.99%
http/_chunky_http_client.js len=64 num=2000 type=send: ./iojs-fast: 226.89 ./iojs-slow: 219.64 ............... 3.30%
http/_chunky_http_client.js len=128 num=5 type=send: ./iojs-fast: 116.06 ./iojs-slow: 81.224 ................ 42.89%
http/_chunky_http_client.js len=128 num=50 type=send: ./iojs-fast: 184.96 ./iojs-slow: 182.2 ................. 1.51%
http/_chunky_http_client.js len=128 num=500 type=send: ./iojs-fast: 209.51 ./iojs-slow: 169.71 .............. 23.45%
http/_chunky_http_client.js len=128 num=2000 type=send: ./iojs-fast: 211.47 ./iojs-slow: 198.91 .............. 6.31%
http/simple.js type=bytes length=4 chunks=0 c=50: ./iojs-fast: 9121.6 ./iojs-slow: 7325.7 ................... 24.52%
http/simple.js type=bytes length=4 chunks=0 c=500: ./iojs-fast: 7649.4 ./iojs-slow: 5792.3 .................. 32.06%
http/simple.js type=bytes length=4 chunks=1 c=50: ./iojs-fast: 7821.8 ./iojs-slow: 6632.9 ................... 17.93%
http/simple.js type=bytes length=4 chunks=1 c=500: ./iojs-fast: 6255.4 ./iojs-slow: 4852.4 .................. 28.91%
http/simple.js type=bytes length=4 chunks=4 c=50: ./iojs-fast: 1183.7 ./iojs-slow: 1174.5 .................... 0.78%
http/simple.js type=bytes length=4 chunks=4 c=500: ./iojs-fast: 3440.2 ./iojs-slow: 3007 .................... 14.40%
http/simple.js type=bytes length=1024 chunks=0 c=50: ./iojs-fast: 9007.3 ./iojs-slow: 6639 .................. 35.67%
http/simple.js type=bytes length=1024 chunks=0 c=500: ./iojs-fast: 7420 ./iojs-slow: 5316.9 ................. 39.55%
http/simple.js type=bytes length=1024 chunks=1 c=50: ./iojs-fast: 6242.3 ./iojs-slow: 5145.6 ................ 21.31%
http/simple.js type=bytes length=1024 chunks=1 c=500: ./iojs-fast: 5253.7 ./iojs-slow: 4239.9 ............... 23.91%
http/simple.js type=bytes length=1024 chunks=4 c=50: ./iojs-fast: 1184.9 ./iojs-slow: 1180.3 ................. 0.39%
http/simple.js type=bytes length=1024 chunks=4 c=500: ./iojs-fast: 3297.2 ./iojs-slow: 2946.7 ............... 11.89%
http/simple.js type=bytes length=102400 chunks=0 c=50: ./iojs-fast: 353.57 ./iojs-slow: 341.99 ............... 3.39%
http/simple.js type=bytes length=102400 chunks=0 c=500: ./iojs-fast: 345.99 ./iojs-slow: 357.8 .............. -3.30%
http/simple.js type=bytes length=102400 chunks=1 c=50: ./iojs-fast: 213.58 ./iojs-slow: 220.89 .............. -3.31%
http/simple.js type=bytes length=102400 chunks=1 c=500: ./iojs-fast: 210.5 ./iojs-slow: 202.74 ............... 3.83%
http/simple.js type=bytes length=102400 chunks=4 c=50: ./iojs-fast: 1822.3 ./iojs-slow: 1905.4 .............. -4.36%
http/simple.js type=bytes length=102400 chunks=4 c=500: ./iojs-fast: 1453.9 ./iojs-slow: 1398.8 .............. 3.94%
http/simple.js type=buffer length=4 chunks=0 c=50: ./iojs-fast: 7938.8 ./iojs-slow: 6580.2 .................. 20.65%
http/simple.js type=buffer length=4 chunks=0 c=500: ./iojs-fast: 6340.4 ./iojs-slow: 4896.2 ................. 29.50%
http/simple.js type=buffer length=4 chunks=1 c=50: ./iojs-fast: 9191 ./iojs-slow: 6395.2 .................... 43.72%
http/simple.js type=buffer length=4 chunks=1 c=500: ./iojs-fast: 6619.1 ./iojs-slow: 4786.1 ................. 38.30%
http/simple.js type=buffer length=4 chunks=4 c=50: ./iojs-fast: 7625.9 ./iojs-slow: 5608.2 .................. 35.98%
http/simple.js type=buffer length=4 chunks=4 c=500: ./iojs-fast: 5673.7 ./iojs-slow: 4429.8 ................. 28.08%
http/simple.js type=buffer length=1024 chunks=0 c=50: ./iojs-fast: 7963.3 ./iojs-slow: 6624.7 ............... 20.21%
http/simple.js type=buffer length=1024 chunks=0 c=500: ./iojs-fast: 6495 ./iojs-slow: 4813.1 ................ 34.95%
http/simple.js type=buffer length=1024 chunks=1 c=50: ./iojs-fast: 9168.4 ./iojs-slow: 6203.9 ............... 47.78%
http/simple.js type=buffer length=1024 chunks=1 c=500: ./iojs-fast: 6589.2 ./iojs-slow: 4581.4 .............. 43.82%
http/simple.js type=buffer length=1024 chunks=4 c=50: ./iojs-fast: 7693.2 ./iojs-slow: 5528.4 ............... 39.16%
http/simple.js type=buffer length=1024 chunks=4 c=500: ./iojs-fast: 5723.2 ./iojs-slow: 4250.9 .............. 34.63%
http/simple.js type=buffer length=102400 chunks=0 c=50: ./iojs-fast: 6654.9 ./iojs-slow: 5581 ............... 19.24%
http/simple.js type=buffer length=102400 chunks=0 c=500: ./iojs-fast: 5582 ./iojs-slow: 4276.8 .............. 30.52%
http/simple.js type=buffer length=102400 chunks=1 c=50: ./iojs-fast: 7114.3 ./iojs-slow: 5343 ............... 33.15%
http/simple.js type=buffer length=102400 chunks=1 c=500: ./iojs-fast: 5523.9 ./iojs-slow: 4044.4 ............ 36.58%
http/simple.js type=buffer length=102400 chunks=4 c=50: ./iojs-fast: 6020.4 ./iojs-slow: 4879.3 ............. 23.39%
http/simple.js type=buffer length=102400 chunks=4 c=500: ./iojs-fast: 4702.8 ./iojs-slow: 3847.7 ............ 22.22%

@indutny
Copy link
Member Author

indutny commented Aug 12, 2015

Looks pretty mixed to me. @trevnorris may I ask you to help me nail down the bottleneck of -40% benchmarks? I'm quite sure that it might be related to the lazy-allocation of buffer, but still not exactly sure why it takes so much time.

@indutny
Copy link
Member Author

indutny commented Aug 12, 2015

Nah, I think the was some problem with benchmarks. Didn't see this -40% oddballs locally, I assume it should be visible even on my machine. I can only blame DigitalOcean for this.

@indutny indutny force-pushed the feature/http-stream branch 2 times, most recently from 0931623 to f2efe5c Compare August 12, 2015 21:38
@indutny
Copy link
Member Author

indutny commented Aug 12, 2015

I think this PR is finished at the moment, PTAL

@indutny
Copy link
Member Author

indutny commented Aug 13, 2015

ping @trevnorris @bnoordhuis @nodejs/crypto @nodejs/collaborators

@jasnell
Copy link
Member

jasnell commented Aug 13, 2015

skipping the data events makes me a bit nervous as we do not have a reliable way of knowing all the parts of the ecosystem this could impact but in general this SGTM and I don't see anything in the commits that raise any red flags. We should make sure to extensively sniff test this tho.

private:
static void Consume(const FunctionCallbackInfo<Value>& args) {
Parser* parser = Unwrap<Parser>(args.Holder());
Local<External> stream_obj = args[0].As<External>();
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Checking if the object is external from JS isn't possible. I'd feel more comfortable with a CHECK(args[0]->IsExternal()); just above.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@indutny Did anything need to happen here? Just asking to be sure nothing was overlooked.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Argh, I did it below... and forgot this place. Looks like it will happen sometime later.

@trevnorris
Copy link
Contributor

Don't see anything else. If CI is happy then LGTM.

(as you noted, the logic here is crazy to follow. sorry for all the unnecessary questions)

@indutny
Copy link
Member Author

indutny commented Aug 25, 2015

@indutny
Copy link
Member Author

indutny commented Aug 25, 2015

Looks like CI is not exactly happy with this yet.

Failing tests:

  • parallel/test-http-buffer-sanity
  • parallel/test-http-pipeline-flood

Other failures does not seem to be related.

Consume StreamBase instance and operate on incoming data directly
without allocating Buffer instances. Improves performance.

PR-URL: nodejs#2355
Reviewed-By: Trevor Norris <[email protected]>
@indutny
Copy link
Member Author

indutny commented Aug 26, 2015

Fixed.

@indutny
Copy link
Member Author

indutny commented Aug 26, 2015

@indutny
Copy link
Member Author

indutny commented Aug 26, 2015

Is pipeline-flood generally considered to be flaky? I was running it in the loop for 30 minutes and it never hanged.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
c++ Issues and PRs that require attention from people who are familiar with C++. http Issues or PRs related to the http subsystem.
Projects
None yet
Development

Successfully merging this pull request may close these issues.