* Ported all code from Thrift 0.9.3 to Thrift 0.12.0 while backporting some fixes from gorealis v2
* Removing git.apache.org dependency from Vendor folder as this dependency has migrated to github.
* Adding github.com thrift dependency back but now it points to github.com
* Removing unnecessary files from Thrift Vendor folder and adding them to .gitignore.
* Updating dep dependencies to include Thrift 0.12.0 from github.com
* Adding changelog.
* End to end tests: Adding coverage for killinstances.
* End to end tests: Deleting instances after partition policy recovers them.
* End to end tests: Adding more coverage to the realis API.
* End to end tests: Allowing arguments to be passed to runTestMac so that '-run <test name>' can be passed in.
* End to end tests: Reducing the resources used by CreateJob test.
* End to end tests: Adding coverage for Pause and Resume update.
* End to end tests: Removed checks for Aurora_OK response as that should always be handled by the error returned by the API. Changed names to be less verbose and repetitive.
* End to end tests: Reducing watch time for instance running when creating service for reducing time it takes to run end to end test.
* Add trace level to print out response thrift objects. Allows user to control whether these are printed or not to avoid pollution.
* Using named parameters to be more explicit about what is being set for LevelLogger.
* Adding TracePrint and TracePrintln. Inlined library level prefixes.
* Detecting if the transport error was not temporary in which case we stop retrying. Changed bug where get results was being called before we checked for an error.
* Adding exception for EOF error. All EOF errors will be retried.
* Addressing race conditions that may happen when client is closed or connection is re-established.
* Adding documentation about how this particular implemantion of the realis client uses retries in scenarios where a temporary error is found.
* Bugfix: switch statements were missing fallthrough statement thus making them retry non-retriable errors. Using a list to catch cases now.
* Adding tests for CreateService, createService when the executor doesn't exist, and createJob when the executor doesn't exist. Renamed Pulse test to reflect that it's using CreateService instead of CreateJob.
* Repsonse propagate back up to caller for context for CreateJob, CreateService, and StartJobUpdate.
* Deleting PR template as Travis CI takes care of running tests and formatting tests now.
* Fixing possible race condition when passing backoff around as a pointer.
* Adding a debug logger that is turned off by default. If debug is turned on, but a logger has not been assigned, a default logger that will print to STDOUT will be created.
* Making Mutex a pointer so that there's no chance it can accidentally be copied.
* Removing a leftover helper function from before we changed how we configured the client.
* Minor changes to demonstrate how a logger can be used in conjunction to debug mode in the sample client.
* 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.
* Fixing logic that can lead to nil error being returned and retry stopping early.
* Fixing possible code path that may lead to an incorrect nil error.
* Changing incorrect license in some source files.
* Changing CreateService to mimic CreateJob by setting the batch size to the instance count.
* Changing Getcerts to GetCerts to match the style of the rest of the codebase.
* Overhauled error handling. Backoff now recognizes temporary errors and continues to retry if it finds one.
* Changed thrift function call wrapper to be more explicitly named and to perform more safety checks.
* Moved Jitter function from realis to retry.
* API code is now more uniform and follows a certain template.
* Lock added whenever a thrift call is made or when a modification is done to the connection. Note that calling ReestablishConn externally may result in some race conditions. We will move to make this function private in the near future.
* Added test for Realis session thread safety. Tested ScheduleStatus monitor. Tested monitor timing out.
* Returning nil whenever there is an error return so that there are no ambiguities.
* Using defer with unlock so that the lock is still released if a panic is invoked.