mirror of
https://github.com/Nikolay-Shirokov/cc-1c-skills.git
synced 2026-07-11 13:33:41 +03:00
fix(db,epf): изолированный --data на каждую ibcmd-операцию
ibcmd без --data использует общий каталог автономного сервера в %LOCALAPPDATA%\standalone-server: он копит реестр/локи, и зависший процесс (например, ушедший в консольный интерактив при нехватке кред) держит его лок, блокируя ВСЕ последующие ibcmd-операции «Рабочий каталог заблокирован процессом N». Теперь каждая ibcmd-операция получает свой одноразовый --data=<temp> и удаляет его после: зависший/параллельный вызов лочит только свой каталог, не накапливается реестр («уже зарегистрирована»). База (--db-path) и чужой автономный сервер на дефолтном каталоге не затрагиваются. Реализация: ps1 — --data=$tempDir (создаётся до try, finally чистит на exit); py — свой ib_data через tempfile.mkdtemp + atexit-очистка (надёжно на любом sys.exit); stub-db-create — свой ib_data + явная очистка. Проверено: A/B через навык с живым холдером — операция с общим --data падает «заблокирован процессом N», навык (свой --data) проходит; очистка temp-каталогов подтверждена (оба порта); 1cv8-ветки не затронуты. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
# db-load-git v1.6 — Load Git changes into 1C database
|
||||
# db-load-git v1.7 — Load Git changes into 1C database
|
||||
# Source: https://github.com/Nikolay-Shirokov/cc-1c-skills
|
||||
<#
|
||||
.SYNOPSIS
|
||||
@@ -339,6 +339,7 @@ try {
|
||||
$arguments = @("infobase", "config", "import", "files") + $configFiles
|
||||
$arguments += "--base-dir=$ConfigDir", "--db-path=$InfoBasePath"
|
||||
if ($Extension) { $arguments += "--extension=$Extension" }
|
||||
$arguments += "--data=$tempDir"
|
||||
Write-Host "Running: ibcmd $($arguments -join ' ')"
|
||||
$output = & $V8Path @arguments 2>&1
|
||||
$exitCode = $LASTEXITCODE
|
||||
@@ -351,6 +352,7 @@ try {
|
||||
if ($output) { Write-Host ($output | Out-String) }
|
||||
if ($UpdateDB) {
|
||||
$applyArgs = @("infobase", "config", "apply", "--db-path=$InfoBasePath", "--force")
|
||||
$applyArgs += "--data=$tempDir"
|
||||
Write-Host "Running: ibcmd $($applyArgs -join ' ')"
|
||||
$applyOut = & $V8Path @applyArgs 2>&1
|
||||
$exitCode = $LASTEXITCODE
|
||||
|
||||
Reference in New Issue
Block a user