2016-11-17 82 views
1

我已经编写了一个使用Braintree Java SDK的服务器端Clojure服务。它会请求创建支付令牌,创建客户,处理通知等。我有一套测试,通过调用Braintree沙盒来测试所有这些。这一切运作良好,直到我尝试在Travis上运行测试。来自Travis CI的缓慢Braintree API请求

在Travis上,至少有50%的时间,我的构建失败,因为它超时,并且我缩小了对Braintree SDK的第一个调用的调用范围(在我的情况下,它是查找客户,但它似乎并不重要,呼叫是第一个)。代码坐在那里等待电话完成。有时它可能会很快发生,其他时间10分钟可以通过,Travis工作放弃。这绝不会发生在本地。

有没有人有任何想法是怎么回事?因为它似乎只影响到Braintree的第一个调用,可能与握手过程有关?有其他人看过这个问题吗?

回答

1

尽管这是一个黑暗中的镜头,但这可能是构建平台缺乏良好熵源的一个问题,并且您的代码和/或依赖关系的一部分在读取随机设备时会被阻止。如果缺乏一个好的熵源,这可以通过安装hasged来解决。

为了安装和启动haveged,需要使用apt addon。请在.travis.yml中添加以下内容,看看是否有任何改进:

addons: 
    apt: 
    packages: 
     - haveged 
+1

辉煌,谢谢!通过运行'cat/proc/sys/kernel/random/entropy_avail'来检查可用熵,结果分别为219和1405,所以熵之前肯定非常低。 – SirSlush86