mirror of
https://github.com/Nikolay-Shirokov/cc-1c-skills.git
synced 2026-07-17 16:25:16 +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,8 +1,9 @@
|
||||
#!/usr/bin/env python3
|
||||
# db-dump-xml v1.4 — Dump 1C configuration to XML files
|
||||
# db-dump-xml v1.5 — Dump 1C configuration to XML files
|
||||
# Source: https://github.com/Nikolay-Shirokov/cc-1c-skills
|
||||
|
||||
import argparse
|
||||
import atexit
|
||||
import glob
|
||||
import json
|
||||
import os
|
||||
@@ -140,6 +141,9 @@ def main():
|
||||
if args.Extension:
|
||||
arguments.append(f"--extension={args.Extension}")
|
||||
arguments.append(args.ConfigDir)
|
||||
ib_data = tempfile.mkdtemp(prefix="ibcmd_data_")
|
||||
atexit.register(shutil.rmtree, ib_data, ignore_errors=True)
|
||||
arguments.append(f"--data={ib_data}")
|
||||
print(f"Running: ibcmd {' '.join(arguments)}")
|
||||
result = subprocess.run([v8path] + arguments, capture_output=True, encoding="utf-8", errors="replace")
|
||||
if result.returncode == 0:
|
||||
|
||||
Reference in New Issue
Block a user