* Simplifying documentation for getting started: Removed outdated information about install Golang on different platforms and instead included a link to the official Golang website which has more up to date information. Instructions for installing docker-compose have also been added.
* Added documentation to all exported functions and structs.
* Unexported some structures and functions that were needlessly exported.
* Adding golang CI default configuration which can be useful while developing and may be turned on later in the CI.
* Moving build process in CI to xenial.
* Reducing line size. in some files and shadowing in some test cases.
* Adding Aurora URL validator in order to handle scenarios where incomplete information is passed to the client. The client will do its best to guess the missing information such as protocol and port.
* Upgraded to testify 1.3.0.
* Added configuration to fail on a non-temporary error. This is reverting to the original behavior of the retry mechanism. However, this allows the user to opt to fail in a non-temporary error.
* Bumped up version to 1.21.1
* Moving admin functions to a new file. They are still part of the same pointer receiver type.
* Removing dead code and fixing some comments to add space between backslash and comment.
* Adding set up and tear down to run tests script. It sets up a pod, runs all tests, and then tears down the pod.
* Added `--rm` to run tests Mac script.
* Removing cookie jar from transport layer as it's not needed.
* Changing all error messages to start with a lower case letter. Changing some messages around to be more descriptive.
* Adding an argument to allow the retry mechanism to stop if a timeout has been encountered. This is useful for mutating API calls. Only StartUpdate and CreateService have enabled by default stop at timeout.
* Added 2 tests for when a call goes through despite the client timing out. One is with a good payload, one is with a bad payload.
* Updating changelog with information about the error type returned.
* Adding test for duplicate metadata.
* Refactored JobUpdateStatus monitor to use a new monitor called JobUpdateQuery. Update monitor will now still continue if it does not find an update to monitor. Furthermore, it has been optimized to reduce returning payloads from the scheduler as much as possible. This is through using the GetJobUpdateSummaries API instead of JobUpdateDetails and by including a the statuses we're searching for as part of the query.
* Added documentation as to how to handle a timeout on an API request.
* Optimized GetInstancesIds to create a copy of the JobKey being passed down in order to avoid unexpected behavior. Instead of setting every variable name separately, now a JobKey array is being created.
* ZK retries have been cleaned up. We will now retry after every error
EXCEPT when we have a badly formed path.
* ZK library has been reworked with optional arguments pattern to not be
so intertwined with the cluster.json file.
* Timeout error has been re-implemented as RetryError. RetryError
behaves like a Timeout error but is used exclusively to add more context
privately. This allows us to have unit tests that check our retry
mechanism is actually retrying.
* Additional logging has been added to retry mechanisms as well as to
the Zookeeper library we use.
* Deleting permament error as it doesn't make sense. Just return a plain old error and that will be considered permanent.
* Removing double closure at as it's unmaintainable and can be error prone. Separated back offs into a generic one and a thrift call specific one.
* ZK leader finder now returns a temporary error instead of constantly no leader found and quitting. It could be that the leader info is being propagated so it's worth trying another time.
* Adding more logging to the retry.
* Wrapping lock and unlock in an anonymous function so that we can use defer on unlock such that it is called in the case of a panic.
* fixed semantics. Earlier mentioned that 'Pystachio does yet support...'. Changed now to mention 'Pystachio does not yet support...'
* fixed grammatical mistake.
* Ran gofmt on project.
* Code cleanup: Deleted multiple functions which have become stale. Removed cluster example as we replaced the need to create the Cluster object.
* Cleaned up ZK connection code by using the backoff function. Added a test to the end to end to test that we're getting the host correctly from ZK. Changed clusters test to be an outside package.
* Added LeaderFromZKURL test to end to end tests.
* Added logger to realisConfig so that users can attach their own Loggers to the client. Logger is an interface that shadows most popular logging libraries. Only Print, Println, and Printf are needed to be a realis.Logger type. Example in the client uses the std library log.
* Moved most fmt.Print* calls to be redirected to user provided logger. Logger by default is a no-op logger.
* Adding CreateService to realis interface. Uses the StartJobUpdate API to create services instead of the createJobs API.
* Bumping up version number inside client in anticipation of new release.
Some tests included for making sure the JSON blob pulled from Zookeeper
is correct.
Updated client to be able to take Zookeeper json cluster config that is
currently being used in aurora (clusters.json usually located at
/etc/aurora/cluster.json).
Changed error messages to no longer have a period at the end as that was
throwing off printing of the error.
Modified samuel's ZK library slightly to stop verbose logging using a
NoOpLogger from stackoverflow.