-
Notifications
You must be signed in to change notification settings - Fork 4.2k
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
airbyte-ci: concurrent java tests #31426
airbyte-ci: concurrent java tests #31426
Conversation
The latest updates on your projects. Learn more about Vercel for Git ↗︎ 1 Ignored Deployment
|
Current dependencies on/for this PR:
This comment was auto-generated by Graphite. |
a97dc31
to
b6b49f4
Compare
2300346
to
25c2a1e
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Nice!
what does this do to the logs for someone debugging a test run?
integration_tests_results = await IntegrationTests(context).run(connector_image_tar_file, normalization_tar_file) | ||
step_results.append(integration_tests_results) | ||
async with asyncer.create_task_group() as test_task_group: | ||
soon_unit_tests_results = test_task_group.soonify(UnitTests(context).run)() |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
UnitTests
doesn't depend on building and loading the connector image. You might get even better performance (due to gradle caching) if you kicked off this task as soon as the distTar is built. Possibly sooner.
Perhaps this is out of scope for this work but it would be nice to take a more concurrent approach here: kick off each of these steps ASAP and have each of them wait on their dependencies being fulfilled.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks for this suggestion, trying this out right now.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The high level logs are a bit more intertwined:
|
FWIW this honestly doesn't bother me, quite the opposite in fact. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM assuming this change actually works!
Suspect IssuesThis pull request was deployed and Sentry observed the following issues:
Did you find this useful? React with a 👍 or 👎 |
What
Closes #31444
Make java connector tests run concurrently:
Unit, integration and CAT can run in parallel.
How
Run the test steps concurrently in a task group
Performance gain
Conclusion: Concurrent execution helps drastically in speeding up the total duration. We observe that the single test steps duration is increased. It probably mean that we have CPU contention. We'll find out with #31443
🚨 User Impact 🚨
When running tests for source-postgres locally the test crashes: I believe this is a problem with the local resource: concurrent test run puts more pressure than my laptop can bear. It's not failing on the CI with 16 CPUs.
A fail fast logic would be harder to implement:
A fail fast logic would be harder to implement while using the task group: a task synchronization efforts should be done with
anyio
if we want to support a fail fast mode.I don't think it's an effort we should make in the scope of the test performance improvement.