summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRichard Purdie <richard.purdie@linuxfoundation.org>2017-07-28 15:46:20 +0100
committerRichard Purdie <richard.purdie@linuxfoundation.org>2017-07-28 23:02:32 +0100
commit8633b7cd03cfaba3e0359aa5da22fc76b66768c7 (patch)
tree196daec38a34f751873249e9f7796527e8edfd11
parentf41e4e971e807157be68cf4496580494b8b60643 (diff)
downloadbitbake-contrib-8633b7cd03cfaba3e0359aa5da22fc76b66768c7.tar.gz
process: Clean up server communication timeout errors
This timeout path was commonly hit due to errors starting the server. Now we have a better way to handle that, the retry logic can be improved and cleaned up. This patch: * Makes the timeout 5s rather than intervals of 1s with a message. Paul noted some commands can take around 1s to run on a server which has just been started on a loaded system. * Allows a broke connection to exit immediately rather than retrying something which will never work. * Drops the Ctrl+C masking, we shouldn't need that anymore and any issues would be better handled in other ways. This should make things clearer and less confusing for users and is much cleaner code too. Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-rw-r--r--lib/bb/server/process.py15
1 files changed, 3 insertions, 12 deletions
diff --git a/lib/bb/server/process.py b/lib/bb/server/process.py
index 3530bdc07..e4b9d9623 100644
--- a/lib/bb/server/process.py
+++ b/lib/bb/server/process.py
@@ -303,19 +303,10 @@ class ServerCommunicator():
self.recv = recv
def runCommand(self, command):
-
self.connection.send(command)
- while True:
- # don't let the user ctrl-c while we're waiting for a response
- try:
- for idx in range(0,4): # 0, 1, 2, 3
- if self.recv.poll(1):
- return self.recv.get()
- else:
- bb.note("Timeout while attempting to communicate with bitbake server, retrying...")
- raise ProcessTimeout("Gave up; Too many tries: timeout while attempting to communicate with bitbake server")
- except KeyboardInterrupt:
- pass
+ if not self.recv.poll(5):
+ raise ProcessTimeout("Timeout while waiting for a reply from the bitbake server")
+ return self.recv.get()
def updateFeatureSet(self, featureset):
_, error = self.runCommand(["setFeatures", featureset])