v.io/x/ref/services/mounttable/lib: Use verror insetad of fmt.Errof or errors.New
This change replaces uses of fmt.Errorf or errors.New with verror in
v.io/x/ref/services/mounttable/lib.
Error messages are kept as similar as possible, typically only adding the
prefix {1:}{2:} (to get the server and RPC name prefixes).
Tested:
cd v.io
v23 go test ./...
v23 test run vanadium-go-test
Change-Id: I6ee81b288868f94645de4179a7e40e41f2536c7e
diff --git a/services/mounttable/lib/mounttable.go b/services/mounttable/lib/mounttable.go
index e40e986..cc84e5b 100644
--- a/services/mounttable/lib/mounttable.go
+++ b/services/mounttable/lib/mounttable.go
@@ -6,7 +6,6 @@
import (
"encoding/json"
- "fmt"
"os"
"reflect"
"strings"
@@ -26,17 +25,27 @@
"v.io/x/lib/vlog"
)
+const pkgPath = "v.io/x/ref/services/mounttable/lib"
+
var (
- errNamingLoop = verror.Register("v.io/x/ref/services/mountable/lib", verror.NoRetry, "Loop in namespace")
- traverseTags = []mounttable.Tag{mounttable.Read, mounttable.Resolve, mounttable.Create, mounttable.Admin}
- createTags = []mounttable.Tag{mounttable.Create, mounttable.Admin}
- removeTags = []mounttable.Tag{mounttable.Admin}
- mountTags = []mounttable.Tag{mounttable.Mount, mounttable.Admin}
- resolveTags = []mounttable.Tag{mounttable.Read, mounttable.Resolve, mounttable.Admin}
- globTags = []mounttable.Tag{mounttable.Read, mounttable.Admin}
- setTags = []mounttable.Tag{mounttable.Admin}
- getTags = []mounttable.Tag{mounttable.Admin, mounttable.Read}
- allTags = []mounttable.Tag{mounttable.Read, mounttable.Resolve, mounttable.Admin, mounttable.Mount, mounttable.Create}
+ errMalformedAddress = verror.Register(pkgPath+".errMalformedAddress", verror.NoRetry, "{1:}{2:} malformed address {3} for mounted server {4}{:_}")
+ errMTDoesntMatch = verror.Register(pkgPath+".errMTDoesntMatch", verror.NoRetry, "{1:}{2:} MT doesn't match{:_}")
+ errLeafDoesntMatch = verror.Register(pkgPath+".errLeafDoesntMatch", verror.NoRetry, "{1:}{2:} Leaf doesn't match{:_}")
+ errCantDeleteRoot = verror.Register(pkgPath+".errCantDeleteRoot", verror.NoRetry, "{1:}{2:} cannot delete root node{:_}")
+ errNotEmpty = verror.Register(pkgPath+".errNotEmpty", verror.NoRetry, "{1:}{2:} cannot delete {3}: has children{:_}")
+ errNamingLoop = verror.Register(pkgPath+".errNamingLoop", verror.NoRetry, "{1:}{2:} Loop in namespace{:_}")
+)
+
+var (
+ traverseTags = []mounttable.Tag{mounttable.Read, mounttable.Resolve, mounttable.Create, mounttable.Admin}
+ createTags = []mounttable.Tag{mounttable.Create, mounttable.Admin}
+ removeTags = []mounttable.Tag{mounttable.Admin}
+ mountTags = []mounttable.Tag{mounttable.Mount, mounttable.Admin}
+ resolveTags = []mounttable.Tag{mounttable.Read, mounttable.Resolve, mounttable.Admin}
+ globTags = []mounttable.Tag{mounttable.Read, mounttable.Admin}
+ setTags = []mounttable.Tag{mounttable.Admin}
+ getTags = []mounttable.Tag{mounttable.Admin, mounttable.Read}
+ allTags = []mounttable.Tag{mounttable.Read, mounttable.Resolve, mounttable.Admin, mounttable.Mount, mounttable.Create}
)
// mountTable represents a namespace. One exists per server instance.
@@ -439,7 +448,7 @@
}
_, err := v23.NewEndpoint(epString)
if err != nil {
- return fmt.Errorf("malformed address %q for mounted server %q", epString, server)
+ return verror.New(errMalformedAddress, call.Context(), epString, server)
}
// Find/create node in namespace and add the mount.
@@ -462,10 +471,10 @@
n.mount = &mount{servers: newServerList(), mt: wantMT, leaf: wantLeaf}
} else {
if wantMT != n.mount.mt {
- return fmt.Errorf("MT doesn't match")
+ return verror.New(errMTDoesntMatch, call.Context())
}
if wantLeaf != n.mount.leaf {
- return fmt.Errorf("Leaf doesn't match")
+ return verror.New(errLeafDoesntMatch, call.Context())
}
}
n.mount.servers.add(server, time.Duration(ttlsecs)*time.Second)
@@ -555,7 +564,7 @@
vlog.VI(2).Infof("*********************Delete %q, %v", ms.name, deleteSubTree)
if len(ms.elems) == 0 {
// We can't delete the root.
- return fmt.Errorf("cannot delete root node")
+ return verror.New(errCantDeleteRoot, call.Context())
}
mt := ms.mt
// Find and lock the parent node.
@@ -569,7 +578,7 @@
defer n.parent.Unlock()
defer n.Unlock()
if !deleteSubTree && len(n.children) > 0 {
- return fmt.Errorf("cannot delete %s: has children", ms.name)
+ return verror.New(errNotEmpty, call.Context(), ms.name)
}
delete(n.parent.children, ms.elems[len(ms.elems)-1])
return nil
diff --git a/services/mounttable/lib/neighborhood.go b/services/mounttable/lib/neighborhood.go
index 034867e..a757414 100644
--- a/services/mounttable/lib/neighborhood.go
+++ b/services/mounttable/lib/neighborhood.go
@@ -5,7 +5,6 @@
package mounttable
import (
- "errors"
"net"
"strconv"
"strings"
@@ -28,6 +27,15 @@
mdns "github.com/presotto/go-mdns-sd"
)
+var (
+ errNoUsefulAddresses = verror.Register(pkgPath+".errNoUsefulAddresses", verror.NoRetry, "{1:}{2:} neighborhood passed no useful addresses{:_}")
+ errCantFindPort = verror.Register(pkgPath+".errCantFindPort", verror.NoRetry, "{1:}{2:} neighborhood couldn't determine a port to use{:_}")
+ errDoesntImplementMount = verror.Register(pkgPath+".errDoesntImplementMount", verror.NoRetry, "{1:}{2:} this server does not implement Mount{:_}")
+ errDoesntImplementUnmount = verror.Register(pkgPath+".errDoesntImplementUnmount", verror.NoRetry, "{1:}{2:} this server does not implement Unmount{:_}")
+ errDoesntImplementDelete = verror.Register(pkgPath+".errDoesntImplementDelete", verror.NoRetry, "{1:}{2:} this server does not implement Delete{:_}")
+ errDoesntImplementSetPermissions = verror.Register(pkgPath+".errDoesntImplementSetPermissions", verror.NoRetry, "{1:}{2:} this server does not implement SetPermissions{:_}")
+)
+
const addressPrefix = "address:"
// neighborhood defines a set of machines on the same multicast media.
@@ -83,10 +91,10 @@
}
}
if txt == nil {
- return nil, errors.New("neighborhood passed no useful addresses")
+ return nil, verror.New(errNoUsefulAddresses, nil)
}
if port == 0 {
- return nil, errors.New("neighborhood couldn't determine a port to use")
+ return nil, verror.New(errCantFindPort, nil)
}
// Start up MDNS, subscribe to the vanadium service, and add us as a vanadium service provider.
@@ -231,18 +239,18 @@
}
// Mount not implemented.
-func (ns *neighborhoodService) Mount(_ rpc.ServerCall, _ string, _ uint32, _ naming.MountFlag) error {
- return errors.New("this server does not implement Mount")
+func (ns *neighborhoodService) Mount(call rpc.ServerCall, _ string, _ uint32, _ naming.MountFlag) error {
+ return verror.New(errDoesntImplementMount, call.Context())
}
// Unmount not implemented.
-func (*neighborhoodService) Unmount(_ rpc.ServerCall, _ string) error {
- return errors.New("this server does not implement Unmount")
+func (*neighborhoodService) Unmount(call rpc.ServerCall, _ string) error {
+ return verror.New(errDoesntImplementUnmount, call.Context())
}
// Delete not implemented.
-func (*neighborhoodService) Delete(_ rpc.ServerCall, _ bool) error {
- return errors.New("this server does not implement Delete")
+func (*neighborhoodService) Delete(call rpc.ServerCall, _ bool) error {
+ return verror.New(errDoesntImplementDelete, call.Context())
}
// Glob__ implements rpc.AllGlobber
@@ -283,7 +291,7 @@
}
func (*neighborhoodService) SetPermissions(call rpc.ServerCall, acl access.Permissions, etag string) error {
- return errors.New("this server does not implement SetPermissions")
+ return verror.New(errDoesntImplementSetPermissions, call.Context())
}
func (*neighborhoodService) GetPermissions(call rpc.ServerCall) (acl access.Permissions, etag string, err error) {