我需要从容器中删除所有blob。我认为这样做的简单方法是删除并重新创建容器。没那么多......
这是等待的代码:
while (saClient.getContainerReference(myContainerName.exists()) {
try {
Thread.sleep(20 * 1000);
} catch (InterruptedException ie) {
Thread.interrupted();
System.out.println("<: interrupted");
return;
}
}
当我走出那个循环时,我尝试重新创建容器并获得异常:
com.microsoft.azure.storage.StorageException: The specified container is being deleted. Try operation later.
我可以重新编码以删除每个blob,但我很好奇这个界面行为。我可能会遇到同样的问题,每个blob都没有被删除。
我正在使用这些库版本:
com.microsoft.azure:azure-storage:4.2.0
com.microsoft.azure:azure:1.1.0
答案 0 :(得分:0)
要回答您的问题,您无法进行API调用,这将告诉您实际删除了容器,因为删除过程是异步过程。
来自文档link
:
删除容器时,不能使用同名的容器 创造至少30秒;容器可能无法使用 如果服务仍在处理,则超过30秒 请求。在删除容器时,尝试创建一个 同名的容器将失败,状态码为409(Conflict), 与服务返回附加的错误信息指示 正在删除容器。所有其他操作,包括 容器下任何blob上的操作都将失败并显示状态 正在删除容器时代码404(未找到)。
您需要做的是继续重试创建blob容器。如果操作失败,状态代码为409,错误代码为ContainerBeingDeleted
,则表示容器仍在删除。您可以在等待一段时间后重试该操作。
我仍然建议删除容器方法而不是删除容器中的每个blob,因为删除容器是单个操作,而要删除所有blob,你必须进行与该容器中的blob一样多的操作。