com.google.api.client.googleapis.json.GoogleJsonResponseException при чтении из корзины Google - PullRequest
0 голосов
/ 02 июня 2018

Я пытаюсь перечислить все файлы из одного каталога в google bucket и считываю данные из каждого файла, для некоторых сегментов он работает, но для одного сегмента выдает ошибку

Причина:com.google.api.client.googleapis.json.GoogleJsonResponseException: 500 Внутренняя ошибка сервера {"code": 500, "errors": [{"domain": "global", "message": "Internal Error", "причина":" responseTooLarge "}]," message ":" Внутренняя ошибка "

stacktrace: Исключение в потоке" main "com.google.cloud.storage.StorageException: Внутренняя ошибка на com.google.cloud.storage.spi.v1.HttpStorageRpc.translate (HttpStorageRpc.java:220) на com.google.cloud.storage.spi.v1.HttpStorageRpc.list (HttpStorageRpc.java:346) на com.google.cloud.storage.StorageImpl $ 8.Позвоните (StorageImpl.java:299) по адресу com.google.cloud.storage.StorageImpl $ 8.call (StorageImpl.java:296) по адресу com.google.api.gax.retry.DirectRetringExecutor.submit (по адресу com.google.cloud.RetryHelper.run (RetryHelper.java:74) на com.google.cloud.RetryHelper.runWithRetries (RetryHelper.java:51) в com.google.cloud.storage.StorageImpl.listBlobs (StorageImpl.java:295) в com.google.cloud.storage.StorageImpl.list (StorageImpl.java:262) в WriteToGs.main (WriteToGs.java:22)

import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;


public class WriteToGs {
    static PGPContainer pgpContainer = new PGPContainer();
    final static Storage storage = StorageOptions.getDefaultInstance().getService();
    public static void main(String[] args) throws Exception {
        final DateFormat dateFormat = new SimpleDateFormat("yyyyMMddHHmm");
        final Date date = new Date();
        final String destinationDirectory=args[2];
        final String flowname=args[3];

        final String num_threads=args[4];

        Iterable<Blob> blobs = storage.list(args[0], Storage.BlobListOption.prefix(args[1])).iterateAll();
        ExecutorService executorService = Executors.newFixedThreadPool(Integer.parseInt(num_threads));
        for (Blob blob : blobs) {
            System.out.println("Blob name:"+blob.getName());
            final String destinationFilename=blob.getName();
            final Blob contentBlob=blob;

            executorService.execute(new Runnable() {
                public void run() {
                    String fileContent = new String(contentBlob.getContent());
                    BlobId newblobId = BlobId.of(destinationDirectory,"xyz/fds" + flowname + "/"
                            + dateFormat.format(date) + "/" + destinationFilename.replace(".txt",".pgp"));
                    BlobInfo blobInfo = BlobInfo.newBuilder(newblobId).setContentType("text/plain").build();
                    try {

                        System.out.println("Blob name deleted:"+contentBlob.getName());
                        storage.delete(contentBlob.getBlobId());
                    } catch (Exception e) {
                        e.printStackTrace();
                    }




                }
            });
        }
        executorService.shutdown();
    }

}

1 Ответ

0 голосов
/ 09 октября 2018

Хорошо, если предположить, что строка 22 (откуда и произошла ошибка) - это:

System.out.println("Blob name:"+blob.getName());

Возможно, свойство «имя» внутри BLOB-объекта достаточно велико, чтобы нарушить работу приложения.Но я почти уверен, что это не та строка, где приложение не работает.

Исходя из аналогичного вопроса, GoogleJsonResponseException: 500 Внутренняя ошибка сервера: слишком большой ответ для возврата , япредлагаем вам создать ошибку, так как это может быть проблемой, напрямую связанной с библиотеками Google.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...