Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commitd7c650b

Browse files
committed
chore: add memory logging to WorkspacesProvider
1 parentf201d1a commitd7c650b

File tree

1 file changed

+40
-0
lines changed

1 file changed

+40
-0
lines changed

‎src/workspacesProvider.ts‎

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import {
1212
errToStr,
1313
}from"./api-helper"
1414
import{Storage}from"./storage"
15+
import{getMemoryLogger,MemoryLogger}from"./memoryLogger"
1516

1617
exportenumWorkspaceQuery{
1718
Mine="owner:me",
@@ -227,41 +228,80 @@ export class WorkspaceProvider implements vscode.TreeDataProvider<vscode.TreeIte
227228
// agent and registers a watcher that can be disposed to stop the watch and
228229
// emits an event when the metadata changes.
229230
functionmonitorMetadata(agentId:WorkspaceAgent["id"],restClient:Api):AgentWatcher{
231+
constlogger=getMemoryLogger()
232+
logger.trackResourceCreated("AgentMetadataWatcher",agentId)
233+
230234
// TODO: Is there a better way to grab the url and token?
231235
consturl=restClient.getAxiosInstance().defaults.baseURL
232236
constmetadataUrl=newURL(`${url}/api/v2/workspaceagents/${agentId}/watch-metadata`)
237+
238+
logger.info(`Starting metadata watcher for agent:${agentId} at${metadataUrl}`)
239+
233240
consteventSource=newEventSource(metadataUrl.toString(),{
234241
fetch:createStreamingFetchAdapter(restClient.getAxiosInstance()),
235242
})
236243

237244
letdisposed=false
245+
leteventCount=0
238246
constonChange=newvscode.EventEmitter<null>()
239247
constwatcher:AgentWatcher={
240248
onChange:onChange.event,
241249
dispose:()=>{
242250
if(!disposed){
251+
logger.info(`Disposing metadata watcher for agent:${agentId} after${eventCount} events`)
243252
eventSource.close()
253+
onChange.dispose()
244254
disposed=true
255+
logger.trackResourceDisposed("AgentMetadataWatcher",agentId)
245256
}
246257
},
247258
}
248259

260+
eventSource.addEventListener("open",()=>{
261+
logger.info(`Metadata EventSource connection opened for agent:${agentId}`)
262+
})
263+
249264
eventSource.addEventListener("data",(event)=>{
265+
eventCount++
266+
267+
// Log periodic updates
268+
if(eventCount%50===0){
269+
logger.info(`Received${eventCount} metadata events for agent:${agentId}`)
270+
logger.logMemoryUsage("AGENT_METADATA")
271+
}
272+
250273
try{
251274
constdataEvent=JSON.parse(event.data)
252275
constmetadata=AgentMetadataEventSchemaArray.parse(dataEvent)
253276

254277
// Overwrite metadata if it changed.
255278
if(JSON.stringify(watcher.metadata)!==JSON.stringify(metadata)){
279+
if(eventCount===1){
280+
logger.debug(`Initial metadata received for agent:${agentId}`)
281+
}
282+
256283
watcher.metadata=metadata
257284
onChange.fire(null)
258285
}
259286
}catch(error){
287+
logger.error(`Error processing metadata for agent:${agentId}`,error)
260288
watcher.error=error
261289
onChange.fire(null)
262290
}
263291
})
264292

293+
eventSource.addEventListener("error",(error)=>{
294+
logger.error(`Metadata EventSource error for agent:${agentId}`,error)
295+
296+
// If connection closes permanently, clean up resources
297+
if((errorasany).readyState===EventSource.CLOSED){
298+
logger.info(`Metadata EventSource connection closed for agent:${agentId}`)
299+
if(!disposed){
300+
watcher.dispose()
301+
}
302+
}
303+
})
304+
265305
returnwatcher
266306
}
267307

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp