-
Notifications
You must be signed in to change notification settings - Fork 75
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Circleci project setup #291
Merged
Merged
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
3cadde8
to
505e085
Compare
Merged
aMahanna
approved these changes
Nov 21, 2023
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR configures the CircleCI build: https://app.circleci.com/pipelines/github/ArangoDB-Community/python-arango
See description of Anthony's PR which implements part of the functionality.
Python Versions
We aim to support the Python versions that come with the last two Ubuntu LTS releases.
As new Ubuntu LTS versions are being released, we'll update the config accordingly.
Additionally, we run a couple of tests with the latest available Python version. These are not mandatory to pass, but should be there to alert us in case something gets deprecated or we're using something that's too version specific.
ArangoDB versions
We offer support for all the officially supported ArangoDB versions.
Remaining Github Workflows
The Github Workflows that were used to test various Python versions and run the single server tests were removed.
The following actions remain as part of the current Github Workflow:
Although we could move them to CircleCI, these are very lightweight and can might as well run on Github for now.
Additional Changes
starter.sh
script is now available for easier local testing.single.conf
andcluster.conf
correspond to 3.11+ versions.FallbackHostResolver
has been introduced as the default host resolver for theArangoClient
. I will explain the motivation below, but this was needed in order to run the tests reliably in a cluster. Previously, we've had theRoundRobinResolver
, which would change the host quite often, in order to create some kind of load balancing. However, when multiple coordinators are involved, this can become a problem. First, it introduces subtle races. If a coordinator creates a database, the whole process has to go through the agency, during which the other coordinators are not aware of the newly created database. The Round Robin approach may cause consecutive requests to fail with 'database not found'. Secondly, this approach can sometimes make things slower by causing even more network traffic. This is counter-intuitive, but when dealing with streaming transactions, the other coordinators will identify the original coordinator which started the transaction and forward all transaction-related requests, essentially rendering the apparent load balancing useless. Lastly, it is currently the case with our driver that requests are synchronous. This means the next request is never sent unless the current one gets a response back. If a user wants to parallelize work, the usual approach would be to use multiple Python processes involving multiple clients. In that case, they would take care of load balancing themselves (by shuffling the list of coordinators between processes, for example).To be improved
Code Coverage (see DE-701). Previously, we had limited coverage reporting, based on single-server tests. Although a very good first step, I feel like this just gave us the illusion of having code coverage. Ideally, we need to unify all the coverage reports from our CircleCI jobs into one.