fix(BuiltinCommand): spill session streams to log files

This commit is contained in:
2026-04-20 14:37:40 +08:00
parent 2ec2d8e096
commit e9eaaa24db
2 changed files with 176 additions and 24 deletions

View File

@@ -96,6 +96,34 @@ class BuiltinCommandActionProviderTtlTest {
)));
}
@Test
void testReadCanAccessSpilledLogBeyondTailBuffer() throws Exception {
BuiltinCommandActionProvider provider = new BuiltinCommandActionProvider();
List<BuiltinActionRegistry.BuiltinActionDefinition> definitions = provider.provideBuiltinActions();
BuiltinActionRegistry.BuiltinActionDefinition start = requireDefinition(definitions, "builtin::command::start");
BuiltinActionRegistry.BuiltinActionDefinition inspect = requireDefinition(definitions, "builtin::command::inspect");
BuiltinActionRegistry.BuiltinActionDefinition read = requireDefinition(definitions, "builtin::command::read");
String startResult = start.invoker().apply(Map.of(
"desc", "spill-session",
"arg", "python3",
"arg1", "-c",
"arg2", "print('A'*120000, end='')"
));
String executionId = JSONObject.parseObject(startResult).getString("executionId");
waitForInspectExit(inspect, executionId);
JSONObject readResult = JSONObject.parseObject(read.invoker().apply(Map.of(
"id", executionId,
"stream", "stdout",
"offset", 70000,
"limit", 20
)));
Assertions.assertEquals("AAAAAAAAAAAAAAAAAAAA", readResult.getString("content"));
Assertions.assertEquals(70020, readResult.getIntValue("nextOffset"));
}
private void expireHandle(BuiltinCommandActionProvider provider, String executionId) throws Exception {
Field handlesField = BuiltinCommandActionProvider.class.getDeclaredField("commandHandles");
handlesField.setAccessible(true);