X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/244159419c42341baeb388236ad29cc546b7eca1..7178ac911e7b160c1348da404b5aa07b9829d3c8:/services/keepstore/keepstore.go diff --git a/services/keepstore/keepstore.go b/services/keepstore/keepstore.go index 9556185fc0..06054f5205 100644 --- a/services/keepstore/keepstore.go +++ b/services/keepstore/keepstore.go @@ -34,10 +34,6 @@ const MIN_FREE_KILOBYTES = BLOCKSIZE / 1024 var PROC_MOUNTS = "/proc/mounts" -// The Keep VolumeManager maintains a list of available volumes. -// Initialized by the --volumes flag (or by FindKeepVolumes). -var KeepVM VolumeManager - // enforce_permissions controls whether permission signatures // should be enforced (affecting GET and DELETE requests). // Initialized by the --enforce-permissions flag. @@ -67,6 +63,7 @@ type KeepError struct { var ( BadRequestError = &KeepError{400, "Bad Request"} + UnauthorizedError = &KeepError{401, "Unauthorized"} CollisionError = &KeepError{500, "Collision"} RequestHashError = &KeepError{422, "Hash mismatch in request"} PermissionError = &KeepError{403, "Forbidden"} @@ -83,6 +80,24 @@ func (e *KeepError) Error() string { return e.ErrMsg } +// ======================== +// Internal data structures +// +// These global variables are used by multiple parts of the +// program. They are good candidates for moving into their own +// packages. + +// The Keep VolumeManager maintains a list of available volumes. +// Initialized by the --volumes flag (or by FindKeepVolumes). +var KeepVM VolumeManager + +// The pull list manager is a singleton pull list (a list of blocks +// that the current keepstore process should be pulling from remote +// keepstore servers in order to increase data replication) with +// atomic update methods that are safe to use from multiple +// goroutines. +var pullmgr *BlockWorkList + // TODO(twp): continue moving as much code as possible out of main // so it can be effectively tested. Esp. handling and postprocessing // of command line flags (identifying Keep volumes and initializing