@@ -401,39 +401,44 @@ export class UserController {
401401 return ;
402402 }
403403 const sessionId = req . body . sessionId ;
404- const resourceGuard = new FGAResourceAccessGuard ( user . id , new OwnerResourceGuard ( user . id ) ) ;
405- const server = this . createGitpodServer ( user , resourceGuard ) ;
406- try {
407- await server . sendHeartBeat ( { } , { wasClosed : true , instanceId : instanceID } ) ;
408- /** no await */ server
409- . trackEvent (
410- { } ,
411- {
412- event : "ide_close_signal" ,
413- properties : {
414- sessionId,
415- instanceId : instanceID ,
416- clientKind : "supervisor-frontend" ,
404+
405+ await runWithSubjectId ( SubjectId . fromUserId ( user . id ) , async ( ) => {
406+ const resourceGuard = new FGAResourceAccessGuard ( user . id , new OwnerResourceGuard ( user . id ) ) ;
407+ const server = this . createGitpodServer ( user , resourceGuard ) ;
408+ try {
409+ await server . sendHeartBeat ( { } , { wasClosed : true , instanceId : instanceID } ) ;
410+ /** no await */ server
411+ . trackEvent (
412+ { } ,
413+ {
414+ event : "ide_close_signal" ,
415+ properties : {
416+ sessionId,
417+ instanceId : instanceID ,
418+ clientKind : "supervisor-frontend" ,
419+ } ,
417420 } ,
418- } ,
419- )
420- . catch ( ( err ) => log . warn ( logCtx , "workspacePageClose: failed to track ide close signal" , err ) ) ;
421- res . sendStatus ( 200 ) ;
422- } catch ( e ) {
423- if ( ApplicationError . hasErrorCode ( e ) ) {
424- res . status ( e . code ) . send ( e . message ) ;
425- log . warn (
426- logCtx ,
427- `workspacePageClose: server sendHeartBeat respond with code: ${ e . code } , message: ${ e . message } ` ,
428- ) ;
421+ )
422+ . catch ( ( err ) =>
423+ log . warn ( logCtx , "workspacePageClose: failed to track ide close signal" , err ) ,
424+ ) ;
425+ res . sendStatus ( 200 ) ;
426+ } catch ( e ) {
427+ if ( ApplicationError . hasErrorCode ( e ) ) {
428+ res . status ( e . code ) . send ( e . message ) ;
429+ log . warn (
430+ logCtx ,
431+ `workspacePageClose: server sendHeartBeat respond with code: ${ e . code } , message: ${ e . message } ` ,
432+ ) ;
433+ return ;
434+ }
435+ log . error ( logCtx , "workspacePageClose failed" , e ) ;
436+ res . sendStatus ( 500 ) ;
429437 return ;
438+ } finally {
439+ server . dispose ( ) ;
430440 }
431- log . error ( logCtx , "workspacePageClose failed" , e ) ;
432- res . sendStatus ( 500 ) ;
433- return ;
434- } finally {
435- server . dispose ( ) ;
436- }
441+ } ) ;
437442 } ,
438443 ) ;
439444 if ( this . config . enableLocalApp ) {
0 commit comments