Skip to content

Commit 0522282

Browse files
authored
Merge pull request #8 from Point72/tkp/initbm
Miscellaneous fixes and cleanup for benchmark servers
2 parents f8aad74 + 47781c8 commit 0522282

4 files changed

Lines changed: 32 additions & 7 deletions

File tree

.github/workflows/benchmarks.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -131,8 +131,8 @@ jobs:
131131
--commits "${{ github.event.inputs.commit_range || 'HEAD^!' }}" \
132132
--push
133133
134-
- name: Cleanup on failure
135-
if: failure()
134+
- name: Cleanup servers
135+
if: always()
136136
env:
137137
HCLOUD_TOKEN: ${{ secrets.HCLOUD_TOKEN }}
138138
run: |

csp_benchmarks/hetzner/cli.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ def run_benchmarks(args: argparse.Namespace) -> int:
4545
)
4646

4747
manager = HetznerServerManager(token=token, config=server_config)
48+
server = None
4849

4950
try:
5051
# Check if server already exists
@@ -77,9 +78,12 @@ def run_benchmarks(args: argparse.Namespace) -> int:
7778
return 1
7879

7980
finally:
80-
if not args.keep_server and server:
81+
if not args.keep_server and server is not None:
8182
logger.info("Cleaning up server...")
82-
manager.delete_server(server)
83+
try:
84+
manager.delete_server(server)
85+
except Exception as cleanup_error:
86+
logger.error(f"Failed to cleanup server: {cleanup_error}")
8387

8488

8589
def cleanup_servers(args: argparse.Namespace) -> int:

csp_benchmarks/hetzner/runner.py

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -136,10 +136,34 @@ def _scp_from_server(self, remote_path: str, local_path: str) -> None:
136136

137137
subprocess.run(scp_args, check=True)
138138

139+
def _wait_for_ssh(self, timeout: int = 120, interval: int = 10) -> None:
140+
"""Wait for SSH to become available on the server."""
141+
import time
142+
143+
logger.info("Waiting for SSH to become available...")
144+
start_time = time.time()
145+
146+
while time.time() - start_time < timeout:
147+
try:
148+
result = self._run_ssh_command("echo 'SSH ready'", check=False)
149+
if result.returncode == 0:
150+
logger.info("SSH connection established")
151+
return
152+
except Exception:
153+
pass
154+
155+
logger.debug(f"SSH not ready, retrying in {interval}s...")
156+
time.sleep(interval)
157+
158+
raise TimeoutError(f"SSH not available after {timeout} seconds")
159+
139160
def _setup_environment(self) -> None:
140161
"""Set up the benchmark environment on the remote server."""
141162
logger.info("Setting up benchmark environment...")
142163

164+
# Wait for SSH to become available
165+
self._wait_for_ssh()
166+
143167
# Determine machine name based on server type
144168
server_type = self.server.server_type.name
145169
machine_name = f"hetzner-{server_type}"

csp_benchmarks/hetzner/server.py

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -88,11 +88,8 @@ def create_server(self, wait_for_ready: bool = True) -> BoundServer:
8888
)
8989

9090
server = response.server
91-
root_password = response.root_password
9291

9392
logger.info(f"Server created: {server.name} (ID: {server.id})")
94-
if root_password:
95-
logger.info(f"Root password: {root_password}")
9693

9794
if wait_for_ready:
9895
self._wait_for_server_ready(server)

0 commit comments

Comments
 (0)