본문 바로가기
개발 및 운영/Node.JS

Node.JS Stream Backpressure 처리에 대해

by Joseph.Lee 2022. 9. 15.

전에 한번 확인 했던 것 같은데 stream 을 만들어 쓸려니까 또 까먹었다..

 

테스트 소스:

https://gist.github.com/jclab-joseph/d4258a4f8c2d19c15ccc8dfb27540f16

 

Readable Stream 에서 push 할 때 그냥 callback 으로 기다리게 하면 좋을려만..

과정은 이렇다.

 

- this.push 의 return 이 false 이면 내부 버퍼가 다 찬 것이다. (실제 고정 버퍼는 아니고 highWaterMark 사이즈를 넘었다는 것이다. 따라서 다시 push 할 필요는 없다. 버퍼링 된 것이다.)

- 버퍼가 비워지면 다시 _read 가 호출된다. 그러면 다시 push 가 가능하다. (this.push 가 false 가 되면, Duplex 또는 Transform 에서는 _write 의 callback 을 다시 _read 가 호출 되었을 때 실행하면 된다)

 

...

 

라고 생각했는데 뭔가 더 있는듯... 복잡한 상황이 되니 이대로는 잘 작동하지 않는다..

어케해야하는거야;;

걍 소스 버그였음..

반응형

댓글