Conversations 작성자 잠금 및 복구
업데이트된 데몬은 Conversations를 공유하고 동시에 다른 세션을 사용할 수 있습니다. 로드된 세션은 여전히 하나의 작성자를 갖습니다. 라이브 활성화는 안정적인 Live 로케이터의 정확한 게시자에게만 속하며, Live 게시를 잃어도 독립 실행형 conversations는 비활성화되지 않습니다.
conversation이 열리지 않음
session_writer_conflict는 작성자 펜스가 액세스를 방지했음을 의미합니다.
다른 프로세스가 conversation을 열었거나 잔여 잠금을 안전하게 회수할 수
없음을 의미할 수 있습니다. 다른 작성자가 현재 활성 상태라는 증거는
아닙니다. session_writer_unavailable는 소유권을 확인할 수 없음을
의미하며, 재시도해도 이를 우회할 권한이 부여되지 않습니다. 아카이브 및
삭제는 개별 세션에 대해 작성자 오류와 함께 HTTP 200을 반환할 수 있습니다.
모든 결과 항목을 확인하세요.
소유한 Qwen 프로세스에서 conversation을 정상적으로 닫은 후 영향을 받은 conversation에서 Try again을 사용하세요. 다른 세션은 계속 사용할 수 있습니다. 오류를 숨기기 위해 대체 conversation을 만들지 마세요.
비정상 종료 후, Linux 재부팅이나 새 PID 네임스페이스로의 컨테이너 재시작은 봉인되지 않은 활성 작성자 기록을 무기한 펜스된 상태로 남길 수 있습니다. 닫을 수 있는 생존 소유자가 없을 수 있습니다. 반복적으로 재시도하기보다 Operator recovery for a residual lock을 따르세요. 이 릴리스는 해당 ID 경계를 자동으로 회수하지 않습니다.
계속 지속되면 영향을 받은 데몬을 시작할 때 로컬 디버그 로깅(QWEN_DEBUG_LOG_FILE=1)을
활성화하고 데몬 및 ACP 자식의 진단을 검사하세요. 리스 획득 진단에는 세션
ID, 오류 유형, 해당 작성자의 런타임 스토리지에서 확인된 정확한 lockPath가
포함됩니다. 기본 워크스페이스나 기본 홈 디렉토리에서 잠금 경로를 추측하지
마세요. 공개 HTTP/ACP 오류는 의도적으로 경로와 소유권 기록을 생략합니다.
진단 파일을 비공개로 유지하고 소유자 토큰이나 편집되지 않은 잠금 내용을
게시하지 마세요.
어떤 상태가 자동으로 복구될 수 있나요?
이 규칙은 세션 작성자 리스에 적용됩니다. 레거시 전역 소유자 기록은 아래에 설명된 더 제한적인 호환성 검사를 사용합니다.
- 정상 종료 시 리스가 해제됩니다. 인증된 봉인된 핸드오프는 트랜스크립트 증거가 여전히 유효할 때만 허용됩니다.
- 죽은 활성 작성자는 기존 ID 검사가 해당 프로세스가 동일한 확인된 활성 도메인에 속함을 확인할 때만 회수 가능합니다.
- 라이브 또는 중단된 작성자는 펜스된 상태로 유지됩니다. 데몬을 종료해도 ACP 작성자 자식이 생존하면 충분하지 않습니다.
- 외부 또는 누락된 부팅/프로세스 네임스페이스 ID는 죽음의 증거가 아닙니다. 해당 네임스페이스에 없는 PID는 외부 작성자가 종료되었음을 증명하지 않습니다.
- 잘못된 형식의 기록, 불확실한 트랜스크립트 ID 및 잔여 전환 요청은 종료됩니다. 경과 시간만으로는 인계를 승인하지 않습니다.
잔여 잠금에 대한 운영자 복구
- 로컬 진단에서 정확한 영향을 받은 세션과 스토리지를 식별하세요. 실패 로그와 트랜스크립트 및 잠금 아티팩트의 비공개 백업을 보존하세요. 이 스토리지에 액세스할 수 있는 바이너리와 호스트를 기록하세요.
- 분리된 ACP 자식, 다른 데몬, 컨테이너, 네임스페이스, 파일시스템을 공유하는 머신을 포함한 모든 가능한 작성자를 중지하거나 펜스하세요. 관련 호스트/네임스페이스에서 펜스를 확인하세요. 이를 확립할 수 없다면 여기서 멈추고 이를 수행할 수 있는 운영자에게 문의하세요.
- 정확한 기록과 관련 claim/retired 아티팩트를 유지관리자와 함께 검사하세요. 마지막 트랜스크립트와 핸드오프 증거가 권위 있는지 확인하세요. 소유권 ID 필드를 편집하여 일치를 조작하지 마세요.
- 작성자가 펜스되고 증거가 백업된 후에만, 운영자 감독 하에 개별적으로 확인된 잔여 아티팩트를 비공개 복구 스토리지로 이동하세요. 잠금 디렉토리를 재귀적으로 삭제하거나 모든 잠금을 제거하지 마세요.
- 업데이트된 데몬 하나를 시작하고, 원본 세션을 복원하고, 추가하기 전에 마지막 기록된 턴을 확인하세요. 연속성이 확인될 때까지 백업을 보관하세요. 해당 확인 후에만 다른 업데이트된 데몬을 다시 가져오세요.
이 릴리스에는 강제 잠금 해제 API나 자동 크로스 부팅/TTL 인계가 없습니다. 안전한 소유권을 확립할 수 없을 때 펜스를 유지하세요.
조정된 업그레이드 및 롤백
백엔드 전환 및 Web Shell 로컬 오류/재시도 변경은 동일한 릴리스로 제공되어야 합니다. 이는 혼합 버전 롤링 업그레이드가 아닙니다: 오래된 데몬은 업데이트된 데몬이 이미 시작된 후 전역 소유자를 생성할 수 있습니다.
업그레이드하기 전에 모든 오래된 세션과 예약된 작업을 드레인하고, 모든 오래된
데몬과 해당 ACP 자식을 중지하고, 런타임 데이터를 보존한 후에만 업데이트된
바이너리를 시작하세요. 라이브 레거시 소유자를 마주한 업데이트된 데몬은
503 conversation_runtime_in_use를 반환합니다. 해당 소유자가 종료된 후
재시작 없이 재시도하세요. 정확히 재검증된 오래된 레거시 기록만 제거됩니다.
잘못된 형식이거나 안전하지 않은 레거시 상태는 운영자 조사가 필요합니다.
레거시 conversations/runtime-owner.json 기록은 PID와 논스를 가지지만
호스트 이름, 부팅 ID 또는 PID 네임스페이스 ID는 없습니다. 해당 호환성 검사는
해당 PID가 업데이트된 데몬 자체의 호스트 및 PID 네임스페이스에 존재하는지만
확인할 수 있습니다. 공유 스토리지의 다른 곳에서 활성 상태인 오래된 작성자를
감지할 수 없습니다. 이것이 업데이트된 데몬을 시작하기 전에 모든 가능한
작성자를 펜스해야 하는 또 다른 이유입니다. 해당 검사는 혼합 호스트 또는 혼합
네임스페이스 업그레이드를 안전하게 만들지 않습니다.
롤백하기 전에 모든 업데이트된 데몬과 작성자도 드레인하고 펜스하세요. 활성, 봉인된, claim, retired 및 확장 스키마 기록을 인벤토리하세요. 대상 바이너리가 각 보존된 스키마와 핸드오프 상태를 이해하는지 확인하세요. 지원하지 않는 스키마를 오래된 작성자에 전달하거나 롤백을 진행하기 위해 보호 기록을 삭제하지 마세요. 호환성을 확립할 수 없으면 작성자를 중지한 상태로 유지하고 유지관리자 안내 복구 또는 일관된 업그레이드 전 백업을 사용하세요. 해당 턴을 명시적으로 설명하지 않고 이후 권위 있는 턴보다 오래된 트랜스크립트를 복원하지 마세요.