Tom Clegg [Wed, 6 May 2015 16:56:34 +0000 (12:56 -0400)]
5745: Serialize writes and data reads, but allow concurrent requests
to do read-only non-data operations (like finding existing blocks and
checking free disk space) which are likely to be cached by the OS and
therefore not involve any disk activity.
Also:
* Serialize Touch and Delete.
* Make sure to close and delete tempfiles on write errors.
* Update comments.
Brett Smith [Wed, 6 May 2015 19:59:34 +0000 (15:59 -0400)]
5842: Node Manager only considers nodes busy if they're working.
Previously, Node Manager considered any non-idle node as busy,
including down nodes. This causes it to boot replacements for nodes
that are marked "down," even if that's because they're still
bootstrapping. Tighten the busy criteria to avoid booting excess
nodes.
It's easier to make this change now that Node Manager checks that
nodes have a functional Crunch worker state to be considered a
successful bootstrap. This means that any node that's down later is
in an unexpected state, and we should avoid messing with it.
Brett Smith [Wed, 6 May 2015 20:07:33 +0000 (16:07 -0400)]
5842: Node Manager shuts down booted nodes if they can't do compute work.
If a booted node is not able to do work (it's not idle or busy),
consider that a bootstrapping failure and shut it down, just like a
failure to pair with an Arvados node.
Radhika Chippada [Tue, 5 May 2015 17:53:28 +0000 (13:53 -0400)]
5735: add a new nonhtml_options parameter to render_editable_attribute method,
which can be used to pass any non data-* custom attributes that are useful in
customizing the rendering of the editable attribute.
Brett Smith [Fri, 1 May 2015 18:07:04 +0000 (14:07 -0400)]
5752: arv-copy preserves properties of docker_image links.
The properties include the image_timestamp, which tells Arvados when
the source image was created, rather than the containing collection.
The API server uses this information to determine which image is
newest.
Tom Clegg [Sat, 2 May 2015 06:16:19 +0000 (02:16 -0400)]
5893: Use git credential helpers for arv-git-httpd tests. Fix workbench helper.
The sporadic "git exited 128" errors -- very common in git2 and rare
in git1 -- seem to have been caused by git getting SIGPIPE when the
credential helper exited without consuming stdin. The solution is for
the credential helper to discard its standard input before exiting.
Brett Smith [Thu, 30 Apr 2015 22:23:21 +0000 (18:23 -0400)]
5834: Limit how much manifest text data API server will load for index.
This prevents situations where clients cause the API server to balloon
in memory use by requesting an index including many large manifest
texts. Data Manager has been doing this unwittingly lately.
Peter Amstutz [Thu, 30 Apr 2015 17:55:36 +0000 (13:55 -0400)]
5562: Add support for "Expect: 100-Continue" flow for PUT.
This tells cURL to wait for a "go ahead" from the Keep server (in the form of a
HTTP/1.1 "100 Continue" response) instead of sending the request body
immediately. This allows the server to reject the request if the request is
invalid or the server is read-only, without waiting for the client to send the
entire block.
Uses pycurl.UPLOAD to enable the 'PUT' and 'Expect: 100-continue" behavior.
Use INFILESIZE to sent Content-Length and use READFUNCTION to actually spool
the data.
Peter Amstutz [Thu, 30 Apr 2015 15:18:24 +0000 (11:18 -0400)]
ArvadosFileReader object always tries to return the exact amount of data asked for.
This is to avoid breaking stuff like gzip that assumes it always gets the exact
amount of data unless EOF. (From the Python file docs for read(): Note that
this method may call the underlying C function fread() more than once in an
effort to acquire as close to size bytes as possible.) closes #5856
5843: rename objects that contain xx_owner_uuid_name_unique constraint when they are removed from a subproject and the home project already has another object of the same type and name.
Renamed RemoteApiServerError to APIServerError and NewRemoteApiServerError to newAPIServerError.
Reworked error messages to feature error details more prominently.
These changes were requested by code review at
https://github.com/curoverse/arvados/pull/17/files
Rewrote ArvadosApiError as RemoteApiServerError:
* Name change to indicate that it's a remote error, not a local one.
* Rewrote Error() method to explicitly state that the error is remote and list all fields.
* Added server address field and use it in error response.
* Error details are now kept as a string slice rather than as a delimited string.
5826: revert the previous update that checked if readable only for pdh or uuid;
instead check as long as a collection datatype is presented with a non-empty string.
Brett Smith [Tue, 21 Apr 2015 20:48:42 +0000 (16:48 -0400)]
5490: Require exact matches in API server's default job reuse filters.
The previous default filters would reuse jobs that used any Docker
image with the matching name, and/or Arvados SDK version since the
named commit. User feedback indicates this is surprising, and they
would prefer to have behavior more like the handling around
script_version: only reuse jobs that have the latest version of a
symbolic name, or the exact specified hash.
Brett Smith [Tue, 21 Apr 2015 15:23:19 +0000 (11:23 -0400)]
5490: Test API server handling of git hash-like branch names.
If you have a branch that looks like a commit hash, different git subcommands do different things. After extended discussion on IRC, we've decided we'd like the rules to be:
* If a 40-character hex string references a commit, resolve it to that
commit.
* In other cases of ambiguity, prefer branch names over short commit
hashes.
Fortunately, this corresponds to the behavior of `git rev-list` and
our existing implementation. This commit codifies our desired
behavior with tests.