[ARVADOS] updated: 30012ed996dd5336cbfa7394234d1cbbf08a2b78

git at public.curoverse.com git at public.curoverse.com
Thu Aug 27 16:04:16 EDT 2015


Summary of changes:
 .gitignore                                         |   3 +
 doc/install/install-api-server.html.textile.liquid |   8 +-
 .../install-arv-git-httpd.html.textile.liquid      |  16 +-
 doc/install/install-keepproxy.html.textile.liquid  |  38 +++--
 .../install-shell-server.html.textile.liquid       |  95 ++++++++++++
 .../install-workbench-app.html.textile.liquid      |  46 +++---
 .../arvados/v1/virtual_machines_controller.rb      |  18 ++-
 services/api/lib/salvage_collection.rb             |  94 ++++++++++++
 services/api/script/salvage_collection.rb          |  26 ++++
 .../arvados/v1/virtual_machines_controller_test.rb |   7 +
 services/api/test/unit/salvage_collection_test.rb  | 165 +++++++++++++++++++++
 services/arv-git-httpd/auth_handler.go             |   7 +-
 services/arv-git-httpd/doc.go                      |  26 ++--
 services/arv-git-httpd/git_handler.go              |  59 ++++++++
 services/arv-git-httpd/git_handler_test.go         |  56 +++++++
 services/arv-git-httpd/main.go                     |   2 +-
 services/arv-git-httpd/server.go                   |  13 +-
 {sdk/ruby => services/login-sync}/.gitignore       |   2 +-
 services/login-sync/Gemfile                        |   7 +
 {sdk/ruby => services/login-sync}/Rakefile         |   0
 .../login-sync/arvados-login-sync.gemspec          |  18 +--
 services/login-sync/bin/arvados-login-sync         | 111 ++++++++++++++
 services/login-sync/test/binstub_new_user/useradd  |   9 ++
 services/login-sync/test/stubs.rb                  |  52 +++++++
 services/login-sync/test/test_add_user.rb          |  37 +++++
 25 files changed, 827 insertions(+), 88 deletions(-)
 create mode 100755 services/api/lib/salvage_collection.rb
 create mode 100755 services/api/script/salvage_collection.rb
 create mode 100644 services/api/test/unit/salvage_collection_test.rb
 create mode 100644 services/arv-git-httpd/git_handler.go
 create mode 100644 services/arv-git-httpd/git_handler_test.go
 copy {sdk/ruby => services/login-sync}/.gitignore (52%)
 create mode 100644 services/login-sync/Gemfile
 copy {sdk/ruby => services/login-sync}/Rakefile (100%)
 copy sdk/ruby/arvados.gemspec => services/login-sync/arvados-login-sync.gemspec (51%)
 create mode 100755 services/login-sync/bin/arvados-login-sync
 create mode 100755 services/login-sync/test/binstub_new_user/useradd
 create mode 100644 services/login-sync/test/stubs.rb
 create mode 100644 services/login-sync/test/test_add_user.rb

  discards  7c4d45b996b744d582ccdfcc635d04c2a4bc2241 (commit)
  discards  687d75720ae2340f7907ff718ef778cf88cc63e2 (commit)
       via  30012ed996dd5336cbfa7394234d1cbbf08a2b78 (commit)
       via  7d972883c71002a4ef11a7f85b47311b48847fa3 (commit)
       via  42c4ef158ac51f01f071a285e4a131acbf753ab9 (commit)
       via  deaf93e06ddfb5346f0492f99f441aa4734e6bf5 (commit)
       via  9259c169b6254ea581fcdcb18e1cdbe9b9fbea1e (commit)
       via  8e17ce539b4a90711f4a8059a0eff11b9c64207b (commit)
       via  4b8da3c9e3a48820ae3b1538103eda0282118392 (commit)
       via  bb7be2d3e49876a74fddb76260f3eac07bf0a431 (commit)
       via  7fc67e3f9bfd12058e6f3d86d995704ed8962a8b (commit)
       via  a1379fdd1f825c22a3ada0a2c085a1b0121ce89a (commit)
       via  f2afe64c25d1b3e79b38972e69104431a2587935 (commit)
       via  cf2d5c1b966cae7d5023ff482891c4ea7e767de4 (commit)
       via  a9359cd6ff10866acc943889ee77ab3f971dfa4e (commit)
       via  51a185e0f13ec3b2c376d3229c56d012dc91a04a (commit)
       via  51e6fbab8d08a5a92fc08c552f841a84bccbe0d6 (commit)
       via  8c1005ef92cffff5a4a9321f3b62da715b141c3d (commit)
       via  f71873ca6ec9969a90242a1c4d391770cabce1c2 (commit)
       via  ef8f43b830273dd54ae75f6a3823a946a455c2b3 (commit)
       via  1ca973446ddf0094cd563a7af63f4e3078f5b772 (commit)
       via  a8b431b5cfccd36995514560f965b4943ac93c6b (commit)
       via  36b1667a9b2ab888a80e84b6ecd75403c8f6782c (commit)
       via  2a6a3720271a12bc8a47928ade5b2c641514ca44 (commit)
       via  d78a90009ca25da4f8cfa75672df0b5bd77cabfe (commit)
       via  54819dd75fb929acfab581890dd1c8ee17cccf3e (commit)
       via  2656de63a9531f23aea840f6cb92e0cdc803599f (commit)
       via  2c9b40bdc8acd7fdd906c80e2c7f44abfb720de3 (commit)
       via  e513251f7b0f6acdc0c0d6df5792c18358030221 (commit)
       via  6feefc59c459d778046a83cb29178afc04acdf1c (commit)
       via  b5a7183d43ca4607fdc259267087e7f795d14de2 (commit)
       via  9f277b55034436e3a4ed251e4e86ea088adef20e (commit)
       via  a99c7bb0683175f2e8d365b7439e64a21f6cdb31 (commit)
       via  9494d7df964f24d7d8d53a09233d696d4ffcc234 (commit)
       via  a53d5ecd720cebfe1d81c077996cd2107ed80359 (commit)
       via  6e5158294c7e19af9031fc43fefc21275e758911 (commit)
       via  1de4f2fbc12c840726bc340792a73814818f3faa (commit)
       via  b20aa99b4356a2afa092bb355a0db78b0b8f711f (commit)
       via  647c3bac741b56ce16c7e22ab2d462725a34198d (commit)
       via  96b2b2fef69eaad2da73c1c5a0ee01f939089e15 (commit)
       via  381951637e6688e1868fae9b0642411f5cd1c223 (commit)
       via  65f76d01b775c944d2ef6c1673633adb6229d9d8 (commit)
       via  21f6342de550d985db7e2d6964af2ad0f8405406 (commit)
       via  3c068341659783d0d7132f92b14c05c07830d5b2 (commit)
       via  a25971cae157b6bc40037e391db226da36dc9b30 (commit)
       via  446868283108deda5510f4419b4065d254a4c5a8 (commit)
       via  3987bcc3f5f6acf9207e94049561c632b454f38a (commit)
       via  42e27f90df96881d22e365af7069f36c4538cf07 (commit)
       via  749b308236ab70cd15088fcb81d093c9c5e8d30b (commit)
       via  636d833ed4206ffe44e5e9b9b9100ac9d82bc603 (commit)
       via  08a10afd0681a04e5bae019870d636d49c3dc223 (commit)
       via  a0daf49f4231d5b4ec6a8a00bfa0aac1ce69cde8 (commit)
       via  ca35c58c19b28dcdbbff71fe3da0ee16ca760673 (commit)
       via  07f2ff368aa089e4f128578c49287d40d84dfcdf (commit)
       via  687a5246e161ef1d191264d3b579271bc834223c (commit)

This update added new revisions after undoing existing revisions.  That is
to say, the old revision is not a strict subset of the new revision.  This
situation occurs when you --force push a change and generate a repository
containing something like this:

 * -- * -- B -- O -- O -- O (7c4d45b996b744d582ccdfcc635d04c2a4bc2241)
            \
             N -- N -- N (30012ed996dd5336cbfa7394234d1cbbf08a2b78)

When this happens we assume that you've already had alert emails for all
of the O revisions, and so we here report only the revisions in the N
branch from the common base, B.

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.


commit 30012ed996dd5336cbfa7394234d1cbbf08a2b78
Author: Tom Clegg <tom at curoverse.com>
Date:   Sun Aug 23 20:05:43 2015 -0400

    6997: Avoid unnecessarily inefficient dirent sorting (and a mismatch between index and store/fetch logic) by doing a custom traversal.

diff --git a/services/keepstore/volume_unix.go b/services/keepstore/volume_unix.go
index 7c8e40c..a7ad6f9 100644
--- a/services/keepstore/volume_unix.go
+++ b/services/keepstore/volume_unix.go
@@ -9,6 +9,7 @@ import (
 	"log"
 	"os"
 	"path/filepath"
+	"regexp"
 	"strconv"
 	"strings"
 	"sync"
@@ -167,6 +168,8 @@ func (v *UnixVolume) Status() *VolumeStatus {
 	return &VolumeStatus{v.root, devnum, free, used}
 }
 
+var blockDirRe = regexp.MustCompile(`^[0-9a-f]+$`)
+
 // IndexTo writes (to the given Writer) a list of blocks found on this
 // volume which begin with the specified prefix. If the prefix is an
 // empty string, IndexTo writes a complete list of blocks.
@@ -182,31 +185,54 @@ func (v *UnixVolume) Status() *VolumeStatus {
 //     e4de7a2810f5554cd39b36d8ddb132ff+67108864 1388701136
 //
 func (v *UnixVolume) IndexTo(prefix string, w io.Writer) error {
-	return filepath.Walk(v.root,
-		func(path string, info os.FileInfo, err error) error {
-			if err != nil {
-				log.Printf("%s: IndexTo Walk error at %s: %s",
-					v, path, err)
-				return nil
-			}
-			basename := filepath.Base(path)
-			if info.IsDir() &&
-				!strings.HasPrefix(basename, prefix) &&
-				!strings.HasPrefix(prefix, basename) {
-				// Skip directories that do not match
-				// prefix. We know there is nothing
-				// interesting inside.
-				return filepath.SkipDir
+	var lastErr error = nil
+	rootdir, err := os.Open(v.root)
+	if err != nil {
+		return err
+	}
+	defer rootdir.Close()
+	for {
+		names, err := rootdir.Readdirnames(1)
+		if err == io.EOF {
+			return lastErr
+		} else if err != nil {
+			return err
+		}
+		if !strings.HasPrefix(names[0], prefix) && !strings.HasPrefix(prefix, names[0]) {
+			// prefix excludes all blocks stored in this dir
+			continue
+		}
+		if !blockDirRe.MatchString(names[0]) {
+			continue
+		}
+		blockdirpath := filepath.Join(v.root, names[0])
+		blockdir, err := os.Open(blockdirpath)
+		if err != nil {
+			log.Print("Error reading ", blockdirpath, ": ", err)
+			lastErr = err
+			continue
+		}
+		for {
+			fileInfo, err := blockdir.Readdir(1)
+			if err == io.EOF {
+				break
+			} else if err != nil {
+				log.Print("Error reading ", blockdirpath, ": ", err)
+				lastErr = err
+				break
 			}
-			if info.IsDir() ||
-				!IsValidLocator(basename) ||
-				!strings.HasPrefix(basename, prefix) {
-				return nil
+			name := fileInfo[0].Name()
+			if !strings.HasPrefix(name, prefix) {
+				continue
 			}
-			_, err = fmt.Fprintf(w, "%s+%d %d\n",
-				basename, info.Size(), info.ModTime().Unix())
-			return err
-		})
+			_, err = fmt.Fprint(w,
+				name,
+				"+", fileInfo[0].Size(),
+				" ", fileInfo[0].ModTime().Unix(),
+				"\n")
+		}
+		blockdir.Close()
+	}
 }
 
 func (v *UnixVolume) Delete(loc string) error {

-----------------------------------------------------------------------


hooks/post-receive
-- 




More information about the arvados-commits mailing list