Buffer2 [TIL] golang buffer 복사 golang에서 buffer를 io.ReadSeeker 인터페이스로 복사해줄 일이 생겼다. buffer 내용은 이후에 읽고 수정하기 때문에 consume하면 안된다. 내부 데이터만 복사해서 넘겨줘야 했다. #fail 1: bytes로 reader 만들어주기 data := bytes.NewReader(rw.Buffer().Bytes()) bytes slice를 그대로 reader로 넘겨주었는데, 이 데이터를 수정하는 시점과 data를 읽는 시점에서 timing issue가 생겼다. data를 읽는 함수가 goroutine으로 async로 구현되어 있기 때문이다. Buffer의 bytes 설명을 보면 다음과 같이 적혀 있다. The slice aliases the buffer content at least .. 2023. 12. 21. [TIL] Go buffer read golang 개발하다가 buffer 관련해서 몰랐던 사실을 알게되어 정리해 둔다. Context 입력으로 이미지를 받고, 해당 이미지에 대한 정보를 불러온 후, 원본 이미지를 그대로 다음 middleware로 전달하는 코드가 있다. var buffer bytes.Buffer _, err := io.Copy(&buffer, src) if err != nil { return err } img, _, err := image.Decode(buffer) if err != nil { return err } // 이후 buffer 그대로 사용 Problem 이미지가 다음 미들웨어로 들어오지 않아서 에러가 발생했다. 확인해 보니 image.Decode(buffer)에서 buffer를 모두 읽어와서 발생한 에러다. fu.. 2023. 10. 27. 이전 1 다음