Skip to content

Commit 2730ef9

Browse files
authored
fix: improve checkpoint service initialization handling (#6860)
1 parent 12d1959 commit 2730ef9

File tree

1 file changed

+22
-36
lines changed

1 file changed

+22
-36
lines changed

src/core/checkpoints/index.ts

Lines changed: 22 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -23,22 +23,8 @@ export async function getCheckpointService(
2323
if (!cline.enableCheckpoints) {
2424
return undefined
2525
}
26-
2726
if (cline.checkpointService) {
28-
if (cline.checkpointServiceInitializing) {
29-
console.log("[Task#getCheckpointService] checkpoint service is still initializing")
30-
const service = cline.checkpointService
31-
await pWaitFor(
32-
() => {
33-
console.log("[Task#getCheckpointService] waiting for service to initialize")
34-
return service.isInitialized
35-
},
36-
{ interval, timeout },
37-
)
38-
return service.isInitialized ? cline.checkpointService : undefined
39-
} else {
40-
return cline.checkpointService
41-
}
27+
return cline.checkpointService
4228
}
4329

4430
const provider = cline.providerRef.deref()
@@ -78,25 +64,32 @@ export async function getCheckpointService(
7864
shadowDir: globalStorageDir,
7965
log,
8066
}
81-
67+
if (cline.checkpointServiceInitializing) {
68+
await pWaitFor(
69+
() => {
70+
console.log("[Task#getCheckpointService] waiting for service to initialize")
71+
return !!cline.checkpointService && !!cline?.checkpointService?.isInitialized
72+
},
73+
{ interval, timeout },
74+
)
75+
if (!cline?.checkpointService) {
76+
cline.enableCheckpoints = false
77+
return undefined
78+
}
79+
return cline.checkpointService
80+
}
81+
if (!cline.enableCheckpoints) {
82+
return undefined
83+
}
8284
const service = RepoPerTaskCheckpointService.create(options)
8385
cline.checkpointServiceInitializing = true
84-
85-
// Check if Git is installed before initializing the service
86-
// Only assign the service after successful initialization
87-
try {
88-
await checkGitInstallation(cline, service, log, provider)
89-
cline.checkpointService = service
90-
return service
91-
} catch (err) {
92-
// Clean up on failure
93-
cline.checkpointServiceInitializing = false
94-
cline.enableCheckpoints = false
95-
throw err
96-
}
86+
await checkGitInstallation(cline, service, log, provider)
87+
cline.checkpointService = service
88+
return service
9789
} catch (err) {
9890
log(`[Task#getCheckpointService] ${err.message}`)
9991
cline.enableCheckpoints = false
92+
cline.checkpointServiceInitializing = false
10093
return undefined
10194
}
10295
}
@@ -175,13 +168,6 @@ export async function checkpointSave(cline: Task, force = false) {
175168
return
176169
}
177170

178-
if (!service.isInitialized) {
179-
const provider = cline.providerRef.deref()
180-
provider?.log("[checkpointSave] checkpoints didn't initialize in time, disabling checkpoints for this task")
181-
cline.enableCheckpoints = false
182-
return
183-
}
184-
185171
TelemetryService.instance.captureCheckpointCreated(cline.taskId)
186172

187173
// Start the checkpoint process in the background.

0 commit comments

Comments
 (0)