我们正在下载一个非常大的文件(〜70G),但是有一次代码完整完成而没有引发异常,但是下载的文件不完整,不到50G。
代码是:
public void download(String url, String filename) throws Exception {
URL dumpUrl = new URL(url);
try (InputStream input = dumpUrl.openStream()) {
Files.copy(input, Paths.get(filename));
}
}
url
是一个预先签名的Google Cloud Storage URL。
这仅仅是库未检测到连接重置问题吗?还是其他?
我可以使用更好的库吗?还是我需要先进行HEAD调用,然后将下载的大小与内容长度进行匹配。
不在乎它没有用,发生了,我们有重试逻辑。我的问题是认为它确实有效的代码。
更新:看来它在开始下载后恰好2小时失败了。这使我怀疑这可能是netops /防火墙问题。不知道在哪端,我将使我的行动团队陷入困境。有人知道Google的时限吗?
忽略此更新-现在有更多实例,没有设置时间。在20分钟到2小时之间的任何时间。
答案 0 :(得分:0)
从未解决核心问题。但是能够通过比较下载到var(--primaryColor)
头的字节来解决。循环工作,可使用Content-Length
标头(类似于Range
)恢复不完整的下载。