@@ -749,32 +749,31 @@ export async function createEmbeddedAttemptSessionLockController(params: {
749749
750750 const noopLock : SessionLock = { release : async ( ) => { } } ;
751751
752+ async function releaseHeldLockWithFence ( ) : Promise < void > {
753+ if ( ! heldLock ) {
754+ return ;
755+ }
756+ const lock = heldLock ;
757+ heldLock = undefined ;
758+ const fingerprint = await readSessionFileFingerprint ( params . lockOptions . sessionFile ) ;
759+ const ownedWrite = ownedSessionFileWrites . get ( sessionFileFenceKey ) ;
760+ const trustedGeneration = trustSessionFileState ( sessionFileFenceKey , fingerprint ) ;
761+ fenceFingerprint = fingerprint ;
762+ fenceSnapshot = await readSessionFileFenceSnapshot ( params . lockOptions . sessionFile ) ;
763+ fenceGeneration =
764+ ownedWrite && sameSessionFileFingerprint ( ownedWrite . fingerprint , fingerprint )
765+ ? ownedWrite . generation
766+ : ( trustedGeneration ?? fenceGeneration ) ;
767+ fenceActive = true ;
768+ await lock . release ( ) ;
769+ }
770+
752771 return {
753772 async releaseForPrompt ( ) : Promise < void > {
754- if ( ! heldLock ) {
755- return ;
756- }
757- const lock = heldLock ;
758- heldLock = undefined ;
759- const fingerprint = await readSessionFileFingerprint ( params . lockOptions . sessionFile ) ;
760- const ownedWrite = ownedSessionFileWrites . get ( sessionFileFenceKey ) ;
761- const trustedGeneration = trustSessionFileState ( sessionFileFenceKey , fingerprint ) ;
762- fenceFingerprint = fingerprint ;
763- fenceSnapshot = await readSessionFileFenceSnapshot ( params . lockOptions . sessionFile ) ;
764- fenceGeneration =
765- ownedWrite && sameSessionFileFingerprint ( ownedWrite . fingerprint , fingerprint )
766- ? ownedWrite . generation
767- : ( trustedGeneration ?? fenceGeneration ) ;
768- fenceActive = true ;
769- await lock . release ( ) ;
773+ await releaseHeldLockWithFence ( ) ;
770774 } ,
771775 async releaseHeldLockForAbort ( ) : Promise < void > {
772- if ( ! heldLock ) {
773- return ;
774- }
775- const lock = heldLock ;
776- heldLock = undefined ;
777- await lock . release ( ) ;
776+ await releaseHeldLockWithFence ( ) ;
778777 } ,
779778 refreshAfterOwnedSessionWrite ( ) : void {
780779 if ( fenceActive && ! takeoverDetected ) {
0 commit comments