2016-11-17 10 views
1

Я написал серверную службу Clojure, использующую Java SDK Braintree. Он делает запросы на создание платежных токенов, создает клиентов, обрабатывает уведомления и т. Д. И т. Д. У меня есть набор тестов, которые проверяют все это, совершая звонки в песочницу Braintree. Все это хорошо работает, пока я не попытаюсь запустить тесты на Travis.Запросы на медленный Braintree API от Travis CI

На Travis, по крайней мере, в 50% случаев, моя сборка завершилась неудачно, потому что она закончилась, и я сузил призыв к первому звонку, сделанному в SDK Braintree (который, в моем случае, находит клиента, но он кажется, не имеет значения, какой вызов первый). Код находится там в течение минут, ожидающих завершения вызова. Иногда это может произойти быстро, иногда 10 минут могут пройти, и работа Трэвиса сдается. Это никогда не происходит локально.

Кто-нибудь знает, что происходит? Поскольку это только, кажется, влияет на первый вызов Braintree, возможно, что-то связанное с процессом рукопожатия? Кто-нибудь еще видел эту проблему?

ответ

1

Хотя это выстрел в темноте, это может быть проблемой, когда платформа сборки не имеет хорошего источника энтропии, а часть вашего кода и/или зависимостей блокирует чтение случайного устройства. Если будет недостаток хорошего источника энтропии, это может быть разрешено путем установки hasged.

Для установки и запуска haveged необходимо использовать apt addon. Пожалуйста, добавьте следующее в свой .travis.yml и посмотрите, есть ли улучшения:

addons: 
    apt: 
    packages: 
     - haveged 
+1

Блестящий, спасибо! Проверка доступной энтропии путем запуска 'cat/proc/sys/kernel/random/entropy_avail' до и после установки hasged дает мне результаты 219 и 1405 соответственно, поэтому энтропия была определенно очень низкой раньше. – SirSlush86