Repository navigation
Expand file tree
/
Copy pathjustfile_helpers
More file actions
47 lines (42 loc) · 1.7 KB
/
Copy pathjustfile_helpers
File metadata and controls
47 lines (42 loc) · 1.7 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
_lint version="" fmt-flag="" clippy-flag="":
cargo +nightly{{version}} fmt --all {{fmt-flag}}
cargo +nightly{{version}} clippy --workspace --all-targets -- {{clippy-flag}}
_doc version="":
cargo +nightly{{version}} doc --no-deps
# Log a message to stderr.
_log message:
@echo "-> [$(date +"%Y-%m-%d %H:%M:%S")] {{message}}" 1>&2;
# Wait for Stratus to start.
_wait_for_stratus port="3000":
#!/bin/bash
just _log "Waiting 600 seconds for Stratus on port {{port}} to start"
wait-service --tcp 0.0.0.0:{{port}} -t 600 -- echo
if [ $? -eq 0 ]; then
just _log "Stratus on port {{port}} started"
else
just _log "Stratus on port {{port}} did not start fast enough"
cat stratus.log
exit 255
fi
_wait_for_stratus_finish port="3000":
#!/bin/bash
while nc -z localhost {{port}}; do
sleep 0.1 # wait for 1/10 of the second before check again
done
# Wait for a previous Stratus instance to release its RocksDB lock before starting a new one.
_wait_for_rocksdb_lock *args="":
#!/bin/bash
prefix=""
for arg in "$@"; do
case "$arg" in --rocks-path-prefix=*) prefix="${arg#--rocks-path-prefix=}" ;; esac
done
[ -n "$prefix" ] || exit 0
lock_file="${prefix}-rocksdb/LOCK"
for attempt in $(seq 1 30); do
[ ! -e "$lock_file" ] && exit 0
python3.12 -c 'import fcntl, os, sys; fd = os.open(sys.argv[1], os.O_RDWR); fcntl.lockf(fd, fcntl.LOCK_EX | fcntl.LOCK_NB)' "$lock_file" 2>/dev/null && exit 0
just _log "Waiting for previous Stratus instance to release ${prefix}-rocksdb (${attempt}/30)"
sleep 1
done
just _log "Error: ${lock_file} still held by a previous Stratus instance"
exit 1