diff --git a/realis.go b/realis.go index 0b37117..f66151e 100644 --- a/realis.go +++ b/realis.go @@ -111,7 +111,7 @@ type RealisConfig struct { logger *LevelLogger InsecureSkipVerify bool certspath string - clientkey, clientcert string + clientKey, clientCert string options []ClientOption debug bool trace bool @@ -125,6 +125,8 @@ var defaultBackoff = Backoff{ Jitter: 0.1, } +const APIPath = "/api" + type ClientOption func(*RealisConfig) //Config sets for options in RealisConfig. @@ -204,7 +206,7 @@ func Certspath(certspath string) ClientOption { func ClientCerts(clientKey, clientCert string) ClientOption { return func(config *RealisConfig) { - config.clientkey, config.clientcert = clientKey, clientCert + config.clientKey, config.clientCert = clientKey, clientCert } } @@ -383,15 +385,15 @@ func GetDefaultClusterFromZKUrl(zkurl string) *Cluster { } } -func GetCerts(certpath string) (*x509.CertPool, error) { +func GetCerts(certPath string) (*x509.CertPool, error) { globalRootCAs := x509.NewCertPool() - caFiles, err := ioutil.ReadDir(certpath) + caFiles, err := ioutil.ReadDir(certPath) if err != nil { return nil, err } for _, cert := range caFiles { - capathfile := filepath.Join(certpath, cert.Name()) - caCert, err := ioutil.ReadFile(capathfile) + caPathFile := filepath.Join(certPath, cert.Name()) + caCert, err := ioutil.ReadFile(caPathFile) if err != nil { return nil, err } @@ -401,7 +403,7 @@ func GetCerts(certpath string) (*x509.CertPool, error) { } // Creates a default Thrift Transport object for communications in gorealis using an HTTP Post Client -func defaultTTransport(urlstr string, timeoutms int, config *RealisConfig) (thrift.TTransport, error) { +func defaultTTransport(url string, timeoutMs int, config *RealisConfig) (thrift.TTransport, error) { jar, err := cookiejar.New(nil) if err != nil { return &thrift.THttpClient{}, errors.Wrap(err, "Error creating Cookie Jar") @@ -420,14 +422,14 @@ func defaultTTransport(urlstr string, timeoutms int, config *RealisConfig) (thri } tlsConfig.RootCAs = rootCAs } - if config.clientkey != "" && config.clientcert == "" { - return nil, fmt.Errorf("have to provide both client key,cert. Only client key provided ") + if config.clientKey != "" && config.clientCert == "" { + return nil, fmt.Errorf("have to provide both client key, cert. Only client key provided ") } - if config.clientkey == "" && config.clientcert != "" { - return nil, fmt.Errorf("have to provide both client key,cert. Only client cert provided ") + if config.clientKey == "" && config.clientCert != "" { + return nil, fmt.Errorf("have to provide both client key, cert. Only client cert provided ") } - if config.clientkey != "" && config.clientcert != "" { - cert, err := tls.LoadX509KeyPair(config.clientcert, config.clientkey) + if config.clientKey != "" && config.clientCert != "" { + cert, err := tls.LoadX509KeyPair(config.clientCert, config.clientKey) if err != nil { config.logger.Println("error occurred loading client certs and keys") return nil, err @@ -437,15 +439,20 @@ func defaultTTransport(urlstr string, timeoutms int, config *RealisConfig) (thri transport.TLSClientConfig = tlsConfig } - trans, err := thrift.NewTHttpClientWithOptions(urlstr+"/api", - thrift.THttpClientOptions{Client: &http.Client{Timeout: time.Millisecond * time.Duration(timeoutms), Transport: &transport, Jar: jar}}) + trans, err := thrift.NewTHttpClientWithOptions( + url+APIPath, + thrift.THttpClientOptions{ + Client: &http.Client{ + Timeout: time.Millisecond * time.Duration(timeoutMs), + Transport: &transport, + Jar: jar}}) if err != nil { return nil, errors.Wrap(err, "Error creating transport") } if err := trans.Open(); err != nil { - return nil, errors.Wrapf(err, "Error opening connection to %s", urlstr) + return nil, errors.Wrapf(err, "Error opening connection to %s", url) } return trans, nil diff --git a/retry.go b/retry.go index 1d11256..ca88264 100644 --- a/retry.go +++ b/retry.go @@ -133,7 +133,7 @@ func (r *realisClient) thriftCallWithRetries(thriftCall auroraThriftCall) (*auro adjusted = Jitter(duration, backoff.Jitter) } - r.logger.Printf("A retriable error occurred during thrift call, backing off for %v before retry %v\n", adjusted, curStep) + r.logger.Printf("A retryable error occurred during thrift call, backing off for %v before retry %v\n", adjusted, curStep) time.Sleep(adjusted) duration = time.Duration(float64(duration) * backoff.Factor) @@ -169,7 +169,7 @@ func (r *realisClient) thriftCallWithRetries(thriftCall auroraThriftCall) (*auro // when the server is overloaded and should be retried. All other errors that are permanent // will not be retried. if e.Err != io.EOF && !e.Temporary() { - return nil, errors.Wrap(clientErr, "Permanent connection error") + return nil, errors.Wrap(clientErr, "permanent connection error") } } } @@ -183,7 +183,7 @@ func (r *realisClient) thriftCallWithRetries(thriftCall auroraThriftCall) (*auro // If there was no client error, but the response is nil, something went wrong. // Ideally, we'll never encounter this but we're placing a safeguard here. if resp == nil { - return nil, errors.New("Response from aurora is nil") + return nil, errors.New("response from aurora is nil") } // Check Response Code from thrift and make a decision to continue retrying or not. @@ -210,7 +210,7 @@ func (r *realisClient) thriftCallWithRetries(thriftCall auroraThriftCall) (*auro // It is currently not used as a response in the scheduler so it is unknown how to handle it. default: r.logger.DebugPrintf("unhandled response code %v received from Aurora\n", responseCode) - return nil, errors.Errorf("unhandled response code from Aurora %v\n", responseCode.String()) + return nil, errors.Errorf("unhandled response code from Aurora %v", responseCode.String()) } } diff --git a/zk.go b/zk.go index dd711e0..a9eb92d 100644 --- a/zk.go +++ b/zk.go @@ -103,7 +103,7 @@ func LeaderFromZKOpts(options ...ZKOpt) (string, error) { c, _, err := zk.Connect(config.endpoints, config.timeout, func(c *zk.Conn) { c.SetLogger(config.logger) }) if err != nil { - return false, NewTemporaryError(errors.Wrap(err, "Failed to connect to Zookeeper")) + return false, NewTemporaryError(errors.Wrap(err, "failed to connect to Zookeeper")) } defer c.Close() @@ -117,7 +117,7 @@ func LeaderFromZKOpts(options ...ZKOpt) (string, error) { return false, errors.Wrapf(err, "path %s is an invalid Zookeeper path", config.path) } - return false, NewTemporaryError(errors.Wrapf(err, "Path %s doesn't exist on Zookeeper ", config.path)) + return false, NewTemporaryError(errors.Wrapf(err, "path %s doesn't exist on Zookeeper ", config.path)) } // Search for the leader through all the children in the given path @@ -134,12 +134,12 @@ func LeaderFromZKOpts(options ...ZKOpt) (string, error) { return false, errors.Wrapf(err, "path %s is an invalid Zookeeper path", childPath) } - return false, NewTemporaryError(errors.Wrap(err, "Error fetching contents of leader")) + return false, NewTemporaryError(errors.Wrap(err, "unable to fetch contents of leader")) } err = json.Unmarshal([]byte(data), serviceInst) if err != nil { - return false, NewTemporaryError(errors.Wrap(err, "Unable to unmarshall contents of leader")) + return false, NewTemporaryError(errors.Wrap(err, "unable to unmarshal contents of leader")) } // Should only be one endpoint. @@ -162,11 +162,11 @@ func LeaderFromZKOpts(options ...ZKOpt) (string, error) { } // Leader data might not be available yet, try to fetch again. - return false, NewTemporaryError(errors.New("No leader found")) + return false, NewTemporaryError(errors.New("no leader found")) }) if retryErr != nil { - config.logger.Printf("Failed to determine leader after %v attempts", config.backoff.Steps) + config.logger.Printf("failed to determine leader after %v attempts", config.backoff.Steps) return "", retryErr }