From 0cbee78b405e25cf2bbd16191549521b86ef90c5 Mon Sep 17 00:00:00 2001 From: Christian Schwarz Date: Sat, 30 Sep 2017 16:31:55 +0200 Subject: [PATCH] fix unreachable code & missing stringer-generated code --- cmd/config_mapfilter.go | 1 - cmd/config_parse.go | 15 ++------------- cmd/helpers.go | 4 ++-- cmd/replication.go | 3 +-- logger/datastructures.go | 2 +- logger/logger.go | 2 +- rpc/frame_layer.go | 3 ++- rpc/frametype_string.go | 27 +++++++++++++++++++++++++++ rpc/local.go | 1 - rpc/server.go | 1 - rpc/status_string.go | 17 +++++++++++++++++ zfs/versions.go | 1 - 12 files changed, 53 insertions(+), 24 deletions(-) create mode 100644 rpc/frametype_string.go create mode 100644 rpc/status_string.go diff --git a/cmd/config_mapfilter.go b/cmd/config_mapfilter.go index 1a30f00..4424550 100644 --- a/cmd/config_mapfilter.go +++ b/cmd/config_mapfilter.go @@ -111,7 +111,6 @@ func (m DatasetMapFilter) Map(source *zfs.DatasetPath) (target *zfs.DatasetPath, mi, hasMapping := m.mostSpecificPrefixMapping(source) if !hasMapping { return nil, nil - return } me := m.entries[mi] diff --git a/cmd/config_parse.go b/cmd/config_parse.go index 0953869..75996e8 100644 --- a/cmd/config_parse.go +++ b/cmd/config_parse.go @@ -4,9 +4,9 @@ import ( "io/ioutil" "fmt" + yaml "github.com/go-yaml/yaml" "github.com/mitchellh/mapstructure" "github.com/pkg/errors" - yaml "github.com/go-yaml/yaml" "os" ) @@ -99,7 +99,7 @@ func parseConfig(i interface{}) (c *Config, err error) { // Try to find its name namei, ok := asMap.Jobs[i]["name"] if !ok { - namei = fmt.Sprintf("", i) + namei = fmt.Sprintf("", i) } err = errors.Wrapf(err, "cannot parse job '%v'", namei) return nil, err @@ -175,9 +175,6 @@ func parseJob(c JobParsingContext, i map[string]interface{}) (j Job, err error) return nil, errors.Errorf("unknown job type '%s'", jobtype) } - panic("implementation error") - return nil, nil - } func parseConnect(i map[string]interface{}) (c RWCConnecter, err error) { @@ -194,8 +191,6 @@ func parseConnect(i map[string]interface{}) (c RWCConnecter, err error) { return nil, errors.Errorf("unknown connection type '%s'", t) } - panic("implementation error") - return } func parseInitialReplPolicy(v interface{}, defaultPolicy InitialReplPolicy) (p InitialReplPolicy, err error) { @@ -239,9 +234,6 @@ func parsePrunePolicy(v map[string]interface{}) (p PrunePolicy, err error) { return } - panic("implementation error") - return - } func parseAuthenticatedChannelListenerFactory(c JobParsingContext, v map[string]interface{}) (p AuthenticatedChannelListenerFactory, err error) { @@ -259,7 +251,4 @@ func parseAuthenticatedChannelListenerFactory(c JobParsingContext, v map[string] return } - panic("implementation error") - return - } diff --git a/cmd/helpers.go b/cmd/helpers.go index 56bc98a..937ae21 100644 --- a/cmd/helpers.go +++ b/cmd/helpers.go @@ -15,11 +15,11 @@ func ListenUnixPrivate(sockaddr *net.UnixAddr) (*net.UnixListener, error) { return nil, errors.Wrapf(err, "cannot stat(2) '%s'", sockdir) } if !sdstat.IsDir() { - return nil, errors.Errorf("%s is not a directory: %s", sockdir) + return nil, errors.Errorf("not a directory: %s", sockdir) } p := sdstat.Mode().Perm() if p&0007 != 0 { - return nil, errors.Errorf("%s must not be world-accessible (permissions are %#o)", p) + return nil, errors.Errorf("socket directory not be world-accessible: %s (permissions are %#o)", sockdir, p) } // Maybe things have not been cleaned up before diff --git a/cmd/replication.go b/cmd/replication.go index 4ecc6e9..9cd34e1 100644 --- a/cmd/replication.go +++ b/cmd/replication.go @@ -310,8 +310,7 @@ func doPull(pull PullContext) (err error) { } - panic("implementation error: this should not be reached") - return false + panic("should not be reached") }) diff --git a/logger/datastructures.go b/logger/datastructures.go index dd62b2e..f78da7b 100644 --- a/logger/datastructures.go +++ b/logger/datastructures.go @@ -47,7 +47,7 @@ func (l Level) String() string { case Error: return "error" default: - return fmt.Sprintf("%s", l) + return fmt.Sprintf("%s", string(l)) } } diff --git a/logger/logger.go b/logger/logger.go index 356dddd..e4a8f82 100644 --- a/logger/logger.go +++ b/logger/logger.go @@ -72,7 +72,7 @@ func (l *Logger) WithField(field string, val interface{}) *Logger { defer l.mtx.Unlock() if _, ok := l.fields[field]; ok { - fmt.Fprintf(os.Stderr, "%s caller overwrites field '%s'. Stack:\n%s\n", InternalErrorPrefix, string(debug.Stack())) + fmt.Fprintf(os.Stderr, "%s caller overwrites field '%s'. Stack:\n%s\n", InternalErrorPrefix, field, string(debug.Stack())) } child := &Logger{ diff --git a/rpc/frame_layer.go b/rpc/frame_layer.go index 47e5d4b..a75c15f 100644 --- a/rpc/frame_layer.go +++ b/rpc/frame_layer.go @@ -26,6 +26,7 @@ const ( FrameTypeRST FrameType = 0xff ) +//go:generate stringer -type=Status type Status uint64 const ( @@ -154,7 +155,7 @@ func (w *frameBridgingWriter) writeUntilFrameFull(b []byte) (n int, err error) { return } if w.bytesLeftToLimit == 0 { - err = errors.Errorf("exceeded limit of total %v bytes for this message") + err = errors.Errorf("message exceeds max number of allowed bytes") return } maxwrite := len(b) diff --git a/rpc/frametype_string.go b/rpc/frametype_string.go new file mode 100644 index 0000000..8fc0c68 --- /dev/null +++ b/rpc/frametype_string.go @@ -0,0 +1,27 @@ +// Code generated by "stringer -type=FrameType"; DO NOT EDIT. + +package rpc + +import "fmt" + +const ( + _FrameType_name_0 = "FrameTypeHeaderFrameTypeDataFrameTypeTrailer" + _FrameType_name_1 = "FrameTypeRST" +) + +var ( + _FrameType_index_0 = [...]uint8{0, 15, 28, 44} + _FrameType_index_1 = [...]uint8{0, 12} +) + +func (i FrameType) String() string { + switch { + case 1 <= i && i <= 3: + i -= 1 + return _FrameType_name_0[_FrameType_index_0[i]:_FrameType_index_0[i+1]] + case i == 255: + return _FrameType_name_1 + default: + return fmt.Sprintf("FrameType(%d)", i) + } +} diff --git a/rpc/local.go b/rpc/local.go index 43d6044..4f729d7 100644 --- a/rpc/local.go +++ b/rpc/local.go @@ -28,7 +28,6 @@ func (s *LocalRPC) RegisterEndpoint(name string, handler interface{}) (err error func (s *LocalRPC) Serve() (err error) { panic("local cannot serve") - return nil } func (c *LocalRPC) Call(endpoint string, in, out interface{}) (err error) { diff --git a/rpc/server.go b/rpc/server.go index 14b4521..7d7ee16 100644 --- a/rpc/server.go +++ b/rpc/server.go @@ -160,7 +160,6 @@ func (s *Server) ServeRequest() (err error) { r := NewErrorHeader(StatusRequestError, "unregistered control endpoint %s", h.Endpoint) return s.writeResponse(r) } - panic("implementation error") } ep, ok := s.endpoints[h.Endpoint] diff --git a/rpc/status_string.go b/rpc/status_string.go new file mode 100644 index 0000000..85b9f46 --- /dev/null +++ b/rpc/status_string.go @@ -0,0 +1,17 @@ +// Code generated by "stringer -type=Status"; DO NOT EDIT. + +package rpc + +import "fmt" + +const _Status_name = "StatusOKStatusRequestErrorStatusServerErrorStatusError" + +var _Status_index = [...]uint8{0, 8, 26, 43, 54} + +func (i Status) String() string { + i -= 1 + if i >= Status(len(_Status_index)-1) { + return fmt.Sprintf("Status(%d)", i+1) + } + return _Status_name[_Status_index[i]:_Status_index[i+1]] +} diff --git a/zfs/versions.go b/zfs/versions.go index 292d4ee..fb3efa7 100644 --- a/zfs/versions.go +++ b/zfs/versions.go @@ -25,7 +25,6 @@ func (t VersionType) DelimiterChar() string { default: panic(fmt.Sprintf("unexpected VersionType %#v", t)) } - return "" } type FilesystemVersion struct {