Skip to content

Commit 3acb399

Browse files
stephentoubCopilot
andcommitted
Fix cancellation CI validation
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
1 parent 40921e0 commit 3acb399

6 files changed

Lines changed: 19 additions & 20 deletions

File tree

java/sdk/src/main/java/com/github/copilot/CopilotClient.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -553,8 +553,7 @@ private Connection startCoreBody() {
553553
JsonRpcClient connectedRpc = rpc;
554554
Connection connection = new Connection(connectedRpc, process, new ServerRpc(connectedRpc::invoke),
555555
inProcessTransport == null ? null : inProcessTransport.host());
556-
connectedRpc.setCloseHandler(
557-
() -> sessions.values().forEach(CopilotSession::cancelPendingExternalTools));
556+
connectedRpc.setCloseHandler(() -> sessions.values().forEach(CopilotSession::cancelPendingExternalTools));
558557

559558
// Register handlers for server-to-client calls
560559
RpcHandlerDispatcher dispatcher = new RpcHandlerDispatcher(sessions, lifecycleManager::dispatch, executor,

java/sdk/src/main/java/com/github/copilot/CopilotSession.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1009,8 +1009,7 @@ private void executeToolAndRespondAsync(String requestId, String toolName, Strin
10091009
ToolDefinition tool) {
10101010
var pending = new PendingExternalTool();
10111011
synchronized (this) {
1012-
if (isTerminated || externalToolsClosed
1013-
|| pendingExternalTools.putIfAbsent(requestId, pending) != null) {
1012+
if (isTerminated || externalToolsClosed || pendingExternalTools.putIfAbsent(requestId, pending) != null) {
10141013
return;
10151014
}
10161015
}

java/sdk/src/test/java/com/github/copilot/CopilotClientTest.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -156,7 +156,8 @@ void testForceStopCancelsPendingExternalTools() throws Exception {
156156

157157
var lateRequest = new ExternalToolRequestedEvent();
158158
lateRequest.setData(new ExternalToolRequestedEvent.ExternalToolRequestedEventData("request-after-force-stop",
159-
session.getSessionId(), "tool-call-after-force-stop", "blocked_tool", null, Map.of(), null, null, null));
159+
session.getSessionId(), "tool-call-after-force-stop", "blocked_tool", null, Map.of(), null, null,
160+
null));
160161
session.dispatchEvent(lateRequest);
161162
assertFalse(lateStarted.await(100, TimeUnit.MILLISECONDS));
162163
}

java/sdk/src/test/java/com/github/copilot/SessionEventHandlingTest.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -94,8 +94,8 @@ void testExternalToolCompletedCancelsBlockedHandler() throws Exception {
9494
})));
9595

9696
var requested = new ExternalToolRequestedEvent();
97-
requested.setData(new ExternalToolRequestedEvent.ExternalToolRequestedEventData("request-1",
98-
"test-session-id", "tool-call-1", "blocked_tool", null, Map.of(), null, null, null));
97+
requested.setData(new ExternalToolRequestedEvent.ExternalToolRequestedEventData("request-1", "test-session-id",
98+
"tool-call-1", "blocked_tool", null, Map.of(), null, null, null));
9999
dispatchEvent(requested);
100100
assertTrue(started.await(1, TimeUnit.SECONDS));
101101

@@ -130,8 +130,8 @@ void testCloseCancelsBlockedExternalTool() throws Exception {
130130
void testExternalToolCompletedDoesNotBlockOnSynchronousHandler() throws Exception {
131131
var started = new CountDownLatch(1);
132132
var release = new CountDownLatch(1);
133-
session.registerTools(List.of(ToolDefinition.create("blocked_tool", "Blocks synchronously", Map.of(),
134-
invocation -> {
133+
session.registerTools(
134+
List.of(ToolDefinition.create("blocked_tool", "Blocks synchronously", Map.of(), invocation -> {
135135
started.countDown();
136136
try {
137137
release.await();

python/test_session.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@ async def blocked_tool(_invocation):
8686
await asyncio.Future()
8787
except asyncio.CancelledError:
8888
cancelled.set()
89-
return ToolResult(text_result_for_llm="late result")
89+
return ToolResult(text_result_for_llm="late result")
9090

9191
session._register_tools([Tool("blocked_tool", "Blocks", blocked_tool)])
9292
session._dispatch_event(

rust/src/session.rs

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1145,11 +1145,11 @@ impl Client {
11451145
"Client::create_session local setup complete"
11461146
);
11471147
*capabilities.write() = create_result.capabilities.unwrap_or_default();
1148-
if has_mcp_auth_handler {
1149-
if let Err(error) = register_mcp_auth_interest(self, &session_id).await {
1150-
registration.cleanup(event_loop).await;
1151-
return Err(error);
1152-
}
1148+
if has_mcp_auth_handler
1149+
&& let Err(error) = register_mcp_auth_interest(self, &session_id).await
1150+
{
1151+
registration.cleanup(event_loop).await;
1152+
return Err(error);
11531153
}
11541154

11551155
tracing::debug!(
@@ -1395,11 +1395,11 @@ impl Client {
13951395
})
13961396
.into());
13971397
}
1398-
if has_mcp_auth_handler {
1399-
if let Err(error) = register_mcp_auth_interest(self, &session_id).await {
1400-
registration.cleanup(event_loop).await;
1401-
return Err(error);
1402-
}
1398+
if has_mcp_auth_handler
1399+
&& let Err(error) = register_mcp_auth_interest(self, &session_id).await
1400+
{
1401+
registration.cleanup(event_loop).await;
1402+
return Err(error);
14031403
}
14041404

14051405
// Reload skills after resume (best-effort).

0 commit comments

Comments
 (0)