2016-11-17 2 views
1

Ich habe einen serverseitigen Clojure-Dienst geschrieben, der das Braintree Java SDK verwendet. Es macht Anfragen, Zahlungs-Token zu erstellen, Kunden zu erstellen, Benachrichtigungen usw. zu behandeln. Ich habe eine Reihe von Tests geschrieben, die all das testen, indem Sie Anrufe in die Braintree-Sandbox machen. Das funktioniert alles gut, bis ich versuche, Travis zu testen.Slow Braintree API-Anfragen von Travis CI

Auf Travis, mindestens 50% der Zeit, schlägt mein Build fehl, weil es Zeitüberschreitung, und ich habe den Aufruf auf den ersten Aufruf an das Braintree SDK eingegrenzt (das ist in meinem Fall Kunde finden, aber es scheint nicht wichtig zu sein, welcher Ruf zuerst kommt). Der Code sitzt dort für Minuten und wartet darauf, dass der Anruf beendet wird. Manchmal kann es schnell passieren, andere Zeiten können 10 Minuten vergehen und der Travis-Job gibt auf. Dies geschieht niemals lokal.

Hat jemand eine Idee was los ist? Da es nur den ersten Aufruf von Braintree zu beeinflussen scheint, vielleicht etwas mit dem Handshake-Prozess zu tun? Hat jemand anderes dieses Problem gesehen?

Antwort

1

Während es im Dunkeln ist, könnte dies ein Problem sein, wenn die Build-Plattform keine gute Entropiequelle hat und ein Teil Ihres Codes und/oder Abhängigkeiten beim Lesen des Zufallsgeräts blockiert. Wenn das Fehlen einer guten Entropiequelle der Fall sein würde, könnte dies durch Installieren von Havged gelöst werden.

Um haveged zu installieren und zu starten, ist die Verwendung von apt addon erforderlich. Bitte fügen Sie Ihrem .travis.yml folgendes hinzu und sehen Sie, ob es irgendwelche Verbesserungen gibt:

addons: 
    apt: 
    packages: 
     - haveged 
+1

Brilliant, danke! Eine Überprüfung der verfügbaren Entropie durch Ausführen von 'cat/proc/sys/kernel/random/entropy_avail' vor und nach der Installation von logeged ergibt Ergebnisse von 219 bzw. 1405, also war die Entropie vorher sehr niedrig. – SirSlush86