| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
| |
THIS CAUSES THE CROSSED WIRES BUG TO
OCCUR!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!1
|
|
|
|
| |
No errors.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
IDs are strings, but we were using '%d' to format IDs. The following
exception would appear in the controller log file.
Traceback (most recent call last):
File "/usr/lib/python2.7/logging/__init__.py", line 859, in emit
msg = self.format(record)
File "/usr/lib/python2.7/logging/__init__.py", line 732, in format
return fmt.format(record)
File "/usr/lib/python2.7/logging/__init__.py", line 471, in format
record.message = record.getMessage()
File "/usr/lib/python2.7/logging/__init__.py", line 335, in getMessage
msg = msg % self.args
TypeError: %d format: a number is required, not str
Logged from file build_controller.py, line 446
|
|
|
|
|
| |
The JsonRouter creates unique IDs for the messages. In practice, this
is unnecessary as there is only ever one controller process connected
|
|
|
|
|
|
|
|
|
|
|
| |
The JsonRouter object is actually only used in the `morph worker-daemon`
process. I find it hard to understand what's going on in this class
because the names are generic (e.g. 'client' could refer to anything,
but in fact the controller-daemon is the only 'client' there will ever
be).
This commit adds docstrings and cleans up some function and variable
names to hopefully make the code easier to reason about.
|
|
|
|
|
|
|
|
|
| |
Also, warn if process or response messages are received for requests
that have already completed or been cancelled.
This won't gain much performance-wise, and I don't think that this kind
of error is taking place at the moment, but should make it easier to spot
if things aren't working as expected in future.
|
|
|
|
| |
No crossed wires.
|
|
|
|
|
|
|
|
| |
Otherwise, if one Morph process reads from the file while another Morph
process writes to the file, the reader will see a corrupted file and
will raise ValueError('insecure string pickle'). This is much less likely
to happen if morphlib.savefile.SaveFile is used, because the data is
updated in a single 'move' operation.
|
|
|
|
| |
Still no crossed wires.
|
|
|
|
|
|
|
|
|
| |
We need to pass --artifact-cache-server as well as
--writable-cache-server to the `morph controller-daemon` process,
otherwise it uses git.baserock.org as the shared artifact cache.
Using git.baserock.org results in each build starting from scratch
instead of reusing the already-build artifacts in the artifact cache set
up by the test harness.
|
| |
|
|
|
|
| |
No errors.
|
| |
|
|
|
|
|
|
| |
Conflicts:
morphlib/buildcommand.py
morphlib/plugins/distbuild_plugin.py
|
|
|
|
|
| |
Conflicts:
morphlib/plugins/distbuild_plugin.py
|
| |
|
|
|
|
|
| |
Previously, duplicate names would cause the ProcessMonitor class to
forget about processes, and leave them running after the process exits.
|
|
|
|
|
| |
All requests are written to stderr (and not to the log file) by Bottle,
so it's useful to capture this.
|
|
|
|
|
| |
This allows you to run one of the processes under an interactive
debugger.
|
|
|
|
|
|
|
|
| |
It's better to fail with an error after 10 seconds than to get stuck
forever. This code path is used for telling the shared artifact cache
server to fetch artifacts from a worker, and previously if the HTTP
request didn't get a response for whatever reason, the build would hang
until the end of time.
|
| |
|
|\
| |
| |
| |
| | |
Conflicts:
scripts/distbuild
|
| | |
|
| |
| |
| |
| |
| |
| |
| | |
This extends the work Richard Maw did on getting distbuild to run
locally. It's now possible to interact with the local distbuild network,
where before it could only be used as part of Yarn tests. It's also easy
to have more than a single worker now.
|
| |\
| | |
| | |
| | |
| | | |
Reviewed-By: Pedro Alvarez <pedro.alvarez@codethink.co.uk>
Reviewed-By: Francisco Redondo Marchena <francisco.marchena@codethink.co.uk>
|
| | | |
|
| | | |
|
| | | |
|
| | | |
|
| | | |
|
|\ \ \
| | | |
| | | |
| | | |
| | | | |
Conflicts:
without-test-modules
|
| | | | |
|
| | | | |
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
This means that builds won't hang forever if network connectivity drops.
Instead, Morph will show an error to the user, then try to do a local
build of the current artifact. (This may still break if the local git
cache does not contain the necessary SHA1s).
|
| | | |
| | | |
| | | |
| | | |
| | | | |
This makes it less likely that a build running overnight will fail due
to network gremlins.
|
| | | |
| | | |
| | | |
| | | |
| | | | |
Previously the value of trove-host would be used, resulting in requests
to http://[]:8080/ that are a bit hard to reason about.
|
| | | | |
|
| | | | |
|
| | | | |
|
| | | | |
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
The BuildCommand code walks the build graph and fetches or builds each
artifact in order. So there's no need to fetch the dependencies of
something once again when we come to building it: everything before it
in the build graph has already been fetched or built.
|
| | | | |
|
| | | | |
|
| | | | |
|
| | | |
| | | |
| | | |
| | | |
| | | | |
We now fetch sources, not artifacts. This means that built artifacts
of a source are either all available, or all missing.
|
| | | |
| | | |
| | | |
| | | | |
Requests is a much better library for this purpose.
|
| | | | |
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
The old test suite was closely tied with the implementation of the
module, which makes it very hard to rewrite any of the module. The new
test suite actually sets up a remote HTTP server and exercises the real
code paths.
I added a new 'testutils' module, because there seem to be quite a few
mock classes duplicated in different test modules. Better to collect
them when they are really needed.
|
| | | | |
|