MCPcopy Index your code
hub / github.com/getsentry/XcodeBuildMCP / tryRecoverExpiredLockDir

Function tryRecoverExpiredLockDir

src/utils/fs-lock-sync.ts:66–101  ·  view source on GitHub ↗
(
  lockDir: string,
  purpose: string,
  now: number,
  leaseMs: number,
)

Source from the content-addressed store, hash-verified

64}
65
66function tryRecoverExpiredLockDir(
67 lockDir: string,
68 purpose: string,
69 now: number,
70 leaseMs: number,
71): boolean {
72 const recovery = shouldRecoverLockDir(lockDir, purpose, now, leaseMs);
73 if (!recovery.recover) {
74 return false;
75 }
76
77 const quarantineDir = join(
78 dirname(lockDir),
79 `.${basename(lockDir)}.stale.${process.pid}.${randomUUID()}`,
80 );
81 try {
82 renameSync(lockDir, quarantineDir);
83 } catch {
84 return false;
85 }
86
87 if (recovery.owner) {
88 const quarantinedOwner = readLockOwnerSync(quarantineDir);
89 if (!fsLockOwnersEqual(quarantinedOwner, recovery.owner)) {
90 try {
91 renameSync(quarantineDir, lockDir);
92 } catch {
93 // Leave quarantined dir intact rather than deleting a lock we could not validate.
94 }
95 return false;
96 }
97 }
98
99 rmSync(quarantineDir, { recursive: true, force: true });
100 return true;
101}
102
103function createLock(lockDir: string, owner: FsLockOwner): AcquiredFsLockSync {
104 mkdirSync(lockDir, { mode: 0o700 });

Callers 2

tryAcquireGuardFunction · 0.70
tryAcquireFsLockSyncFunction · 0.70

Calls 3

fsLockOwnersEqualFunction · 0.90
readLockOwnerSyncFunction · 0.85
shouldRecoverLockDirFunction · 0.70

Tested by

no test coverage detected