diff options
author | Richard Purdie <richard.purdie@linuxfoundation.org> | 2017-07-28 15:46:20 +0100 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2017-07-28 23:02:32 +0100 |
commit | 8633b7cd03cfaba3e0359aa5da22fc76b66768c7 (patch) | |
tree | 196daec38a34f751873249e9f7796527e8edfd11 | |
parent | f41e4e971e807157be68cf4496580494b8b60643 (diff) | |
download | bitbake-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.py | 15 |
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]) |