Fix SQLite task store PRAGMA busy_timeout
Use query_row instead of execute for PRAGMA busy_timeout since it returns the value that was set. This fixes test failures where ExecuteReturnedResults error was raised. All task_store tests now pass: - task_insert_get_roundtrip - alias_upsert_roundtrip - idempotency_cache_roundtrip - session_roundtrip - node_settings_version_roundtrip - job_queue_dequeue_roundtrip - leader_lease_acquire_renew - restart_survival - schema_version_check - cdc_cursor_roundtrip - tenant_map_roundtrip - health_check Bead-Id: miroir-r3j.1
This commit is contained in:
parent
a1cebae34c
commit
62d0e8a5d9
17 changed files with 647 additions and 3814 deletions
File diff suppressed because one or more lines are too long
16
.beads/traces/bf-3lad/metadata.json
Normal file
16
.beads/traces/bf-3lad/metadata.json
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
{
|
||||
"bead_id": "bf-3lad",
|
||||
"agent": "claude-code-glm-4.7",
|
||||
"provider": "zai",
|
||||
"model": "glm-4.7",
|
||||
"exit_code": 1,
|
||||
"outcome": "failure",
|
||||
"duration_ms": 179981,
|
||||
"input_tokens": null,
|
||||
"output_tokens": null,
|
||||
"cost_usd": null,
|
||||
"captured_at": "2026-05-10T11:06:39.907809756Z",
|
||||
"trace_format": "claude_json",
|
||||
"pruned": false,
|
||||
"template_version": null
|
||||
}
|
||||
2
.beads/traces/bf-3lad/stderr.txt
Normal file
2
.beads/traces/bf-3lad/stderr.txt
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
SessionEnd hook [/home/coding/.ccdash/hooks/session-end.sh] failed: /bin/sh: line 1: /home/coding/.ccdash/hooks/session-end.sh: cannot execute: required file not found
|
||||
|
||||
16
.beads/traces/bf-3lad/stdout.txt
Normal file
16
.beads/traces/bf-3lad/stdout.txt
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
{"type":"system","subtype":"hook_started","hook_id":"dbd28456-ae67-4d0e-ba6e-b266ec7f3554","hook_name":"SessionStart:startup","hook_event":"SessionStart","uuid":"294724a5-ddba-4153-b31a-63c3e6dd7165","session_id":"9201791e-959e-468c-9f35-3f363274e896"}
|
||||
{"type":"system","subtype":"hook_response","hook_id":"dbd28456-ae67-4d0e-ba6e-b266ec7f3554","hook_name":"SessionStart:startup","hook_event":"SessionStart","output":"/bin/sh: line 1: /home/coding/.ccdash/hooks/session-start.sh: cannot execute: required file not found\n","stdout":"","stderr":"/bin/sh: line 1: /home/coding/.ccdash/hooks/session-start.sh: cannot execute: required file not found\n","exit_code":127,"outcome":"error","uuid":"1d83198e-a1da-4c42-9927-bf6a32a933a1","session_id":"9201791e-959e-468c-9f35-3f363274e896"}
|
||||
{"type":"system","subtype":"init","cwd":"/home/coding/miroir","session_id":"9201791e-959e-468c-9f35-3f363274e896","tools":["Task","AskUserQuestion","Bash","CronCreate","CronDelete","CronList","Edit","EnterPlanMode","EnterWorktree","ExitPlanMode","ExitWorktree","Glob","Grep","NotebookEdit","Read","ScheduleWakeup","Skill","TaskOutput","TaskStop","TodoWrite","WebFetch","WebSearch","Write","mcp__claude_ai_Alphavantage__TOOL_CALL","mcp__claude_ai_Alphavantage__TOOL_GET","mcp__claude_ai_Alphavantage__TOOL_LIST","mcp__claude_ai_Gmail__authenticate","mcp__claude_ai_Gmail__complete_authentication","mcp__claude_ai_Google_Calendar__authenticate","mcp__claude_ai_Google_Calendar__complete_authentication","mcp__claude_ai_Google_Drive__authenticate","mcp__claude_ai_Google_Drive__complete_authentication"],"mcp_servers":[{"name":"claude.ai Alphavantage","status":"connected"},{"name":"claude.ai Google Calendar","status":"needs-auth"},{"name":"claude.ai Gmail","status":"needs-auth"},{"name":"claude.ai Google Drive","status":"needs-auth"}],"model":"glm-4.7","permissionMode":"bypassPermissions","slash_commands":["update-config","debug","simplify","batch","fewer-permission-prompts","loop","claude-api","clear","compact","context","heapdump","init","review","security-review","usage","insights","team-onboarding"],"apiKeySource":"none","claude_code_version":"2.1.138","output_style":"default","agents":["Explore","general-purpose","Plan","statusline-setup"],"skills":["update-config","debug","simplify","batch","fewer-permission-prompts","loop","claude-api"],"plugins":[],"analytics_disabled":true,"uuid":"bfbb2d9f-0887-4905-b028-428b1d67bbf5","memory_paths":{"auto":"/home/coding/.claude/projects/-home-coding-miroir/memory/"},"fast_mode_state":"off"}
|
||||
{"type":"system","subtype":"status","status":"requesting","uuid":"0b91a995-2e43-47c2-b2b1-945e1f011223","session_id":"9201791e-959e-468c-9f35-3f363274e896"}
|
||||
{"type":"system","subtype":"api_retry","attempt":1,"max_retries":10,"retry_delay_ms":594.126935420076,"error_status":null,"error":"unknown","session_id":"9201791e-959e-468c-9f35-3f363274e896","uuid":"fed130e2-257c-417a-9d75-251ee41c3777"}
|
||||
{"type":"system","subtype":"api_retry","attempt":2,"max_retries":10,"retry_delay_ms":1062.0535439076032,"error_status":null,"error":"unknown","session_id":"9201791e-959e-468c-9f35-3f363274e896","uuid":"2f18d2e7-ba94-4f58-9232-f92c3779369c"}
|
||||
{"type":"system","subtype":"api_retry","attempt":3,"max_retries":10,"retry_delay_ms":2132.401783390468,"error_status":null,"error":"unknown","session_id":"9201791e-959e-468c-9f35-3f363274e896","uuid":"7aa17d8b-7096-474b-bd69-3e68c9bc5ce6"}
|
||||
{"type":"system","subtype":"api_retry","attempt":4,"max_retries":10,"retry_delay_ms":4599.899047965057,"error_status":null,"error":"unknown","session_id":"9201791e-959e-468c-9f35-3f363274e896","uuid":"52844996-cbbe-4f91-baa8-6ea1a4d1f2d5"}
|
||||
{"type":"system","subtype":"api_retry","attempt":5,"max_retries":10,"retry_delay_ms":8296.40748059694,"error_status":null,"error":"unknown","session_id":"9201791e-959e-468c-9f35-3f363274e896","uuid":"48603337-d945-4ac7-9908-716cde4409e0"}
|
||||
{"type":"system","subtype":"api_retry","attempt":6,"max_retries":10,"retry_delay_ms":16239.273788222305,"error_status":null,"error":"unknown","session_id":"9201791e-959e-468c-9f35-3f363274e896","uuid":"6774c915-9d6c-4e10-b1d1-50ed6dab8f6f"}
|
||||
{"type":"system","subtype":"api_retry","attempt":7,"max_retries":10,"retry_delay_ms":33102.89590756301,"error_status":null,"error":"unknown","session_id":"9201791e-959e-468c-9f35-3f363274e896","uuid":"18848581-52df-4195-a49a-f781939e459d"}
|
||||
{"type":"system","subtype":"api_retry","attempt":8,"max_retries":10,"retry_delay_ms":36914.271258730005,"error_status":null,"error":"unknown","session_id":"9201791e-959e-468c-9f35-3f363274e896","uuid":"0cdb2c68-07cb-4f9f-86b4-158ba01043be"}
|
||||
{"type":"system","subtype":"api_retry","attempt":9,"max_retries":10,"retry_delay_ms":39458.44410609604,"error_status":null,"error":"unknown","session_id":"9201791e-959e-468c-9f35-3f363274e896","uuid":"0eea1ce9-4387-4d7d-945d-9796dd4e0de5"}
|
||||
{"type":"system","subtype":"api_retry","attempt":10,"max_retries":10,"retry_delay_ms":35524.58115524215,"error_status":null,"error":"unknown","session_id":"9201791e-959e-468c-9f35-3f363274e896","uuid":"5f35a325-f987-4128-9740-b3e7d7f794b4"}
|
||||
{"type":"assistant","message":{"id":"80acd61b-b207-4c22-bd26-5adbd06b6265","container":null,"model":"<synthetic>","role":"assistant","stop_details":null,"stop_reason":"stop_sequence","stop_sequence":"","type":"message","usage":{"input_tokens":0,"output_tokens":0,"cache_creation_input_tokens":0,"cache_read_input_tokens":0,"server_tool_use":{"web_search_requests":0,"web_fetch_requests":0},"service_tier":null,"cache_creation":{"ephemeral_1h_input_tokens":0,"ephemeral_5m_input_tokens":0},"inference_geo":null,"iterations":null,"speed":null},"content":[{"type":"text","text":"API Error: Unable to connect to API (ConnectionRefused)"}],"context_management":null},"parent_tool_use_id":null,"session_id":"9201791e-959e-468c-9f35-3f363274e896","uuid":"e087ccb5-c868-47f0-b3b1-c696f75835a7","error":"unknown"}
|
||||
{"type":"result","subtype":"success","is_error":true,"api_error_status":null,"duration_ms":178916,"duration_api_ms":0,"num_turns":1,"result":"API Error: Unable to connect to API (ConnectionRefused)","stop_reason":"stop_sequence","session_id":"9201791e-959e-468c-9f35-3f363274e896","total_cost_usd":0,"usage":{"input_tokens":0,"cache_creation_input_tokens":0,"cache_read_input_tokens":0,"output_tokens":0,"server_tool_use":{"web_search_requests":0,"web_fetch_requests":0},"service_tier":"standard","cache_creation":{"ephemeral_1h_input_tokens":0,"ephemeral_5m_input_tokens":0},"inference_geo":"","iterations":[],"speed":"standard"},"modelUsage":{},"permission_denials":[],"terminal_reason":"completed","fast_mode_state":"off","uuid":"3da61640-0410-4b86-875f-de2f79054ff1"}
|
||||
16
.beads/traces/bf-4w08/metadata.json
Normal file
16
.beads/traces/bf-4w08/metadata.json
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
{
|
||||
"bead_id": "bf-4w08",
|
||||
"agent": "claude-code-glm-4.7",
|
||||
"provider": "zai",
|
||||
"model": "glm-4.7",
|
||||
"exit_code": 1,
|
||||
"outcome": "failure",
|
||||
"duration_ms": 174434,
|
||||
"input_tokens": null,
|
||||
"output_tokens": null,
|
||||
"cost_usd": null,
|
||||
"captured_at": "2026-05-10T11:03:38.699815594Z",
|
||||
"trace_format": "claude_json",
|
||||
"pruned": false,
|
||||
"template_version": null
|
||||
}
|
||||
2
.beads/traces/bf-4w08/stderr.txt
Normal file
2
.beads/traces/bf-4w08/stderr.txt
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
SessionEnd hook [/home/coding/.ccdash/hooks/session-end.sh] failed: /bin/sh: line 1: /home/coding/.ccdash/hooks/session-end.sh: cannot execute: required file not found
|
||||
|
||||
16
.beads/traces/bf-4w08/stdout.txt
Normal file
16
.beads/traces/bf-4w08/stdout.txt
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
{"type":"system","subtype":"hook_started","hook_id":"228dd5de-7520-4719-b873-270d6be8b095","hook_name":"SessionStart:startup","hook_event":"SessionStart","uuid":"5abf2738-6684-4a85-a917-1bf4de839cef","session_id":"6ab1d9c1-4fe7-4b8a-a764-9589e5d21e7d"}
|
||||
{"type":"system","subtype":"hook_response","hook_id":"228dd5de-7520-4719-b873-270d6be8b095","hook_name":"SessionStart:startup","hook_event":"SessionStart","output":"/bin/sh: line 1: /home/coding/.ccdash/hooks/session-start.sh: cannot execute: required file not found\n","stdout":"","stderr":"/bin/sh: line 1: /home/coding/.ccdash/hooks/session-start.sh: cannot execute: required file not found\n","exit_code":127,"outcome":"error","uuid":"2dca8d9c-3e57-4e5b-8814-122a65f31ba5","session_id":"6ab1d9c1-4fe7-4b8a-a764-9589e5d21e7d"}
|
||||
{"type":"system","subtype":"init","cwd":"/home/coding/miroir","session_id":"6ab1d9c1-4fe7-4b8a-a764-9589e5d21e7d","tools":["Task","AskUserQuestion","Bash","CronCreate","CronDelete","CronList","Edit","EnterPlanMode","EnterWorktree","ExitPlanMode","ExitWorktree","Glob","Grep","NotebookEdit","Read","ScheduleWakeup","Skill","TaskOutput","TaskStop","TodoWrite","WebFetch","WebSearch","Write","mcp__claude_ai_Alphavantage__TOOL_CALL","mcp__claude_ai_Alphavantage__TOOL_GET","mcp__claude_ai_Alphavantage__TOOL_LIST","mcp__claude_ai_Gmail__authenticate","mcp__claude_ai_Gmail__complete_authentication","mcp__claude_ai_Google_Calendar__authenticate","mcp__claude_ai_Google_Calendar__complete_authentication","mcp__claude_ai_Google_Drive__authenticate","mcp__claude_ai_Google_Drive__complete_authentication"],"mcp_servers":[{"name":"claude.ai Alphavantage","status":"connected"},{"name":"claude.ai Google Calendar","status":"needs-auth"},{"name":"claude.ai Gmail","status":"needs-auth"},{"name":"claude.ai Google Drive","status":"needs-auth"}],"model":"glm-4.7","permissionMode":"bypassPermissions","slash_commands":["update-config","debug","simplify","batch","fewer-permission-prompts","loop","claude-api","clear","compact","context","heapdump","init","review","security-review","usage","insights","team-onboarding"],"apiKeySource":"none","claude_code_version":"2.1.138","output_style":"default","agents":["Explore","general-purpose","Plan","statusline-setup"],"skills":["update-config","debug","simplify","batch","fewer-permission-prompts","loop","claude-api"],"plugins":[],"analytics_disabled":true,"uuid":"2d0b42a2-63b3-4acb-8a37-72c57262e5df","memory_paths":{"auto":"/home/coding/.claude/projects/-home-coding-miroir/memory/"},"fast_mode_state":"off"}
|
||||
{"type":"system","subtype":"status","status":"requesting","uuid":"ec8b206b-0d1f-4f0c-8f3a-ed709d9ef5bd","session_id":"6ab1d9c1-4fe7-4b8a-a764-9589e5d21e7d"}
|
||||
{"type":"system","subtype":"api_retry","attempt":1,"max_retries":10,"retry_delay_ms":585.065406262977,"error_status":null,"error":"unknown","session_id":"6ab1d9c1-4fe7-4b8a-a764-9589e5d21e7d","uuid":"fe366dff-9dc9-44cc-8a59-2229fd12cc53"}
|
||||
{"type":"system","subtype":"api_retry","attempt":2,"max_retries":10,"retry_delay_ms":1231.1220782947023,"error_status":null,"error":"unknown","session_id":"6ab1d9c1-4fe7-4b8a-a764-9589e5d21e7d","uuid":"82a7f0dd-1f08-4242-80c3-47a187702c77"}
|
||||
{"type":"system","subtype":"api_retry","attempt":3,"max_retries":10,"retry_delay_ms":2291.0281267998225,"error_status":null,"error":"unknown","session_id":"6ab1d9c1-4fe7-4b8a-a764-9589e5d21e7d","uuid":"e4c372c0-6b87-422e-8a47-f41484e64765"}
|
||||
{"type":"system","subtype":"api_retry","attempt":4,"max_retries":10,"retry_delay_ms":4821.756914640311,"error_status":null,"error":"unknown","session_id":"6ab1d9c1-4fe7-4b8a-a764-9589e5d21e7d","uuid":"230ba3a2-6846-429d-b51c-a50e6d8330b9"}
|
||||
{"type":"system","subtype":"api_retry","attempt":5,"max_retries":10,"retry_delay_ms":9915.794402170704,"error_status":null,"error":"unknown","session_id":"6ab1d9c1-4fe7-4b8a-a764-9589e5d21e7d","uuid":"f1189243-1005-4ee8-91f8-36c035f1fdab"}
|
||||
{"type":"system","subtype":"api_retry","attempt":6,"max_retries":10,"retry_delay_ms":19728.754838667675,"error_status":null,"error":"unknown","session_id":"6ab1d9c1-4fe7-4b8a-a764-9589e5d21e7d","uuid":"a8c97b8a-2d9c-429f-9c19-6c2feecdb337"}
|
||||
{"type":"system","subtype":"api_retry","attempt":7,"max_retries":10,"retry_delay_ms":32056.507439193858,"error_status":null,"error":"unknown","session_id":"6ab1d9c1-4fe7-4b8a-a764-9589e5d21e7d","uuid":"9136a235-a9c5-42a3-b1de-e58cca544533"}
|
||||
{"type":"system","subtype":"api_retry","attempt":8,"max_retries":10,"retry_delay_ms":32813.34022624039,"error_status":null,"error":"unknown","session_id":"6ab1d9c1-4fe7-4b8a-a764-9589e5d21e7d","uuid":"7b28c2ae-3344-4e7c-b4a9-aa14c1b3db5d"}
|
||||
{"type":"system","subtype":"api_retry","attempt":9,"max_retries":10,"retry_delay_ms":33948.93778320631,"error_status":null,"error":"unknown","session_id":"6ab1d9c1-4fe7-4b8a-a764-9589e5d21e7d","uuid":"99928feb-6c01-41cd-9fa4-43d3d287c07c"}
|
||||
{"type":"system","subtype":"api_retry","attempt":10,"max_retries":10,"retry_delay_ms":34912.970971536546,"error_status":null,"error":"unknown","session_id":"6ab1d9c1-4fe7-4b8a-a764-9589e5d21e7d","uuid":"8c9dc41b-3083-4fe1-a314-81f9939e2314"}
|
||||
{"type":"assistant","message":{"id":"338ba0ae-2ab4-4de3-8738-5108f330b6ae","container":null,"model":"<synthetic>","role":"assistant","stop_details":null,"stop_reason":"stop_sequence","stop_sequence":"","type":"message","usage":{"input_tokens":0,"output_tokens":0,"cache_creation_input_tokens":0,"cache_read_input_tokens":0,"server_tool_use":{"web_search_requests":0,"web_fetch_requests":0},"service_tier":null,"cache_creation":{"ephemeral_1h_input_tokens":0,"ephemeral_5m_input_tokens":0},"inference_geo":null,"iterations":null,"speed":null},"content":[{"type":"text","text":"API Error: Unable to connect to API (ConnectionRefused)"}],"context_management":null},"parent_tool_use_id":null,"session_id":"6ab1d9c1-4fe7-4b8a-a764-9589e5d21e7d","uuid":"9898b089-6288-4643-92e1-8804d4564f4a","error":"unknown"}
|
||||
{"type":"result","subtype":"success","is_error":true,"api_error_status":null,"duration_ms":173380,"duration_api_ms":0,"num_turns":1,"result":"API Error: Unable to connect to API (ConnectionRefused)","stop_reason":"stop_sequence","session_id":"6ab1d9c1-4fe7-4b8a-a764-9589e5d21e7d","total_cost_usd":0,"usage":{"input_tokens":0,"cache_creation_input_tokens":0,"cache_read_input_tokens":0,"output_tokens":0,"server_tool_use":{"web_search_requests":0,"web_fetch_requests":0},"service_tier":"standard","cache_creation":{"ephemeral_1h_input_tokens":0,"ephemeral_5m_input_tokens":0},"inference_geo":"","iterations":[],"speed":"standard"},"modelUsage":{},"permission_denials":[],"terminal_reason":"completed","fast_mode_state":"off","uuid":"2a9e3f72-dc99-40ef-a9e8-a4f9042d9ccd"}
|
||||
16
.beads/traces/bf-5xqk/metadata.json
Normal file
16
.beads/traces/bf-5xqk/metadata.json
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
{
|
||||
"bead_id": "bf-5xqk",
|
||||
"agent": "claude-code-glm-4.7",
|
||||
"provider": "zai",
|
||||
"model": "glm-4.7",
|
||||
"exit_code": 1,
|
||||
"outcome": "failure",
|
||||
"duration_ms": 184941,
|
||||
"input_tokens": null,
|
||||
"output_tokens": null,
|
||||
"cost_usd": null,
|
||||
"captured_at": "2026-05-10T11:00:43.601926161Z",
|
||||
"trace_format": "claude_json",
|
||||
"pruned": false,
|
||||
"template_version": null
|
||||
}
|
||||
2
.beads/traces/bf-5xqk/stderr.txt
Normal file
2
.beads/traces/bf-5xqk/stderr.txt
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
SessionEnd hook [/home/coding/.ccdash/hooks/session-end.sh] failed: /bin/sh: line 1: /home/coding/.ccdash/hooks/session-end.sh: cannot execute: required file not found
|
||||
|
||||
16
.beads/traces/bf-5xqk/stdout.txt
Normal file
16
.beads/traces/bf-5xqk/stdout.txt
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
{"type":"system","subtype":"hook_started","hook_id":"debfea64-8bbd-4cc1-b407-3661fac1a396","hook_name":"SessionStart:startup","hook_event":"SessionStart","uuid":"8391e7ab-6fbb-4690-9654-af5a8396a914","session_id":"0e77b097-c872-4e31-8e77-ecc93e2a4576"}
|
||||
{"type":"system","subtype":"hook_response","hook_id":"debfea64-8bbd-4cc1-b407-3661fac1a396","hook_name":"SessionStart:startup","hook_event":"SessionStart","output":"/bin/sh: line 1: /home/coding/.ccdash/hooks/session-start.sh: cannot execute: required file not found\n","stdout":"","stderr":"/bin/sh: line 1: /home/coding/.ccdash/hooks/session-start.sh: cannot execute: required file not found\n","exit_code":127,"outcome":"error","uuid":"ff4bf1f8-8dd2-4838-912a-3fa8d6ec017f","session_id":"0e77b097-c872-4e31-8e77-ecc93e2a4576"}
|
||||
{"type":"system","subtype":"init","cwd":"/home/coding/miroir","session_id":"0e77b097-c872-4e31-8e77-ecc93e2a4576","tools":["Task","AskUserQuestion","Bash","CronCreate","CronDelete","CronList","Edit","EnterPlanMode","EnterWorktree","ExitPlanMode","ExitWorktree","Glob","Grep","NotebookEdit","Read","ScheduleWakeup","Skill","TaskOutput","TaskStop","TodoWrite","WebFetch","WebSearch","Write","mcp__claude_ai_Alphavantage__TOOL_CALL","mcp__claude_ai_Alphavantage__TOOL_GET","mcp__claude_ai_Alphavantage__TOOL_LIST","mcp__claude_ai_Gmail__authenticate","mcp__claude_ai_Gmail__complete_authentication","mcp__claude_ai_Google_Calendar__authenticate","mcp__claude_ai_Google_Calendar__complete_authentication","mcp__claude_ai_Google_Drive__authenticate","mcp__claude_ai_Google_Drive__complete_authentication"],"mcp_servers":[{"name":"claude.ai Alphavantage","status":"connected"},{"name":"claude.ai Google Calendar","status":"needs-auth"},{"name":"claude.ai Gmail","status":"needs-auth"},{"name":"claude.ai Google Drive","status":"needs-auth"}],"model":"glm-4.7","permissionMode":"bypassPermissions","slash_commands":["update-config","debug","simplify","batch","fewer-permission-prompts","loop","claude-api","clear","compact","context","heapdump","init","review","security-review","usage","insights","team-onboarding"],"apiKeySource":"none","claude_code_version":"2.1.138","output_style":"default","agents":["Explore","general-purpose","Plan","statusline-setup"],"skills":["update-config","debug","simplify","batch","fewer-permission-prompts","loop","claude-api"],"plugins":[],"analytics_disabled":true,"uuid":"04fe7d86-cd08-4b8e-b5a0-131ed1a76512","memory_paths":{"auto":"/home/coding/.claude/projects/-home-coding-miroir/memory/"},"fast_mode_state":"off"}
|
||||
{"type":"system","subtype":"status","status":"requesting","uuid":"80660529-ecf3-486e-95bf-9d588899091e","session_id":"0e77b097-c872-4e31-8e77-ecc93e2a4576"}
|
||||
{"type":"system","subtype":"api_retry","attempt":1,"max_retries":10,"retry_delay_ms":624.8114051384147,"error_status":null,"error":"unknown","session_id":"0e77b097-c872-4e31-8e77-ecc93e2a4576","uuid":"faeeec29-a75f-4325-b139-7d2c9b6d60e3"}
|
||||
{"type":"system","subtype":"api_retry","attempt":2,"max_retries":10,"retry_delay_ms":1240.5495432610828,"error_status":null,"error":"unknown","session_id":"0e77b097-c872-4e31-8e77-ecc93e2a4576","uuid":"e0ffa5cd-f15f-4d77-b30f-be6e96b905a2"}
|
||||
{"type":"system","subtype":"api_retry","attempt":3,"max_retries":10,"retry_delay_ms":2467.318027417268,"error_status":null,"error":"unknown","session_id":"0e77b097-c872-4e31-8e77-ecc93e2a4576","uuid":"b7356321-fdfb-4f9e-b614-a40aa94c1f5f"}
|
||||
{"type":"system","subtype":"api_retry","attempt":4,"max_retries":10,"retry_delay_ms":4641.976777462182,"error_status":null,"error":"unknown","session_id":"0e77b097-c872-4e31-8e77-ecc93e2a4576","uuid":"f2501350-57a0-439c-ac92-d684785762a2"}
|
||||
{"type":"system","subtype":"api_retry","attempt":5,"max_retries":10,"retry_delay_ms":8666.049466234657,"error_status":null,"error":"unknown","session_id":"0e77b097-c872-4e31-8e77-ecc93e2a4576","uuid":"7e758053-d9fd-48c9-b4e0-c20bc4fe5637"}
|
||||
{"type":"system","subtype":"api_retry","attempt":6,"max_retries":10,"retry_delay_ms":16129.816688034027,"error_status":null,"error":"unknown","session_id":"0e77b097-c872-4e31-8e77-ecc93e2a4576","uuid":"fbad1afd-281d-45b9-977f-5d1c98271e60"}
|
||||
{"type":"system","subtype":"api_retry","attempt":7,"max_retries":10,"retry_delay_ms":39569.094474348596,"error_status":null,"error":"unknown","session_id":"0e77b097-c872-4e31-8e77-ecc93e2a4576","uuid":"6b8e463d-e6be-45a6-9b85-461c212d06cd"}
|
||||
{"type":"system","subtype":"api_retry","attempt":8,"max_retries":10,"retry_delay_ms":37243.56450462843,"error_status":null,"error":"unknown","session_id":"0e77b097-c872-4e31-8e77-ecc93e2a4576","uuid":"5b36d991-5525-4d6d-8743-43156e91d533"}
|
||||
{"type":"system","subtype":"api_retry","attempt":9,"max_retries":10,"retry_delay_ms":38775.674962823345,"error_status":null,"error":"unknown","session_id":"0e77b097-c872-4e31-8e77-ecc93e2a4576","uuid":"54040621-e9af-432e-a84a-0bbd60fc603f"}
|
||||
{"type":"system","subtype":"api_retry","attempt":10,"max_retries":10,"retry_delay_ms":33611.94078487153,"error_status":null,"error":"unknown","session_id":"0e77b097-c872-4e31-8e77-ecc93e2a4576","uuid":"8d5b6420-51c3-4053-b402-23c0ca633db4"}
|
||||
{"type":"assistant","message":{"id":"b22368b6-ae97-40ba-a4f5-5dc61518de99","container":null,"model":"<synthetic>","role":"assistant","stop_details":null,"stop_reason":"stop_sequence","stop_sequence":"","type":"message","usage":{"input_tokens":0,"output_tokens":0,"cache_creation_input_tokens":0,"cache_read_input_tokens":0,"server_tool_use":{"web_search_requests":0,"web_fetch_requests":0},"service_tier":null,"cache_creation":{"ephemeral_1h_input_tokens":0,"ephemeral_5m_input_tokens":0},"inference_geo":null,"iterations":null,"speed":null},"content":[{"type":"text","text":"API Error: Unable to connect to API (ConnectionRefused)"}],"context_management":null},"parent_tool_use_id":null,"session_id":"0e77b097-c872-4e31-8e77-ecc93e2a4576","uuid":"753219ee-bddf-4ff9-8503-cc44d5cbc892","error":"unknown"}
|
||||
{"type":"result","subtype":"success","is_error":true,"api_error_status":null,"duration_ms":183977,"duration_api_ms":0,"num_turns":1,"result":"API Error: Unable to connect to API (ConnectionRefused)","stop_reason":"stop_sequence","session_id":"0e77b097-c872-4e31-8e77-ecc93e2a4576","total_cost_usd":0,"usage":{"input_tokens":0,"cache_creation_input_tokens":0,"cache_read_input_tokens":0,"output_tokens":0,"server_tool_use":{"web_search_requests":0,"web_fetch_requests":0},"service_tier":"standard","cache_creation":{"ephemeral_1h_input_tokens":0,"ephemeral_5m_input_tokens":0},"inference_geo":"","iterations":[],"speed":"standard"},"modelUsage":{},"permission_denials":[],"terminal_reason":"completed","fast_mode_state":"off","uuid":"6f592cc4-033d-484e-b508-019b318293a6"}
|
||||
|
|
@ -5,11 +5,11 @@
|
|||
"model": "glm-4.7",
|
||||
"exit_code": 1,
|
||||
"outcome": "failure",
|
||||
"duration_ms": 352538,
|
||||
"duration_ms": 183518,
|
||||
"input_tokens": null,
|
||||
"output_tokens": null,
|
||||
"cost_usd": null,
|
||||
"captured_at": "2026-05-09T19:44:46.153126622Z",
|
||||
"captured_at": "2026-05-12T11:18:19.109824211Z",
|
||||
"trace_format": "claude_json",
|
||||
"pruned": false,
|
||||
"template_version": null
|
||||
|
|
|
|||
|
|
@ -1,16 +1,16 @@
|
|||
{"type":"system","subtype":"hook_started","hook_id":"552150b6-7905-41cd-acf6-ed331f32dda8","hook_name":"SessionStart:startup","hook_event":"SessionStart","uuid":"3ef8d005-7574-474c-bcb5-3993145417a3","session_id":"f80e0e9a-ea9c-4dfb-91ac-28dfef440ff6"}
|
||||
{"type":"system","subtype":"hook_response","hook_id":"552150b6-7905-41cd-acf6-ed331f32dda8","hook_name":"SessionStart:startup","hook_event":"SessionStart","output":"/bin/sh: line 1: /home/coding/.ccdash/hooks/session-start.sh: cannot execute: required file not found\n","stdout":"","stderr":"/bin/sh: line 1: /home/coding/.ccdash/hooks/session-start.sh: cannot execute: required file not found\n","exit_code":127,"outcome":"error","uuid":"66f67646-307a-4b19-adb5-1a468fcaaf7c","session_id":"f80e0e9a-ea9c-4dfb-91ac-28dfef440ff6"}
|
||||
{"type":"system","subtype":"init","cwd":"/home/coding/miroir","session_id":"f80e0e9a-ea9c-4dfb-91ac-28dfef440ff6","tools":["Task","AskUserQuestion","Bash","CronCreate","CronDelete","CronList","Edit","EnterPlanMode","EnterWorktree","ExitPlanMode","ExitWorktree","Glob","Grep","NotebookEdit","Read","ScheduleWakeup","Skill","TaskOutput","TaskStop","TodoWrite","WebFetch","WebSearch","Write","mcp__claude_ai_Alphavantage__TOOL_CALL","mcp__claude_ai_Alphavantage__TOOL_GET","mcp__claude_ai_Alphavantage__TOOL_LIST","mcp__claude_ai_Gmail__authenticate","mcp__claude_ai_Gmail__complete_authentication","mcp__claude_ai_Google_Calendar__authenticate","mcp__claude_ai_Google_Calendar__complete_authentication","mcp__claude_ai_Google_Drive__authenticate","mcp__claude_ai_Google_Drive__complete_authentication"],"mcp_servers":[{"name":"claude.ai Alphavantage","status":"connected"},{"name":"claude.ai Google Calendar","status":"needs-auth"},{"name":"claude.ai Gmail","status":"needs-auth"},{"name":"claude.ai Google Drive","status":"needs-auth"}],"model":"glm-4.7","permissionMode":"bypassPermissions","slash_commands":["update-config","debug","simplify","batch","fewer-permission-prompts","loop","claude-api","clear","compact","context","heapdump","init","review","security-review","usage","insights","team-onboarding"],"apiKeySource":"none","claude_code_version":"2.1.138","output_style":"default","agents":["Explore","general-purpose","Plan","statusline-setup"],"skills":["update-config","debug","simplify","batch","fewer-permission-prompts","loop","claude-api"],"plugins":[],"analytics_disabled":true,"uuid":"024bba3d-35df-4a5a-a6f0-9f46239dfb25","memory_paths":{"auto":"/home/coding/.claude/projects/-home-coding-miroir/memory/"},"fast_mode_state":"off"}
|
||||
{"type":"system","subtype":"status","status":"requesting","uuid":"65f977bd-00ef-4b7a-a900-76a30387b781","session_id":"f80e0e9a-ea9c-4dfb-91ac-28dfef440ff6"}
|
||||
{"type":"system","subtype":"api_retry","attempt":1,"max_retries":10,"retry_delay_ms":592.5743536365452,"error_status":null,"error":"unknown","session_id":"f80e0e9a-ea9c-4dfb-91ac-28dfef440ff6","uuid":"6b5029d6-9a99-476c-aab3-d5d084ab5709"}
|
||||
{"type":"system","subtype":"api_retry","attempt":2,"max_retries":10,"retry_delay_ms":1177.6632279264363,"error_status":null,"error":"unknown","session_id":"f80e0e9a-ea9c-4dfb-91ac-28dfef440ff6","uuid":"b6a1721f-2270-439a-9bed-773876b98f60"}
|
||||
{"type":"system","subtype":"api_retry","attempt":3,"max_retries":10,"retry_delay_ms":2083.5053580284966,"error_status":null,"error":"unknown","session_id":"f80e0e9a-ea9c-4dfb-91ac-28dfef440ff6","uuid":"4ead317b-bb82-4f59-a0df-958e73ac54b3"}
|
||||
{"type":"system","subtype":"api_retry","attempt":4,"max_retries":10,"retry_delay_ms":4603.718651502221,"error_status":null,"error":"unknown","session_id":"f80e0e9a-ea9c-4dfb-91ac-28dfef440ff6","uuid":"dc44606d-25c9-4fee-b624-c2342ecb74f0"}
|
||||
{"type":"system","subtype":"api_retry","attempt":5,"max_retries":10,"retry_delay_ms":8515.234536875909,"error_status":null,"error":"unknown","session_id":"f80e0e9a-ea9c-4dfb-91ac-28dfef440ff6","uuid":"9e26f2fe-0dda-4243-be2e-8e9b0904941d"}
|
||||
{"type":"system","subtype":"api_retry","attempt":6,"max_retries":10,"retry_delay_ms":17262.20146870139,"error_status":null,"error":"unknown","session_id":"f80e0e9a-ea9c-4dfb-91ac-28dfef440ff6","uuid":"48b7f602-6524-49ee-8f72-eb8998b55339"}
|
||||
{"type":"system","subtype":"api_retry","attempt":7,"max_retries":10,"retry_delay_ms":38804.00328564314,"error_status":null,"error":"unknown","session_id":"f80e0e9a-ea9c-4dfb-91ac-28dfef440ff6","uuid":"c5d37a18-3151-4630-bc81-1169bca31a8c"}
|
||||
{"type":"system","subtype":"api_retry","attempt":8,"max_retries":10,"retry_delay_ms":37093.047897049415,"error_status":null,"error":"unknown","session_id":"f80e0e9a-ea9c-4dfb-91ac-28dfef440ff6","uuid":"8ccac109-9d54-418c-9eaa-277897015b7c"}
|
||||
{"type":"system","subtype":"api_retry","attempt":9,"max_retries":10,"retry_delay_ms":37809.32219347685,"error_status":null,"error":"unknown","session_id":"f80e0e9a-ea9c-4dfb-91ac-28dfef440ff6","uuid":"0d38fc54-6d5f-4020-b224-454c33ea06be"}
|
||||
{"type":"system","subtype":"api_retry","attempt":10,"max_retries":10,"retry_delay_ms":39127.24139935589,"error_status":null,"error":"unknown","session_id":"f80e0e9a-ea9c-4dfb-91ac-28dfef440ff6","uuid":"e5e029e0-c457-4dca-820e-24b419683c0b"}
|
||||
{"type":"assistant","message":{"id":"2e1bb2cb-83b6-44b4-80e5-8509c1a81287","container":null,"model":"<synthetic>","role":"assistant","stop_details":null,"stop_reason":"stop_sequence","stop_sequence":"","type":"message","usage":{"input_tokens":0,"output_tokens":0,"cache_creation_input_tokens":0,"cache_read_input_tokens":0,"server_tool_use":{"web_search_requests":0,"web_fetch_requests":0},"service_tier":null,"cache_creation":{"ephemeral_1h_input_tokens":0,"ephemeral_5m_input_tokens":0},"inference_geo":null,"iterations":null,"speed":null},"content":[{"type":"text","text":"API Error: Unable to connect to API (ConnectionRefused)"}],"context_management":null},"parent_tool_use_id":null,"session_id":"f80e0e9a-ea9c-4dfb-91ac-28dfef440ff6","uuid":"12c1fb21-38b9-4d56-b975-ff9325f702f4","error":"unknown"}
|
||||
{"type":"result","subtype":"success","is_error":true,"api_error_status":null,"duration_ms":351362,"duration_api_ms":0,"num_turns":1,"result":"API Error: Unable to connect to API (ConnectionRefused)","stop_reason":"stop_sequence","session_id":"f80e0e9a-ea9c-4dfb-91ac-28dfef440ff6","total_cost_usd":0,"usage":{"input_tokens":0,"cache_creation_input_tokens":0,"cache_read_input_tokens":0,"output_tokens":0,"server_tool_use":{"web_search_requests":0,"web_fetch_requests":0},"service_tier":"standard","cache_creation":{"ephemeral_1h_input_tokens":0,"ephemeral_5m_input_tokens":0},"inference_geo":"","iterations":[],"speed":"standard"},"modelUsage":{},"permission_denials":[],"terminal_reason":"completed","fast_mode_state":"off","uuid":"227e9956-0bcc-46b7-a5c1-463dfdbdf6d2"}
|
||||
{"type":"system","subtype":"hook_started","hook_id":"0a19e7f8-0139-4ed1-8bd2-7409c60f59ef","hook_name":"SessionStart:startup","hook_event":"SessionStart","uuid":"ddfb17d2-bd05-4544-8e77-011e1a157118","session_id":"ea187fe4-b49d-4fec-9778-e3ed6084df66"}
|
||||
{"type":"system","subtype":"hook_response","hook_id":"0a19e7f8-0139-4ed1-8bd2-7409c60f59ef","hook_name":"SessionStart:startup","hook_event":"SessionStart","output":"/bin/sh: line 1: /home/coding/.ccdash/hooks/session-start.sh: cannot execute: required file not found\n","stdout":"","stderr":"/bin/sh: line 1: /home/coding/.ccdash/hooks/session-start.sh: cannot execute: required file not found\n","exit_code":127,"outcome":"error","uuid":"22221f0b-67fb-4c8c-ad14-8ff0667dc7ff","session_id":"ea187fe4-b49d-4fec-9778-e3ed6084df66"}
|
||||
{"type":"system","subtype":"init","cwd":"/home/coding/miroir","session_id":"ea187fe4-b49d-4fec-9778-e3ed6084df66","tools":["Task","AskUserQuestion","Bash","CronCreate","CronDelete","CronList","Edit","EnterPlanMode","EnterWorktree","ExitPlanMode","ExitWorktree","Glob","Grep","NotebookEdit","Read","ScheduleWakeup","Skill","TaskOutput","TaskStop","TodoWrite","WebFetch","WebSearch","Write","mcp__claude_ai_Alphavantage__TOOL_CALL","mcp__claude_ai_Alphavantage__TOOL_GET","mcp__claude_ai_Alphavantage__TOOL_LIST","mcp__claude_ai_Gmail__authenticate","mcp__claude_ai_Gmail__complete_authentication","mcp__claude_ai_Google_Calendar__authenticate","mcp__claude_ai_Google_Calendar__complete_authentication","mcp__claude_ai_Google_Drive__authenticate","mcp__claude_ai_Google_Drive__complete_authentication"],"mcp_servers":[{"name":"claude.ai Alphavantage","status":"connected"},{"name":"claude.ai Google Calendar","status":"needs-auth"},{"name":"claude.ai Gmail","status":"needs-auth"},{"name":"claude.ai Google Drive","status":"needs-auth"}],"model":"glm-4.7","permissionMode":"bypassPermissions","slash_commands":["update-config","debug","simplify","batch","fewer-permission-prompts","loop","claude-api","clear","compact","context","heapdump","init","review","security-review","usage","insights","team-onboarding"],"apiKeySource":"none","claude_code_version":"2.1.138","output_style":"default","agents":["Explore","general-purpose","Plan","statusline-setup"],"skills":["update-config","debug","simplify","batch","fewer-permission-prompts","loop","claude-api"],"plugins":[],"analytics_disabled":true,"uuid":"ddc11101-2763-4e47-9efe-f7d368715184","memory_paths":{"auto":"/home/coding/.claude/projects/-home-coding-miroir/memory/"},"fast_mode_state":"off"}
|
||||
{"type":"system","subtype":"status","status":"requesting","uuid":"02f5f87b-162f-4770-9f58-1c61ec9f878a","session_id":"ea187fe4-b49d-4fec-9778-e3ed6084df66"}
|
||||
{"type":"system","subtype":"api_retry","attempt":1,"max_retries":10,"retry_delay_ms":511.98570192555445,"error_status":null,"error":"unknown","session_id":"ea187fe4-b49d-4fec-9778-e3ed6084df66","uuid":"8e11fab8-6a42-4da7-a522-d645b3aeb78e"}
|
||||
{"type":"system","subtype":"api_retry","attempt":2,"max_retries":10,"retry_delay_ms":1006.1119779212877,"error_status":null,"error":"unknown","session_id":"ea187fe4-b49d-4fec-9778-e3ed6084df66","uuid":"94750ad6-5e1c-43fc-aed3-c6cebd0c3fac"}
|
||||
{"type":"system","subtype":"api_retry","attempt":3,"max_retries":10,"retry_delay_ms":2014.805734535642,"error_status":null,"error":"unknown","session_id":"ea187fe4-b49d-4fec-9778-e3ed6084df66","uuid":"970b230e-d1ff-494f-a7fe-d926dedb4220"}
|
||||
{"type":"system","subtype":"api_retry","attempt":4,"max_retries":10,"retry_delay_ms":4149.816597127521,"error_status":null,"error":"unknown","session_id":"ea187fe4-b49d-4fec-9778-e3ed6084df66","uuid":"876a34ef-7359-4fdf-8745-edea795d03e4"}
|
||||
{"type":"system","subtype":"api_retry","attempt":5,"max_retries":10,"retry_delay_ms":8453.549139967827,"error_status":null,"error":"unknown","session_id":"ea187fe4-b49d-4fec-9778-e3ed6084df66","uuid":"61b1f016-f2e3-45ae-8481-320da7ccc6fc"}
|
||||
{"type":"system","subtype":"api_retry","attempt":6,"max_retries":10,"retry_delay_ms":18671.067467574067,"error_status":null,"error":"unknown","session_id":"ea187fe4-b49d-4fec-9778-e3ed6084df66","uuid":"b326cfbf-080f-470f-8b6f-9bf424f8b770"}
|
||||
{"type":"system","subtype":"api_retry","attempt":7,"max_retries":10,"retry_delay_ms":35870.608904335786,"error_status":null,"error":"unknown","session_id":"ea187fe4-b49d-4fec-9778-e3ed6084df66","uuid":"7d6bf599-dc6c-42dd-b052-4f23ca00893e"}
|
||||
{"type":"system","subtype":"api_retry","attempt":8,"max_retries":10,"retry_delay_ms":35463.42677876748,"error_status":null,"error":"unknown","session_id":"ea187fe4-b49d-4fec-9778-e3ed6084df66","uuid":"065b74e5-8e98-4450-aebf-fcaca343151c"}
|
||||
{"type":"system","subtype":"api_retry","attempt":9,"max_retries":10,"retry_delay_ms":36225.14783859448,"error_status":null,"error":"unknown","session_id":"ea187fe4-b49d-4fec-9778-e3ed6084df66","uuid":"5481336f-aa14-4c6b-92a5-46c67754e10e"}
|
||||
{"type":"system","subtype":"api_retry","attempt":10,"max_retries":10,"retry_delay_ms":39017.05983274851,"error_status":null,"error":"unknown","session_id":"ea187fe4-b49d-4fec-9778-e3ed6084df66","uuid":"2fec25de-7647-4817-8876-ad7f9b0e1401"}
|
||||
{"type":"assistant","message":{"id":"86cb25a9-d610-436c-bc15-a8386dfcef08","container":null,"model":"<synthetic>","role":"assistant","stop_details":null,"stop_reason":"stop_sequence","stop_sequence":"","type":"message","usage":{"input_tokens":0,"output_tokens":0,"cache_creation_input_tokens":0,"cache_read_input_tokens":0,"server_tool_use":{"web_search_requests":0,"web_fetch_requests":0},"service_tier":null,"cache_creation":{"ephemeral_1h_input_tokens":0,"ephemeral_5m_input_tokens":0},"inference_geo":null,"iterations":null,"speed":null},"content":[{"type":"text","text":"API Error: Unable to connect to API (ConnectionRefused)"}],"context_management":null},"parent_tool_use_id":null,"session_id":"ea187fe4-b49d-4fec-9778-e3ed6084df66","uuid":"75cdcf42-c7e1-4e4d-9346-87cb898fb773","error":"unknown"}
|
||||
{"type":"result","subtype":"success","is_error":true,"api_error_status":null,"duration_ms":182356,"duration_api_ms":0,"num_turns":1,"result":"API Error: Unable to connect to API (ConnectionRefused)","stop_reason":"stop_sequence","session_id":"ea187fe4-b49d-4fec-9778-e3ed6084df66","total_cost_usd":0,"usage":{"input_tokens":0,"cache_creation_input_tokens":0,"cache_read_input_tokens":0,"output_tokens":0,"server_tool_use":{"web_search_requests":0,"web_fetch_requests":0},"service_tier":"standard","cache_creation":{"ephemeral_1h_input_tokens":0,"ephemeral_5m_input_tokens":0},"inference_geo":"","iterations":[],"speed":"standard"},"modelUsage":{},"permission_denials":[],"terminal_reason":"completed","fast_mode_state":"off","uuid":"29d4c2e6-fb26-42fd-b437-edc43cde8c04"}
|
||||
|
|
|
|||
|
|
@ -1,15 +1,15 @@
|
|||
{
|
||||
"bead_id": "miroir-r3j.1",
|
||||
"agent": "claude-code-glm-4.7",
|
||||
"agent": "claude-code-glm-5-1",
|
||||
"provider": "zai",
|
||||
"model": "glm-4.7",
|
||||
"model": "glm-5.1",
|
||||
"exit_code": 1,
|
||||
"outcome": "failure",
|
||||
"duration_ms": 531371,
|
||||
"duration_ms": 29524,
|
||||
"input_tokens": null,
|
||||
"output_tokens": null,
|
||||
"cost_usd": null,
|
||||
"captured_at": "2026-05-09T09:51:09.229275800Z",
|
||||
"captured_at": "2026-05-13T21:58:26.759796723Z",
|
||||
"trace_format": "claude_json",
|
||||
"pruned": false,
|
||||
"template_version": null
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
|
|
@ -1 +1 @@
|
|||
a7dab22821b31022dc092231df26f7b90afd2af0
|
||||
a1cebae34cec6daa8c7d60825afb681311d297dd
|
||||
|
|
|
|||
|
|
@ -121,6 +121,14 @@ impl TaskStore for SqliteTaskStore {
|
|||
|row| row.get(0),
|
||||
)?;
|
||||
|
||||
// Set busy timeout to avoid deadlock on concurrent writes
|
||||
// Use query_row because PRAGMA busy_timeout returns the value that was set
|
||||
let _timeout: i64 = conn.query_row(
|
||||
"PRAGMA busy_timeout=5000",
|
||||
&[] as &[&dyn rusqlite::ToSql],
|
||||
|row| row.get(0),
|
||||
)?;
|
||||
|
||||
// Create schema_version table
|
||||
conn.execute(
|
||||
"CREATE TABLE IF NOT EXISTS schema_version (
|
||||
|
|
@ -865,7 +873,7 @@ impl TaskStore for SqliteTaskStore {
|
|||
async fn cdc_cursor_get(&self, sink: &str, index: &str) -> Result<Option<CdcCursor>> {
|
||||
let result: Option<CdcCursor> = self
|
||||
.query_row(
|
||||
"SELECT sink, [index], cursor, updated_at FROM cdc_cursors WHERE sink = ?1 AND [index] = ?2",
|
||||
"SELECT sink_name, index_uid, last_event_seq, updated_at FROM cdc_cursors WHERE sink_name = ?1 AND index_uid = ?2",
|
||||
&[&sink as &dyn rusqlite::ToSql, &index as &dyn rusqlite::ToSql],
|
||||
|row| Ok(CdcCursor {
|
||||
sink_name: row.get(0)?,
|
||||
|
|
@ -880,7 +888,7 @@ impl TaskStore for SqliteTaskStore {
|
|||
|
||||
async fn cdc_cursor_set(&self, cursor: &CdcCursor) -> Result<()> {
|
||||
self.execute(
|
||||
"INSERT OR REPLACE INTO cdc_cursors (sink, [index], cursor, updated_at)
|
||||
"INSERT OR REPLACE INTO cdc_cursors (sink_name, index_uid, last_event_seq, updated_at)
|
||||
VALUES (?1, ?2, ?3, ?4)",
|
||||
&[
|
||||
&cursor.sink_name as &dyn rusqlite::ToSql,
|
||||
|
|
@ -894,7 +902,7 @@ impl TaskStore for SqliteTaskStore {
|
|||
|
||||
async fn cdc_cursor_list(&self, sink: &str) -> Result<Vec<CdcCursor>> {
|
||||
self.query_map(
|
||||
"SELECT sink, [index], cursor, updated_at FROM cdc_cursors WHERE sink = ?1",
|
||||
"SELECT sink_name, index_uid, last_event_seq, updated_at FROM cdc_cursors WHERE sink_name = ?1",
|
||||
&[&sink as &dyn rusqlite::ToSql],
|
||||
|row| {
|
||||
Ok(CdcCursor {
|
||||
|
|
|
|||
|
|
@ -293,11 +293,17 @@ async fn cdc_cursor_roundtrip() {
|
|||
async fn tenant_map_roundtrip() {
|
||||
let store = create_temp_store().await;
|
||||
|
||||
// Use a hex string representation of the hash
|
||||
let api_key_hex = "010203"; // hex for [1, 2, 3]
|
||||
// Use the actual API key (the implementation will hash it)
|
||||
let api_key = "my-secret-api-key";
|
||||
|
||||
// Manually compute the hash to insert into the database
|
||||
use sha2::Digest;
|
||||
let mut hasher = sha2::Sha256::new();
|
||||
hasher.update(api_key.as_bytes());
|
||||
let api_key_hash: Vec<u8> = hasher.finalize().to_vec();
|
||||
|
||||
let tenant = Tenant {
|
||||
api_key_hash: hex::decode(api_key_hex).unwrap(),
|
||||
api_key_hash: api_key_hash.clone(),
|
||||
tenant_id: "tenant-1".to_string(),
|
||||
group_id: Some(1),
|
||||
};
|
||||
|
|
@ -305,13 +311,13 @@ async fn tenant_map_roundtrip() {
|
|||
// Insert tenant
|
||||
store.tenant_upsert(&tenant).await.unwrap();
|
||||
|
||||
// Get tenant
|
||||
let retrieved = store.tenant_get(api_key_hex).await.unwrap().unwrap();
|
||||
// Get tenant (using the actual API key)
|
||||
let retrieved = store.tenant_get(api_key).await.unwrap().unwrap();
|
||||
assert_eq!(retrieved.tenant_id, tenant.tenant_id);
|
||||
|
||||
// Delete tenant
|
||||
store.tenant_delete(api_key_hex).await.unwrap();
|
||||
let retrieved2 = store.tenant_get(api_key_hex).await.unwrap();
|
||||
store.tenant_delete(api_key).await.unwrap();
|
||||
let retrieved2 = store.tenant_get(api_key).await.unwrap();
|
||||
assert!(retrieved2.is_none());
|
||||
}
|
||||
|
||||
|
|
@ -344,6 +350,49 @@ async fn session_roundtrip() {
|
|||
assert!(retrieved2.is_none());
|
||||
}
|
||||
|
||||
/// Property test: jobs queue and dequeue.
|
||||
#[tokio::test]
|
||||
async fn job_queue_dequeue_roundtrip() {
|
||||
let store = create_temp_store().await;
|
||||
|
||||
let job = Job {
|
||||
id: "job-1".to_string(),
|
||||
job_type: "test_job".to_string(),
|
||||
params: r#"{"param1": "value1"}"#.to_string(),
|
||||
state: JobState::Queued,
|
||||
claimed_by: None,
|
||||
claim_expires_at: None,
|
||||
progress: r#"{"status": "queued"}"#.to_string(),
|
||||
};
|
||||
|
||||
// Enqueue job
|
||||
store.job_enqueue(&job).await.unwrap();
|
||||
|
||||
// Get job
|
||||
let retrieved = store.job_get("job-1").await.unwrap().unwrap();
|
||||
assert_eq!(retrieved.id, job.id);
|
||||
assert_eq!(retrieved.state, JobState::Queued);
|
||||
|
||||
// List jobs
|
||||
let jobs = store.job_list(Some(JobState::Queued), 10).await.unwrap();
|
||||
assert_eq!(jobs.len(), 1);
|
||||
|
||||
// Dequeue job
|
||||
let claimed = store.job_dequeue("worker-1").await.unwrap().unwrap();
|
||||
assert_eq!(claimed.id, "job-1");
|
||||
assert_eq!(claimed.state, JobState::InProgress);
|
||||
assert_eq!(claimed.claimed_by, Some("worker-1".to_string()));
|
||||
|
||||
// Update status
|
||||
store
|
||||
.job_update_status("job-1", JobState::Completed, Some(r#"{"status": "done"}"#))
|
||||
.await
|
||||
.unwrap();
|
||||
|
||||
let final_job = store.job_get("job-1").await.unwrap().unwrap();
|
||||
assert_eq!(final_job.state, JobState::Completed);
|
||||
}
|
||||
|
||||
/// Health check test.
|
||||
#[tokio::test]
|
||||
async fn health_check() {
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue