Azure-sdk-for-java: Azure Blob - listBlobsByHierarchy (). IterableByPage (10) - não fornecendo resultados com base no tamanho de página definido

Criado em 19 mar. 2021  ·  3Comentários  ·  Fonte: Azure/azure-sdk-for-java

Eu tenho uma pasta no contêiner de blob que contém 112 blobs. Eu defini obter 10 blobs por página, mas estou recebendo todos os 112 blobs em uma resposta de página. Encontre a seguir um exemplo de código para reproduzir esse problema.

PagedIterable<BlobItem> pagedIterable = getBlobContainerClient().listBlobsByHierarchy("batch/");

        Iterable<PagedResponse<BlobItem>> iterableByPage = pagedIterable.iterableByPage(10);

        for (PagedResponse<BlobItem> pagedResponse : iterableByPage) {
            Iterator<BlobItem> iterableStream = pagedResponse.getElements().iterator();
            int counter = 1;
            System.err.println("counter - " + counter);

            while (iterableStream.hasNext()) {
                BlobItem blobItem = iterableStream.next();
                LOGGER.info(counter++ +" ** listBlob name -'{}' properties-'{}', tags -'{}', version -'{}', snapshot -'{}' ***", 
                                        blobItem.getName(), blobItem.getProperties(), blobItem.getTags(), blobItem.getVersionId(),
                                        blobItem.getSnapshot());

            }
        }

ScreenShot
image

Reproduzir

  1. Crie uma pasta com 112 itens
  2. Execute o código de amostra acima e você obterá todos os itens em uma única página de resposta

Comportamento esperado
Apenas 10 blobs devem estar disponíveis em uma resposta de página.

Configuração (preencha as seguintes informações, se aplicável):
SO: janela
IDE: eclipse
Versão da biblioteca usada: azure-storage-blob-12.10.0

Client Storage bug customer-reported

Todos 3 comentários

Olá @ abhikt48
Obrigado por postar este problema. Veremos o que está errado aqui.

Parece ser uma duplicata de # 12496. Como Gauri mencionou, vou tentar reproduzi-lo hoje ou na segunda-feira

@rickle-msft Apenas para sua informação, fiz o mesmo teste com outra abordagem e está funcionando bem. Forneci ListBlobsOptions e configurei setMaxResultsPerPage . Mas eu não encontrei nenhum efeito de pagedIterable.iterableByPage(10) , parece que isso é redundante. Você poderia verificar e confirmar?

ListBlobsOptions listBlobsOptions = new ListBlobsOptions();
        listBlobsOptions.setPrefix(directoryName);
        listBlobsOptions.setMaxResultsPerPage(10);        
PagedIterable<BlobItem> pagedIterable = getBlobContainerClient().listBlobsByHierarchy(null, listBlobsOptions , null);
Iterable<PagedResponse<BlobItem>> iterableByPage = pagedIterable.iterableByPage(10);

Você poderia me ajudar com as perguntas abaixo relacionadas com a operação listBlobsByHierarchy(null, listBlobsOptions , null) -

  1. listBlobsOptions.setPrefix(directoryName + "prefix"); - Não encontrei nenhuma opção para definir o diretório especificamente em ListBlobsOptions ou BlobContainerClient.listBlobsByHierarchy(null, listBlobsOptions , null) . Posso assumir que - directoryName pode ser fornecido por meio de listBlobsOptions.setPrefix() apenas? Por favor confirme.
  2. O SDK antigo oferece a opção de obter o comprimento do resultado, mas não encontrei nenhuma opção no Novo SDK com operação listBlobsByHierarchy . Você poderia verificar e confirmar se temos alguma opção para verificar o tamanho da lista

SDK antigo - comprimento da lista

ResultSegment<ListBlobItem> listBlobResult = provider.getBlobListInDirectory(containerName, directoryName, 
                                                                blobPrefix, index, continuationToken);
        totalItems = listBlobResult.getLength();

Por favor, sugira sua opinião sobre as questões acima, para que eu possa prosseguir.

Cumprimentos,
Abhishek Kumar

Esta página foi útil?
0 / 5 - 0 avaliações