我们正在使用带有Jetty 9的scalatra。我们有一个提供静态文件的端点。但我注意到任何大于2GB的东西似乎都被截断了。我可以看到该文件被分块发送。 Curl和wget可以正常启动下载并完成而不会出现错误。我已经找到了scalatra和Jetty的问题,并没有看到任何像我看到的问题。但看起来有人在需要长时间时使用了一个int
答案 0 :(得分:2)
对于那些通过搜索结果偶然发现此问题的人......
这是在Jetty问题跟踪器上处理的 https://github.com/eclipse/jetty.project/issues/630
答案是这是一个scalatra错误,它错误地假设.transferTo()
有保证发送所有传递给它的字节。
scalatra实现需要在循环中使用.transferTo()
来验证整个大小是否已发送。
要回答2GB?的原因,那是因为transferTo()
使用的是java ByteBuffer
,它本身有2GB的限制。
答案 1 :(得分:1)
此问题已在scalatra 2.5.0+中修复 http://scalatra.org/2016/11/21/2016-11-21-scalatra-2-5-released.html