| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
| |
This is now handled in Context.prepare_fork().
|
|
|
|
| |
This is no longer required as gRPC connections are closed before fork.
|
| |
|
|
|
|
|
| |
gRPC channels might be opened after the scheduler has already been
started. Make sure channels are closed right before spawning jobs.
|
| |
|
|
|
|
| |
This aligns the method name with has_open_grpc_channels().
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
| |
Copy the approach of 'Darwin' and provide a SandboxDummy.
This enables us to run 'bst workspace list' on Windows.
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This should be safe now - this particular point turned out to be
involved in loading dependencies of junction elements, rather than
anything in their projects.
This meant that, yes, we were missing progress, however junction
elements are not allowed to have dependencies in the first place, so
we simply short-circuit their load and avoid the problem altogether.
We also added more explicit progress opt-outs, since it's far too easy
to end up with spurious Nones.
|
|
|
|
|
|
|
|
|
|
|
|
| |
To ensure that we only disable element loading task progress reporting
for very specific code paths, we need to teach the test suite to be a
bit smarter.
For this reason we now mock a _Task object and return it in our mock
context's relevant method invocations.
Other code paths that deliberately invoke the loader without task
reporting now mark their loads with NO_PROGRESS.
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
By avoiding this, loading metaelements of junctions becomes cheap even
for junctions with erroneous dependencies, and we can ignore their
task reporting.
Task reporting for junction metaelement loading is confusing, since
the junction element itself will never be part of the pipeline, so
we'd rather not have this show up as an actual loaded element.
Elements loaded from the junction are loaded separately, therefore
this does not affect their progress display.
|
|
|
|
|
|
| |
If a remote has some missing blobs for a source, we should not fail
abruptly but instead continue to the next remote, and, in the worst
case, fetch the source again.
|
|
|
|
|
|
|
|
|
|
|
| |
In some cases, users might not have permissions to use fuse, or fuse
might crash.
This was previously leading to a hanged process and, with chance an
error message on the UI, which could be overwritten.
This ensures we are explicitely monitoring the fuse process while
waiting and adds better reporting of the fuse errors.
|
|
|
|
|
|
|
|
|
|
| |
Previously, if an artifact proto had no files at all in it, we would
fail at pushing it, making BuildStream crash.
When no files are part of an artifact proto, we can short-circuit
the call and avoid pushing them unecessarily.
- Add a test to ensure this doesn't come back.
|
|
|
|
|
|
|
| |
This adds a listener on the scheduler's event loop to ensure that
the buildbox-casd process stays alive during the run. If that fails,
terminate all running processes, we know they can't succeed anyways
and exit accordingly.
|
|
|
|
|
|
|
|
|
| |
Remove XFAIL mark from test_workspace_visible and remove the explicit
SourceCache.commit() in the workspace source plugin. Allow buildstream
to handle the commit logic.
Add handling for non-cached workspace sources in
`source.Source._generate_keys()`.
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Work around the fact that we can't import 'fcntl' on Windows, and
confine the workaround to as small a scope as we can.
This enables us to run at least these commands on Windows:
bst help
bst init
We can't run any commands that require a Platform object though, which
is most commands.
|
|
|
|
|
|
|
|
|
|
| |
This changes how we instantiate the CASCache by reusing the log level
parameters from BuildStream and forward them to buildbox-casd.
By default, buildbox-casd will now have '--log-level warning', and
--verbose will enable 'info' and --debug will enable 'trace'.
This way, we can easily tweak buildbox-casd's verbosity
|
|
|
|
|
|
|
| |
Remove call to Element._source_cached() in _calculate_cache_key and
do not recalculate workspace keys.
tests: shell browsing of workspaces is currently broken
|
|
|
|
|
|
|
| |
Workspace keys are determined by contained files at time of opening and
are not forcibly reset
tests: workspaces have keys when they're opened and are not recalculated
|
|
|
|
|
|
| |
We don't want this process to be killed if someones CTRL+C BuildStream
and the continues the build. We can therefore just ignore SIGINT
there.
|
|
|
|
|
|
| |
We don't want SIGINT to be forwarded to the buildbox-casd process,
otherwise it would get killed if someone CTRL+C the BuildStream
process and then continues the build, which would make everything fail.
|
| |
|
| |
|
|
|
|
|
| |
Save all casd logs in a log file under its cas/ directory, and
keep only the last 10 of them.
|
|
|
|
|
|
|
| |
This adds messages in the various mis-termination of Buildbox-casd, to
notify users that something might have gone wrong there.
It also adds a few tests to validate the various behaviors.
|
| |
|
|
|
|
|
|
|
|
|
| |
This caused stacktraces when a user didn't have buildbox-casd
installed, even though it wasn't required for completion, even for
artifacts.
It does add a slightly ugly parameter to Context, long-term it might
make sense to create a special slimmed-down context for completion.
|
| |
|
|
|
|
|
| |
This allows import of a whole directory tree with a single gRPC call to
buildbox-casd CaptureTree() instead of importing files one at a time.
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
| |
Workspaces will be handled via the workspace source plugin methods. This
does not currently support reflecting build artifacts in the open
workspace.
tests: Mark incremental workspace builds as xfail (strict)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Check that sources are cached even if they are workspaced and do not
reset workspace cache data
partially reverts !1470
closes #1088
element.py: remove workspaces in cache key calc
Using the workspace source plugin, workspaces should now be handled like
sources for the purpose of calculating element cache keys.
partially reverts !1470
works towards #1073
Since the source keys are now calculated using the unique keys of the
workspace source, this change will break external tracking for open
workspaces. In future attempting to track an open workspace might raise
a SourceError. The test is rewritten to close the workspace before
tracking.
|
|
|
|
|
| |
Add the workspace-kind source to the sources manually to prevent a user
incorrectly loading the source plugin.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The `workspace.init_workspace()` call should wrap
`source._init_workspace` for held sources to support those sources not
publishing `BST_VIRTUAL_DIRECTORY`
This object owns a directory digest attribute used inplace of the source
ref.
`track` and `fetch` become noop methods and the workspace is imported
into the CAS in the call to `get_unique_key` which also sets the digest
attribute and owns that Directory object. The directory is referenced
during stage to import directly to the virtual directory object.
Importing is expected to be expensive and will be
optimised in future.
When the unique key is retrieved for the workspace source it will also
be commited to the sourcecache. The logic for this source is still a
slight variant on other sources since it cannot itself be expected to
be in the cache when it's opened.
In the source preflight method the preflights of the held sources must
be called.
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
| |
All communication with CAS servers should be proxied through
buildbox-casd to allow connection sharing among job subprocesses.
It is no longer needed to query the server capabilities as buildbox-casd
already does that, so we can simply remove the code from BuildStream.
|
|
|
|
| |
Remote CAS servers should not be contacted directly.
|
| |
|
|
|
|
|
| |
The push status check is implemented by BuildStream artifact and source
services. It's not part of the CAS protocol.
|
|
|
|
|
|
|
| |
It's sufficient to check the capabilities once per bst session. This
avoids the extra round trip in remote.init().
This also adds a check for allow_updates for push remotes.
|
|
|
|
|
|
|
| |
It's sufficient to check the capabilities once per bst session. This
avoids the extra round trip in remote.init().
This also adds a check for allow_updates for push remotes.
|