|
15 | 15 | import os |
16 | 16 | import signal |
17 | 17 | import subprocess |
| 18 | +import threading |
18 | 19 | import time |
19 | 20 | from collections.abc import Sequence |
20 | 21 | from pathlib import Path |
|
84 | 85 | "joins.td", |
85 | 86 | "jsonb.td", |
86 | 87 | "list.td", |
87 | | - "load-generator-key-value.td", |
| 88 | + # Flaky on Azure: https://buildkite.com/materialize/nightly/builds/11906#019661aa-2f41-43e1-b08f-6195c66a7ab9 |
| 89 | + # "load-generator-key-value.td", |
88 | 90 | "logging.td", |
89 | 91 | "map.td", |
90 | 92 | "multijoins.td", |
@@ -142,6 +144,25 @@ def get_tag(tag: str | None) -> str: |
142 | 144 | return tag or f"v{ci_util.get_mz_version()}--pr.g{git.rev_parse('HEAD')}" |
143 | 145 |
|
144 | 146 |
|
| 147 | +def build_mz_debug_async(env: dict[str, str] | None = None) -> threading.Thread: |
| 148 | + def run(): |
| 149 | + spawn.capture( |
| 150 | + [ |
| 151 | + "cargo", |
| 152 | + "build", |
| 153 | + "--bin", |
| 154 | + "mz-debug", |
| 155 | + ], |
| 156 | + cwd=MZ_ROOT, |
| 157 | + stderr=subprocess.STDOUT, |
| 158 | + env=env, |
| 159 | + ) |
| 160 | + |
| 161 | + thread = threading.Thread(target=run) |
| 162 | + thread.start() |
| 163 | + return thread |
| 164 | + |
| 165 | + |
145 | 166 | def run_mz_debug(env: dict[str, str] | None = None) -> None: |
146 | 167 | print("--- Running mz-debug") |
147 | 168 | try: |
@@ -686,7 +707,10 @@ def workflow_aws_temporary(c: Composition, parser: WorkflowArgumentParser) -> No |
686 | 707 | tag = get_tag(args.tag) |
687 | 708 | path = MZ_ROOT / "test" / "terraform" / "aws-temporary" |
688 | 709 | aws = AWS(path) |
| 710 | + mz_debug_build_thread: threading.Thread | None = None |
689 | 711 | try: |
| 712 | + if args.run_mz_debug: |
| 713 | + mz_debug_build_thread = build_mz_debug_async() |
690 | 714 | aws.setup("aws-test", args.setup, tag) |
691 | 715 | if args.test: |
692 | 716 | print("--- Running tests") |
@@ -718,6 +742,8 @@ def workflow_aws_temporary(c: Composition, parser: WorkflowArgumentParser) -> No |
718 | 742 | aws.cleanup() |
719 | 743 |
|
720 | 744 | if args.run_mz_debug: |
| 745 | + assert mz_debug_build_thread |
| 746 | + mz_debug_build_thread.join() |
721 | 747 | run_mz_debug() |
722 | 748 |
|
723 | 749 | if args.cleanup: |
@@ -775,7 +801,10 @@ def workflow_aws_upgrade(c: Composition, parser: WorkflowArgumentParser) -> None |
775 | 801 | tag = get_tag(args.tag) |
776 | 802 | path = MZ_ROOT / "test" / "terraform" / "aws-upgrade" |
777 | 803 | aws = AWS(path) |
| 804 | + mz_debug_build_thread: threading.Thread | None = None |
778 | 805 | try: |
| 806 | + if args.run_mz_debug: |
| 807 | + mz_debug_build_thread = build_mz_debug_async() |
779 | 808 | aws.setup("aws-upgrade", args.setup, previous_tag) |
780 | 809 | aws.upgrade(tag) |
781 | 810 | if args.test: |
@@ -812,6 +841,8 @@ def workflow_aws_upgrade(c: Composition, parser: WorkflowArgumentParser) -> None |
812 | 841 | aws.cleanup() |
813 | 842 |
|
814 | 843 | if args.run_mz_debug: |
| 844 | + assert mz_debug_build_thread |
| 845 | + mz_debug_build_thread.join() |
815 | 846 | run_mz_debug() |
816 | 847 |
|
817 | 848 | if args.cleanup: |
@@ -997,7 +1028,10 @@ def workflow_gcp_temporary(c: Composition, parser: WorkflowArgumentParser) -> No |
997 | 1028 | f.write(gcp_service_account_json) |
998 | 1029 | os.environ["GOOGLE_APPLICATION_CREDENTIALS"] = str(gcloud_creds_path) |
999 | 1030 |
|
| 1031 | + mz_debug_build_thread: threading.Thread | None = None |
1000 | 1032 | try: |
| 1033 | + if args.run_mz_debug: |
| 1034 | + mz_debug_build_thread = build_mz_debug_async() |
1001 | 1035 | spawn.runv(["gcloud", "config", "set", "project", "materialize-ci"]) |
1002 | 1036 |
|
1003 | 1037 | spawn.runv( |
@@ -1398,6 +1432,8 @@ def workflow_gcp_temporary(c: Composition, parser: WorkflowArgumentParser) -> No |
1398 | 1432 | os.killpg(os.getpgid(balancerd_port_forward_process.pid), signal.SIGTERM) |
1399 | 1433 |
|
1400 | 1434 | if args.run_mz_debug: |
| 1435 | + assert mz_debug_build_thread |
| 1436 | + mz_debug_build_thread.join() |
1401 | 1437 | run_mz_debug() |
1402 | 1438 |
|
1403 | 1439 | if args.cleanup: |
@@ -1485,7 +1521,10 @@ def workflow_azure_temporary(c: Composition, parser: WorkflowArgumentParser) -> |
1485 | 1521 | env=venv_env, |
1486 | 1522 | ) |
1487 | 1523 |
|
| 1524 | + mz_debug_build_thread: threading.Thread | None = None |
1488 | 1525 | try: |
| 1526 | + if args.run_mz_debug: |
| 1527 | + mz_debug_build_thread = build_mz_debug_async() |
1489 | 1528 | if os.getenv("CI"): |
1490 | 1529 | username = os.getenv("AZURE_SERVICE_ACCOUNT_USERNAME") |
1491 | 1530 | password = os.getenv("AZURE_SERVICE_ACCOUNT_PASSWORD") |
@@ -1914,6 +1953,8 @@ def workflow_azure_temporary(c: Composition, parser: WorkflowArgumentParser) -> |
1914 | 1953 | os.killpg(os.getpgid(balancerd_port_forward_process.pid), signal.SIGTERM) |
1915 | 1954 |
|
1916 | 1955 | if args.run_mz_debug: |
| 1956 | + assert mz_debug_build_thread |
| 1957 | + mz_debug_build_thread.join() |
1917 | 1958 | run_mz_debug(env=venv_env) |
1918 | 1959 |
|
1919 | 1960 | if args.cleanup: |
|
0 commit comments