diff --git a/go/cmd/pserver/pserver.go b/go/cmd/pserver/pserver.go index 20094fbab4d12a3feca7e3e2d8c064300ac877b1..aa81d0432b1d4f411644e0a5b703d7ea74d144b7 100644 --- a/go/cmd/pserver/pserver.go +++ b/go/cmd/pserver/pserver.go @@ -59,7 +59,11 @@ func main() { cp, err = pserver.NewCheckpointFromFile(*checkpointPath, idx, e) if err != nil { - log.Errorf("Fetch checkpoint failed, %s", err) + if err == pserver.ErrCheckpointNotFound { + log.Infof("Could not find the pserver checkpoint.") + } else { + log.Errorf("Fetch checkpoint failed, %s", err) + } } } diff --git a/go/pserver/service.go b/go/pserver/service.go index 46738413f0a28217dac484a1a219a108790e4921..a7767afa630496bd3248cc2cd8f704f8b809d5fb 100644 --- a/go/pserver/service.go +++ b/go/pserver/service.go @@ -36,6 +36,10 @@ import ( // ElementType is the type of elements of a Parameter. type ElementType int +// ErrCheckpointNotFound indicates that the pserver checkpoint could +// not be found. +var ErrCheckpointNotFound = errors.New("checkpoint not found") + // RPC error message. const ( AlreadyInitialized = "pserver already initialized" @@ -103,6 +107,10 @@ func NewCheckpointFromFile(cpPath string, idx int, e *EtcdClient) (Checkpoint, e return nil, err } + if len(v) == 0 { + return nil, ErrCheckpointNotFound + } + var cpMeta checkpointMeta if err = json.Unmarshal(v, &cpMeta); err != nil { return nil, err