Fixing style issues.
This commit is contained in:
parent
07ff819e57
commit
0cdf4d8885
3 changed files with 33 additions and 26 deletions
39
realis.go
39
realis.go
|
@ -111,7 +111,7 @@ type RealisConfig struct {
|
||||||
logger *LevelLogger
|
logger *LevelLogger
|
||||||
InsecureSkipVerify bool
|
InsecureSkipVerify bool
|
||||||
certspath string
|
certspath string
|
||||||
clientkey, clientcert string
|
clientKey, clientCert string
|
||||||
options []ClientOption
|
options []ClientOption
|
||||||
debug bool
|
debug bool
|
||||||
trace bool
|
trace bool
|
||||||
|
@ -125,6 +125,8 @@ var defaultBackoff = Backoff{
|
||||||
Jitter: 0.1,
|
Jitter: 0.1,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const APIPath = "/api"
|
||||||
|
|
||||||
type ClientOption func(*RealisConfig)
|
type ClientOption func(*RealisConfig)
|
||||||
|
|
||||||
//Config sets for options in RealisConfig.
|
//Config sets for options in RealisConfig.
|
||||||
|
@ -204,7 +206,7 @@ func Certspath(certspath string) ClientOption {
|
||||||
|
|
||||||
func ClientCerts(clientKey, clientCert string) ClientOption {
|
func ClientCerts(clientKey, clientCert string) ClientOption {
|
||||||
return func(config *RealisConfig) {
|
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()
|
globalRootCAs := x509.NewCertPool()
|
||||||
caFiles, err := ioutil.ReadDir(certpath)
|
caFiles, err := ioutil.ReadDir(certPath)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
for _, cert := range caFiles {
|
for _, cert := range caFiles {
|
||||||
capathfile := filepath.Join(certpath, cert.Name())
|
caPathFile := filepath.Join(certPath, cert.Name())
|
||||||
caCert, err := ioutil.ReadFile(capathfile)
|
caCert, err := ioutil.ReadFile(caPathFile)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
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
|
// 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)
|
jar, err := cookiejar.New(nil)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return &thrift.THttpClient{}, errors.Wrap(err, "Error creating Cookie Jar")
|
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
|
tlsConfig.RootCAs = rootCAs
|
||||||
}
|
}
|
||||||
if config.clientkey != "" && config.clientcert == "" {
|
if config.clientKey != "" && config.clientCert == "" {
|
||||||
return nil, fmt.Errorf("have to provide both client key,cert. Only client key provided ")
|
return nil, fmt.Errorf("have to provide both client key, cert. Only client key provided ")
|
||||||
}
|
}
|
||||||
if config.clientkey == "" && config.clientcert != "" {
|
if config.clientKey == "" && config.clientCert != "" {
|
||||||
return nil, fmt.Errorf("have to provide both client key,cert. Only client cert provided ")
|
return nil, fmt.Errorf("have to provide both client key, cert. Only client cert provided ")
|
||||||
}
|
}
|
||||||
if config.clientkey != "" && config.clientcert != "" {
|
if config.clientKey != "" && config.clientCert != "" {
|
||||||
cert, err := tls.LoadX509KeyPair(config.clientcert, config.clientkey)
|
cert, err := tls.LoadX509KeyPair(config.clientCert, config.clientKey)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
config.logger.Println("error occurred loading client certs and keys")
|
config.logger.Println("error occurred loading client certs and keys")
|
||||||
return nil, err
|
return nil, err
|
||||||
|
@ -437,15 +439,20 @@ func defaultTTransport(urlstr string, timeoutms int, config *RealisConfig) (thri
|
||||||
transport.TLSClientConfig = tlsConfig
|
transport.TLSClientConfig = tlsConfig
|
||||||
}
|
}
|
||||||
|
|
||||||
trans, err := thrift.NewTHttpClientWithOptions(urlstr+"/api",
|
trans, err := thrift.NewTHttpClientWithOptions(
|
||||||
thrift.THttpClientOptions{Client: &http.Client{Timeout: time.Millisecond * time.Duration(timeoutms), Transport: &transport, Jar: jar}})
|
url+APIPath,
|
||||||
|
thrift.THttpClientOptions{
|
||||||
|
Client: &http.Client{
|
||||||
|
Timeout: time.Millisecond * time.Duration(timeoutMs),
|
||||||
|
Transport: &transport,
|
||||||
|
Jar: jar}})
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, errors.Wrap(err, "Error creating transport")
|
return nil, errors.Wrap(err, "Error creating transport")
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := trans.Open(); err != nil {
|
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
|
return trans, nil
|
||||||
|
|
8
retry.go
8
retry.go
|
@ -133,7 +133,7 @@ func (r *realisClient) thriftCallWithRetries(thriftCall auroraThriftCall) (*auro
|
||||||
adjusted = Jitter(duration, backoff.Jitter)
|
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)
|
time.Sleep(adjusted)
|
||||||
duration = time.Duration(float64(duration) * backoff.Factor)
|
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
|
// when the server is overloaded and should be retried. All other errors that are permanent
|
||||||
// will not be retried.
|
// will not be retried.
|
||||||
if e.Err != io.EOF && !e.Temporary() {
|
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.
|
// 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.
|
// Ideally, we'll never encounter this but we're placing a safeguard here.
|
||||||
if resp == nil {
|
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.
|
// 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.
|
// It is currently not used as a response in the scheduler so it is unknown how to handle it.
|
||||||
default:
|
default:
|
||||||
r.logger.DebugPrintf("unhandled response code %v received from Aurora\n", responseCode)
|
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())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
12
zk.go
12
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) })
|
c, _, err := zk.Connect(config.endpoints, config.timeout, func(c *zk.Conn) { c.SetLogger(config.logger) })
|
||||||
if err != nil {
|
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()
|
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, 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
|
// 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, 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)
|
err = json.Unmarshal([]byte(data), serviceInst)
|
||||||
if err != nil {
|
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.
|
// 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.
|
// 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 {
|
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
|
return "", retryErr
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue