Google Cloud gsutil дает сбой из-за того, что crcmode не скомпилирован

Я запускаю свою сборку с помощью Google Cloudbuild, и у меня есть этап, который копирует кэшированные файлы из корзины хранилища Google.
на этом этапе используется образ gsutil от gcr.io/cloud-builders/gsutil.
сборка запускается автоматически при каждом нажатии на репозиторий github.
это шаг:

steps:
  - name: 'gcr.io/cloud-builders/gsutil'
    id: 'Loading gradle cache'
    entrypoint: 'sh'
    args:
      - '-c'
      - |
        fileName=file.tar.gz
        if gsutil -q stat gs://cache_${PROJECT_ID}/${fileName}; then
          echo 'Gradle cache found'
          cd /
          gsutil -m cp gs://cache_${PROJECT_ID}/${fileName} ${fileName}
          tar -xpzf ${fileName}
        else
          echo 'Gradle cache not found'
        fi
    volumes:
      - name: 'gradle_cache'
        path: /root/.gradle
    waitFor: ['-']
    timeout: 60s

Проблема в том, что иногда он проходит, а иногда выходит из строя из-за того, что crcmod не скомпилирован:

CommandException:
Downloading this composite object requires integrity checking with CRC32c,
but your crcmod installation isn't using the module's C extension, so the
hash computation will likely throttle download performance. For help
installing the extension, please see "gsutil help crcmod".

To download regardless of crcmod performance or to skip slow integrity
checks, see the "check_hashes" option in your boto config file.
CommandException: 1 file/object could not be transferred.

Эта ошибка началась 4-5 дней назад. есть идеи, как это решить?

Спасибо


person Uri Aflalo    schedule 12.07.2020    source источник


Ответы (1)


См. gsutil help crcmod. Вам необходимо установить скомпилированный crcmod, если вы хотите загружать составные объекты. (Вместо этого также можно отключить контрольную сумму, но это плохая идея - вы не обнаружите повреждения данных.)

person Mike Schwartz    schedule 13.07.2020
comment
Я знаю, но странно то, что я использую встроенный образ Google для gsutil от разработчиков облака gcp. иногда crcmod компилируется, а иногда он не находится в одном и том же образе. - person Uri Aflalo; 13.07.2020
comment
Возможно ли, что случаи, когда вы не получаете эту ошибку, относятся к объектам, размер которых меньше значения parallel_composite_upload_threshold, установленного в вашем конфигурационном файле boto? В этом случае файлы не будут загружены с использованием параллельных составных загрузок, поэтому, когда вы попытаетесь их загрузить, gsutil не потребуется скомпилированный crcmod. - person Mike Schwartz; 13.07.2020
comment
тот же файл. при автоматическом запуске после push он терпит неудачу, но при запуске сборки вручную он прошел. в любом случае, я исправил это, заменив изображение, которое он использовал. - person Uri Aflalo; 14.07.2020
comment
Привет, @UriAflalo, не могли бы вы сказать, на какое изображение вы его заменили, чтобы избежать исключения crcmod? Я предполагаю, что вы обошли ошибку, указав определенный дайджест gcr.io/cloud-builders/gsutil, а не самый последний по умолчанию. Мы столкнулись с той же проблемой, и я признателен за любую вашу небольшую помощь. - person Ryo Wakatabe; 21.07.2020
comment
@RyoWakatabe, я действительно пытался указать конкретную версию gcr.io/cloud-builders/gsutil, но это невозможно. Google не помечает предыдущие изображения. вместо этого я использовал google / cloud-sdk: 300.0.0-alpine из dockerhub. вы также можете найти его в gcr: gcr.io/google.com/cloudsdktool/cloud-sdk:alpine. Я использую альпийский вариант, потому что он самый тонкий. gsutil отлично с этим работает. - person Uri Aflalo; 22.07.2020