Tom Clegg [Wed, 17 Jan 2024 21:41:24 +0000 (16:41 -0500)]
20318: Fix arvados-login-sync and arvados-cli dependencies.
Previous requirement '~> 2.7.0.rc1' excluded the current prerelease
version '2.8.0.dev20231214204948' that the test suite deliberately
installs ahead of time, so bundler overrode that and selected the last
released published version 2.7.1 from rubygems, which is not
compatible with Ruby 3.
Arvados-DCO-1.1-Signed-off-by: Tom Clegg <tom@curii.com>
Stephen Smith [Mon, 15 Jan 2024 21:44:12 +0000 (16:44 -0500)]
21353: Move url location check into waitUntil
It seems possible for window.location to be defined, then later undefined.
Moving the url location check should solve the problem by waiting for redirects
to be done.
Arvados-DCO-1.1-Signed-off-by: Stephen Smith <stephen@curii.com>
Tom Clegg [Fri, 12 Jan 2024 16:06:19 +0000 (11:06 -0500)]
20318: Avoid error when cache file is deleted while being written.
The previous code had one goroutine writing the cache file, and
another goroutine(s) waiting for it to finish, then opening the file
for reading. If the cache file was deleted before being opened for
reading, ReadAt would return an error.
The new code shares the writer's filehandle with all of the goroutines
that are waiting for it to finish writing. This ensures ReadAt can
always read from the newly written file even if it is deleted
mid-write.
Arvados-DCO-1.1-Signed-off-by: Tom Clegg <tom@curii.com>
Tom Clegg [Thu, 11 Jan 2024 18:10:47 +0000 (13:10 -0500)]
20318: Fix settled condition.
Intention was to stop iterating when *all* of the keepstore servers
need 0 pulls, but the code as written stops on the N>1st iteration
when *any* of the keepstore servers need 0 pulls. This caused a false
negative when it took more than one iteration for keepstore to
complete the requested pulls.
Arvados-DCO-1.1-Signed-off-by: Tom Clegg <tom@curii.com>
Tom Clegg [Thu, 11 Jan 2024 17:01:11 +0000 (12:01 -0500)]
20318: Route (*KeepClient)Get() through disk cache layer.
The updated implementation maintains the existing calling signature
but has some semantic differences:
The block size returned by Get is now -1 if the block size is not
indicated by the supplied locator. All locators generated by Arvados
include sizes, and Get() doesn't work on bare hashes because they have
no permission signature, so in practice this only comes up for test
cases and keepstore's pull worker.
The url returned by Get is now "" because
* in general it is not necessarily available in principle (data often
comes from the cache instead of a backend server)
* in the cases where it is available in principle, it would be a lot
of trouble to propagate it
* the only known reason to reveal the url is to provide detail about
an error, in which case the error message should already include the
relevant url.
In some cases where the upstream server responds 200 but an error is
detected early in the response content, Get() now returns the error
itself, where the old Get() implementation would have returned a
reader whose Read method returns an error.
Arvados-DCO-1.1-Signed-off-by: Tom Clegg <tom@curii.com>
Tom Clegg [Thu, 11 Jan 2024 16:22:27 +0000 (11:22 -0500)]
20318: Fix BadChecksum error not propagated through cache layer.
Previously, ReadAt would not return an error as long as enough bytes
were read, because the error might mean the read was truncated after
the point needed for the current read. This had the unintended
consequence that even a BadChecksum error returned on the final read
would not be propagated.
The updated version propagates errors even if the requested bytes were
retrieved, so the only case where a bad checksum error can be
undetected is when the read does not reach the end of the block *and*
the block has not been fully retrieved yet.
Arvados-DCO-1.1-Signed-off-by: Tom Clegg <tom@curii.com>
Brett Smith [Wed, 10 Jan 2024 18:43:20 +0000 (13:43 -0500)]
21367/21230: Set up dev-jobs with virtualenv
The functional goal here is to do all pip installs inside the Dockerfile
inside a virtualenv to avoid the global pip install issues.
Changes that fall out of that:
* Installing python3-venv is all we need to go back to the -slim Debian
image.
* Stop installing other Python packages we'll just install inside the
virtualenv anyway.
* Rather than having separate arguments and code blocks for every
package we might want to install, just set up a dedicated build
context for the Docker image with all the packages we want to install,
and install them all unconditionally during the image build. This is
much less code and hopefully easier to follow.
Arvados-DCO-1.1-Signed-off-by: Brett Smith <brett.smith@curii.com>
Brett Smith [Wed, 10 Jan 2024 18:33:36 +0000 (13:33 -0500)]
21367: Remove environment check
You only need for this for `arv-keepdocker` at the end of the process,
which can read from settings.conf just fine too. Even if it fails, the
developer will have the command handy to fix their environment and try
that again easily.
Arvados-DCO-1.1-Signed-off-by: Brett Smith <brett.smith@curii.com>
Lucas Di Pentima [Tue, 9 Jan 2024 22:03:05 +0000 (19:03 -0300)]
21285: Updates overview dashboard to include concurrent reqs queue names.
At the moment we have 2 queues: "api" & "tunnel", I think this change will
allow the dashboard to adapt to potential new queues (instead of hardcoding
queue names in the query)
Arvados-DCO-1.1-Signed-off-by: Lucas Di Pentima <lucas.dipentima@curii.com>
Brett Smith [Sat, 6 Jan 2024 21:00:25 +0000 (16:00 -0500)]
20846: Use Python build variables more consistently
Rather than have the virtualenv process use its own python command,
ensure PYTHON3_EXECUTABLE points to a specific minor version, and use it
throughout the entire build process.
The changes to the virtualenv manipulation with sed are meant to clean
things up with fewer commands and tighter regexps, but not make any
functional change beyond referring to a specific minor Python version.
Arvados-DCO-1.1-Signed-off-by: Brett Smith <brett.smith@curii.com>
Brett Smith [Fri, 5 Jan 2024 21:53:57 +0000 (16:53 -0500)]
21273: Build rocky8 Python packages against python39
We can no longer support the Python 3.6 that ships with rocky8. Building
against the latest appstream release is the most straightforward way to
continue building packages for the distro.
Arvados-DCO-1.1-Signed-off-by: Brett Smith <brett.smith@curii.com>
Tom Clegg [Thu, 4 Jan 2024 22:51:33 +0000 (17:51 -0500)]
21258: Ensure at least one boot failure.
With the previous approach, it was possible for all containers needing
a type4 instance to finish, and a different instance type to report a
quota error and cause the scheduler to shut down the now-unneeded
instance, all before the "guaranteed broken" node reached
TimeoutBooting. In such a case it would not be counted as a boot
failure.
To avoid this, the new approach induces boot failures on *all* type4
instances until 2x TimeoutBooting intervals have passed.
Arvados-DCO-1.1-Signed-off-by: Tom Clegg <tom@curii.com>
Brett Smith [Thu, 4 Jan 2024 19:15:43 +0000 (14:15 -0500)]
20846/21230: Remove Python transitional metapackages from the package build
The build process for this is relatively expensive (we set up a
dedicated virtualenv for each one) and not PEP 668-compliant (it tries
to upgrade packages globally). We don't need these packages anymore for
the Arvados 3.0 release. Stop building all of them.
Arvados-DCO-1.1-Signed-off-by: Brett Smith <brett.smith@curii.com>
Brett Smith [Thu, 4 Jan 2024 19:00:46 +0000 (14:00 -0500)]
20846/21230: Modernize virtualenv setup in package building
This change sets up the virtualenv earlier, then does all work inside
it, starting with installing build dependencies, to comply with PEP 668.
A couple optimizations that were easy to do as part of this work:
* We install modules in as few pip commands as possible, to reduce
the overhead of determining what's currently installed, what's
available from PyPI, etc.
* Removed a special case for CentOS 7 that we no longer need.
Arvados-DCO-1.1-Signed-off-by: Brett Smith <brett.smith@curii.com>
Peter Amstutz [Wed, 3 Jan 2024 19:40:28 +0000 (14:40 -0500)]
21278: Remove the '/search.*' to '/search-results' redirect
It produces an infinite loop and I don't think the /search endpoint is
really compatible with the /search-results endpoint anyway, and it's
less likely for people to have old hyperlinks to search results than
to projects or collections.
Arvados-DCO-1.1-Signed-off-by: Peter Amstutz <peter.amstutz@curii.com>
Brett Smith [Fri, 29 Dec 2023 16:16:42 +0000 (11:16 -0500)]
20846/18874: Update NodeJS/Yarn in debian12/ubuntu2204
This applies the change from c4d4088d3e7f3e3f896ed0bb482560ab702d5465 to
the debian12 and ubuntu2204 package build Dockerfiles. It uses a
slightly different yarn install recipe to avoid the "double ln" and
associated layer, but the end result is the same.
Refs #18874, #20846. These branches were in development in parallel, so
the changes from the former weren't applied to the latter.
Arvados-DCO-1.1-Signed-off-by: Brett Smith <brett.smith@curii.com>