Radhika Chippada [Thu, 7 May 2015 21:06:54 +0000 (17:06 -0400)]
5682: move logic to check if '/' in filename into each_file_spec method from files method so that it is applied in all contexts using the each_file_spec method.
Peter Amstutz [Thu, 7 May 2015 19:47:33 +0000 (15:47 -0400)]
3198: Inodes() and Operations() take InodeCache() object directly. Minimum
number of entries to retain is configurable. Added unit test of inode cache.
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.