Я использую сервис, который создает или обновляет объекты в корзине GCP. Т.е. мой код проверяет, существует ли объект, и если он это делает, мой код читает его, обновляет и записывает обратно.
Иногда я получаю исключение при попытке прочитать объект.
Мой код:
Storage storage = googleStorage.get();
BlobId blobId = BlobId.of(STORAGE_BUCKET, "path/to.obj"));
Blob blob = storage.get(blobId);
if (blob == null) return null;
byte[] blobContent = blob.getContent();
...
Трассировка стека:
...
at com.google.cloud.storage.Blob.getContent(Blob.java:455)
at com.google.cloud.storage.StorageImpl.readAllBytes(StorageImpl.java:461)
at com.google.cloud.RetryHelper.runWithRetries(RetryHelper.java:51)
at com.google.cloud.RetryHelper.run(RetryHelper.java:74)
at com.google.api.gax.retrying.DirectRetryingExecutor.submit(DirectRetryingExecutor.java:89)
at com.google.cloud.storage.StorageImpl$16.call(StorageImpl.java:461)
at com.google.cloud.storage.StorageImpl$16.call(StorageImpl.java:464)
at com.google.cloud.storage.spi.v1.HttpStorageRpc.load(HttpStorageRpc.java:588)
at com.google.cloud.storage.spi.v1.HttpStorageRpc.translate(HttpStorageRpc.java:220)
No such object: bucket/path/to.obj
com.google.cloud.storage.StorageException: 404 Not Found
Я бы ожидал получить значение NULL в blob
, если объект не существует, или возможность читать, если blob
не равно NULL.
Это приводит к тому, что объект обновляется несколько раз (не уверен, что это происходит из-за того, что мой код повторяет вызов или из-за чего-то, что делает библиотека хранения).
Я использую google-cloud-storage 1.27.0, это происходит примерно один раз на ~ 10 000 объектов.