์๋
ํ์ธ์? vertx์ sockjs๋ฅผ ์ด์ฉํด ์ค์๊ฐ ์คํธ๋ฆฌ๋ฐ ์๋ฒ๋ฅผ ๋ง๋ค์ด๋ณด๋ ๋์ค ๊ถ๊ธ์ฆ์ด ์์ด ์ง๋ฌธ ์ฌ๋ฆฌ๊ฒ ๋์์ต๋๋ค.
๋ค๋ฆ์๋๋ผ ์คํธ๋ฆผ ํ๋ ๋ฐ์ดํฐ๊ฐ ๊ฝค ๋ง์ ์ํฉ์์ connection reset by peer ์๋ฌ๊ฐ ๋ฐ์ํ๋ฉด vertx์ NetSocketImpl์์๋ ํ์ ์์ธ ๊ฒ๋ค์ ์ฐจ๋ก๋ก write, flush ํ๊ณ ํ์์ฒ๋ฆฌ๋ฅผ ํ๋๊ฒ์ผ๋ก ๋ณด์
๋๋ค.
๊ทธ๋ฐ๋ฐ ์ด ๊ฒฝ์ฐ ์ด๋ฏธ ๋๊ธด ์์ผ์ ํฅํด flush ํ๋๋ผ ๋๋ต ์๋์ ๊ฐ์ ๋ฉ์ธ์ง๊ฐ ์๋ง์์ ์์ญ๋ง๊ฐ ์ ๋๊ฐ ๋จ์ด์ง๋๊ฒ ๊ฐ์ต๋๋ค(์๋ง ํ์ ์์ธ ๋ฉ์ธ์ง ๊ฐ์ ํน์ ํฌ๊ธฐ์ ๋ฐ๋ผ ๋ค๋ฅธ๊ฒ ๊ฐ์ต๋๋ค).
์๋ stack trace๋ฅผ ๋ฐ๋ผ๊ฐ๋ณด๋ฉด NioEventLoop์ผ๋ก ์ ๋ฌ๋ flush ๋ช
๋ น์ ์๋๊ณผ์ ์ธ๊ฒ ๊ฐ์๋ฐ.. vertx๋ก wrapping๋ ์์ผ๋จ์์๋ ์ ์ดํ ์ ์๋ ๋ถ๋ถ์ด ์์ด๋ณด์์ต๋๋ค.
ํน์ ์ ๊ฐ ์ํฉ ํ์
์ ์ ๋๋ก ํ ๊ฒ์ด ๋ง์๊น์? ๋ง์ฝ ๊ทธ๋ ์ง ์๋ค๋ฉด ์ด๊ฒ ์ด๋ค ์ํฉ์ธ๊ฒ์ธ์ง.. ํน ํด๊ฒฐ๋ฐฉ๋ฒ์ด ์์์ง ๊ถ๊ธํฉ๋๋ค.
2018-01-11 09:10:25.865 ERROR 19082 --- [vert.x-eventloop-thread-3] io.vertx.core.net.impl.ConnectionBaseย ย : java.io.IOException: ์ฐ๊ฒฐ์ด ์๋ํธ์ ์ํด ๋์ด์ง
2018-01-11 09:10:25.865 ERROR 19082 --- [vert.x-eventloop-thread-3] c.d.s.r.publisher.front.VerticleImplย ย : SockJsSocket(
172.51.2.195:57369) ExceptionHandler : ์ฐ๊ฒฐ์ด ์๋ํธ์ ์ํด ๋์ด์ง
java.io.IOException: ์ฐ๊ฒฐ์ด ์๋ํธ์ ์ํด ๋์ด์ง
ย ย ย ย at sun.nio.ch.FileDispatcherImpl.writev0(Native Method)
ย ย ย ย at sun.nio.ch.SocketDispatcher.writev(SocketDispatcher.java:51)
ย ย ย ย at sun.nio.ch.IOUtil.write(IOUtil.java:148)
ย ย ย ย at sun.nio.ch.SocketChannelImpl.write(SocketChannelImpl.java:504)
ย ย ย ย at io.netty.channel.socket.nio.NioSocketChannel.doWrite(NioSocketChannel.java:433)
ย ย ย ย at io.netty.channel.AbstractChannel$AbstractUnsafe.flush0(AbstractChannel.java:875)
ย ย ย ย at io.netty.channel.nio.AbstractNioChannel$AbstractNioUnsafe.forceFlush(AbstractNioChannel.java:368)
ย ย ย ย at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:639)
ย ย ย ย at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:580)
ย ย ย ย at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:497)
ย ย ย ย at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:459)
ย ย ย ย at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:858)
ย ย ย ย at java.lang.Thread.run(Thread.java:748)