Azure-sdk-for-java: Azure Blob - listBlobsByHierarchy().iterableByPage(10) - ne fournit pas de résultats en fonction de la taille de page définie

Créé le 19 mars 2021  ·  3Commentaires  ·  Source: Azure/azure-sdk-for-java

J'ai un dossier dans un conteneur blob qui contient 112 blobs. J'ai défini pour obtenir 10 blobs par page, mais j'obtiens les 112 blobs dans une réponse de page. Veuillez trouver ci-dessous un exemple de code pour reproduire ce problème.

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());

            }
        }

Capture d'écran
image

Reproduire

  1. Créer un dossier avec 112 éléments
  2. Exécutez l'exemple de code ci-dessus et vous obtiendrez tous les éléments dans une seule page de réponse

Comportement prévisible
Seuls 10 blobs devraient être disponibles dans une réponse de page.

Configuration (veuillez compléter les informations suivantes le cas échéant) :
OS : fenêtre
IDE : éclipse
Version de la bibliothèque utilisée : azure-storage-blob-12.10.0

Client Storage bug customer-reported

Tous les 3 commentaires

Salut @abhikt48
Merci d'avoir posté ce problème. Nous allons voir ce qui ne va pas ici.

Cela semble être un doublon de #12496 Comme Gauri l'a mentionné, je vais chercher à reproduire cela aujourd'hui ou lundi

@rickle-msft Juste pour info, j'ai fait les mêmes tests avec une autre approche et cela fonctionne bien. J'ai fourni ListBlobsOptions et défini setMaxResultsPerPage . Mais je n'ai trouvé aucun effet de pagedIterable.iterableByPage(10) , on dirait que c'est redondant. Pourriez-vous s'il vous plaît vérifier et confirmer ?

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);

Pourriez-vous s'il vous plaît m'aider avec les requêtes ci-dessous liées à l'opération listBlobsByHierarchy(null, listBlobsOptions , null) -

  1. listBlobsOptions.setPrefix(directoryName + "prefix"); - Je n'ai trouvé aucune option pour définir le répertoire spécifiquement dans ListBlobsOptions ou BlobContainerClient.listBlobsByHierarchy(null, listBlobsOptions , null) . Puis-je supposer que - directoryName peut être fourni via listBlobsOptions.setPrefix() uniquement ? Veuillez confirmer.
  2. L'ancien SDK fournit une option pour obtenir la longueur du résultat, mais je n'ai trouvé aucune option dans le nouveau SDK avec l'opération listBlobsByHierarchy . Pourriez-vous s'il vous plaît vérifier et confirmer si nous avons une option pour vérifier la taille de la liste

Ancien SDK - Longueur de la liste

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

Veuillez suggérer votre opinion sur les requêtes ci-dessus, afin que je puisse continuer.

Salutations,
Abhishek Kumar

Cette page vous a été utile?
0 / 5 - 0 notes