From 22a45f34f5c20732d1b0869885c6f0c04b40fb07 Mon Sep 17 00:00:00 2001 From: john Date: Fri, 24 Jul 2026 10:26:16 +0800 Subject: [PATCH] fix: start deep search launchagent reliably --- scripts/deep-search-runtime-package.test.mjs | 3 +++ scripts/install-deep-search-runtime-prod.sh | 9 ++++++--- scripts/release-deep-search-runtime-prod.sh | 4 +++- 3 files changed, 12 insertions(+), 4 deletions(-) diff --git a/scripts/deep-search-runtime-package.test.mjs b/scripts/deep-search-runtime-package.test.mjs index fbd50ad..0c82729 100644 --- a/scripts/deep-search-runtime-package.test.mjs +++ b/scripts/deep-search-runtime-package.test.mjs @@ -19,6 +19,8 @@ test('Deep Search production runtime is isolated from Portal releases', () => { const installer = read('scripts/install-deep-search-runtime-prod.sh'); assert.match(installer, /cn\.tkmind\.memind-deep-search/); + assert.match(installer, /\/bin\/bash<\/string>/); + assert.match(installer, /WorkingDirectory<\/key>\$\{RUNTIME_BASE\}<\/string>/); assert.match(installer, /chmod 600/); assert.match(installer, /openssl rand -hex 32/); @@ -27,5 +29,6 @@ test('Deep Search production runtime is isolated from Portal releases', () => { assert.match(release, /CONFIRMED_CI_SHA/); assert.match(release, /shasum -a 256/); assert.match(release, /rollback/); + assert.match(release, /launchctl bootout.*label/); assert.doesNotMatch(release, /release-portal-runtime-prod/); }); diff --git a/scripts/install-deep-search-runtime-prod.sh b/scripts/install-deep-search-runtime-prod.sh index 9368483..76db93d 100644 --- a/scripts/install-deep-search-runtime-prod.sh +++ b/scripts/install-deep-search-runtime-prod.sh @@ -52,8 +52,11 @@ cat > "${PLIST}" < Label${LABEL} -ProgramArguments${RUNTIME_BASE}/current/scripts/run-deep-search-prod.sh -WorkingDirectory${RUNTIME_BASE}/current +ProgramArguments + /bin/bash + ${RUNTIME_BASE}/current/scripts/run-deep-search-prod.sh + +WorkingDirectory${RUNTIME_BASE} EnvironmentVariables DEEP_SEARCH_RUNTIME_BASE${RUNTIME_BASE} NODE_BIN${NODE_BIN} @@ -74,7 +77,7 @@ launchctl enable "${GUI}/${LABEL}" launchctl kickstart -k "${GUI}/${LABEL}" for _ in $(seq 1 30); do - if curl -fsS --max-time 2 "http://127.0.0.1:20100/health" >/dev/null; then + if curl -fsS --max-time 2 "http://127.0.0.1:20100/health" >/dev/null 2>&1; then exit 0 fi sleep 1 diff --git a/scripts/release-deep-search-runtime-prod.sh b/scripts/release-deep-search-runtime-prod.sh index 142d2cb..f79bb51 100644 --- a/scripts/release-deep-search-runtime-prod.sh +++ b/scripts/release-deep-search-runtime-prod.sh @@ -143,6 +143,7 @@ shasum -a 256 -c "$(basename "${sha_file}")" tar -xzf "${archive}" -C "${release_dir}" rollback() { + launchctl bootout "${gui}/${label}" >/dev/null 2>&1 || true if [[ -n "${previous_target}" && -d "${previous_target}" ]]; then ln -sfn "${previous_target}" "${current_link}" else @@ -150,9 +151,10 @@ rollback() { fi if [[ -f "${backup_dir}/launchagent.plist" ]]; then cp "${backup_dir}/launchagent.plist" "${plist}" - launchctl bootout "${gui}/${label}" >/dev/null 2>&1 || true launchctl bootstrap "${gui}" "${plist}" >/dev/null 2>&1 || true launchctl kickstart -k "${gui}/${label}" >/dev/null 2>&1 || true + else + rm -f "${plist}" fi } trap rollback ERR