-
Notifications
You must be signed in to change notification settings - Fork 1.1k
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
[WIP] framework/db: introduce a new MySQL table based distributed lock #8968
Conversation
This is largely WIP and experimental, at this point I'm only looking for automated tests which are easier done via a PR, I'm not looking for any feedback and review - thanks. @blueorangutan package |
@blueorangutan package |
@rohityadavcloud a [SL] Jenkins job has been kicked to build packages. It will be bundled with KVM, XenServer and VMware SystemVM templates. I'll keep you posted as I make progress. |
Packaging result [SF]: ✔️ el7 ✔️ el8 ✔️ el9 ✔️ debian ✔️ suse15. SL-JID 9411 |
@blueorangutan test matrix |
@rohityadavcloud a [SL] Trillian-Jenkins matrix job (centos7 mgmt + xenserver71, rocky8 mgmt + vmware67u3, centos7 mgmt + kvmcentos7) has been kicked to run smoke tests |
[SF] Trillian Build Failed (tid-9995) |
[SF] Trillian Build Failed (tid-9991) |
[SF] Trillian Build Failed (tid-9993) |
@blueorangutan package |
@rohityadavcloud a [SL] Jenkins job has been kicked to build packages. It will be bundled with KVM, XenServer and VMware SystemVM templates. I'll keep you posted as I make progress. |
Packaging result [SF]: ✔️ el7 ✔️ el8 ✔️ el9 ✔️ debian ✔️ suse15. SL-JID 9412 |
@blueorangutan test matrix |
@rohityadavcloud a [SL] Trillian-Jenkins matrix job (centos7 mgmt + xenserver71, rocky8 mgmt + vmware67u3, centos7 mgmt + kvmcentos7) has been kicked to run smoke tests |
[SF] Trillian Build Failed (tid-10003) |
[SF] Trillian Build Failed (tid-10001) |
Codecov ReportAttention: Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## 4.19 #8968 +/- ##
============================================
- Coverage 14.96% 14.96% -0.01%
+ Complexity 10995 10989 -6
============================================
Files 5373 5373
Lines 468989 468920 -69
Branches 61009 57594 -3415
============================================
- Hits 70191 70164 -27
+ Misses 391019 390993 -26
+ Partials 7779 7763 -16
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Sentry. |
@blueorangutan test matrix |
@blueorangutan test alma8 vmware-70u3 |
@rohityadavcloud a [SL] Trillian-Jenkins test job (alma8 mgmt + vmware-70u3) has been kicked to run smoke tests |
@blueorangutan test alma8 kvm-alma8 |
@rohityadavcloud a [SL] Trillian-Jenkins test job (alma8 mgmt + kvm-alma8) has been kicked to run smoke tests |
[SF] Trillian Build Failed (tid-10028) |
[SF] Trillian test result (tid-10005)
|
[SF] Trillian test result (tid-10025)
|
Cleanup old mac address handling code to use JDK11 lib instead of hacks. Also really strange to see some basic string parsing code was written by hand, replaced with Long.parseValue(str, 16) to convert hex string to long. Signed-off-by: Rohit Yadav <[email protected]>
This introduces a MySQL innodb table based distributed lock which can be used by one or more management server and its threads. This removes usage of MySQL server provided locking functions (GET_LOCK, RELEASE_LOCK) which are not replicated or supported currently by any MySQL clustering solutions. This would be the first main step in having CloudStack to work with a MySQL clustering solution such as InnoDB cluster, Percona Xtradb cluster, MariaDB galera cluster. There may be other changes required which can be found in due course if this feature works at scale. Signed-off-by: Rohit Yadav <[email protected]>
fb82e35
to
9830bbe
Compare
@blueorangutan package |
@rohityadavcloud a [SL] Jenkins job has been kicked to build packages. It will be bundled with KVM, XenServer and VMware SystemVM templates. I'll keep you posted as I make progress. |
Packaging result [SF]: ✔️ el7 ✔️ el8 ✔️ el9 ✔️ debian ✔️ suse15. SL-JID 9446 |
@blueorangutan test matrix |
@rohityadavcloud a [SL] Trillian-Jenkins matrix job (centos7 mgmt + xenserver71, rocky8 mgmt + vmware67u3, centos7 mgmt + kvmcentos7) has been kicked to run smoke tests |
[SF] Trillian Build Failed (tid-10058) |
[SF] Trillian Build Failed (tid-10060) |
@blueorangutan test matrix |
@rohityadavcloud a [SL] Trillian-Jenkins matrix job (centos7 mgmt + xenserver71, rocky8 mgmt + vmware67u3, centos7 mgmt + kvmcentos7) has been kicked to run smoke tests |
[SF] Trillian Build Failed (tid-10061) |
[SF] Trillian Build Failed (tid-10063) |
[SF] Trillian test result (tid-10059)
|
[SF] Trillian test result (tid-10062)
|
This pull request has merge conflicts. Dear author, please fix the conflicts and sync your branch with the base branch. |
Update and note - on further R&D and investigation, MySQL server turned out to not really be the bottleneck, thanks to the creators of jprofiler, yourkit, MAT and visual vm, I've more insights on what's lacking in CloudStack. While such a PR like this may still be useful for users who want an active-active MySQL setup, the real challenge is fixing the schema and application in the first place, for which I'll submit a separate PR (or PRs). For now this is on-hold, to be treated as an experiment. Closing this for now. |
This introduces a MySQL innodb table based distributed lock which can be used by one or more management server and its threads. This removes usage of MySQL server provided locking functions (GET_LOCK, RELEASE_LOCK) which are not replicated or not supported currently by any MySQL clustering solutions. This would be the first main step in having CloudStack to work with a MySQL clustering solution such as InnoDB cluster, Percona Xtradb cluster, MariaDB galera cluster. There may be other changes required which can be found in due course if this feature works at scale.
Types of changes
Feature/Enhancement Scale or Bug Severity
Feature/Enhancement Scale
Bug Severity
How Has This Been Tested?
In a local setup against simulator & mvn, in a single management server no exception were seen. Most tests need to be done such as: