@@ -57,11 +57,11 @@ export class ProcessManager {
5757 event : ServiceStateEvent ,
5858 trigger : TriggerContext ,
5959 metadata ?: Record < string , unknown > ,
60+ options ?: { skipHistory ?: boolean } ,
6061 ) {
6162 try {
6263 const elevated = this . getElevatedInjector ( )
6364 const statusDs = getRepository ( elevated ) . getDataSetFor ( ServiceStatus , 'serviceId' )
64- const historyDs = getRepository ( elevated ) . getDataSetFor ( ServiceStateHistory , 'id' )
6565
6666 const statuses = await statusDs . find ( elevated , { filter : { serviceId : { $eq : serviceId } } , top : 1 } )
6767 const current = statuses [ 0 ]
@@ -74,31 +74,35 @@ export class ProcessManager {
7474 if ( update . buildStatus === 'built' ) patchData . lastBuiltAt = now
7575 if ( update . runStatus === 'running' ) patchData . lastStartedAt = now
7676
77- const previousState = JSON . stringify ( {
78- installStatus : current . installStatus ,
79- buildStatus : current . buildStatus ,
80- runStatus : current . runStatus ,
81- } )
82-
8377 await statusDs . update ( elevated , serviceId , patchData )
8478
85- const newState = JSON . stringify ( {
86- installStatus : update . installStatus ?? current . installStatus ,
87- buildStatus : update . buildStatus ?? current . buildStatus ,
88- runStatus : update . runStatus ?? current . runStatus ,
89- } )
90-
91- await historyDs . add ( elevated , {
92- id : 0 ,
93- serviceId,
94- event,
95- previousState,
96- newState,
97- triggeredBy : trigger . triggeredBy ,
98- triggerSource : trigger . triggerSource ,
99- metadata : metadata ? JSON . stringify ( metadata ) : undefined ,
100- createdAt : now ,
101- } )
79+ if ( ! options ?. skipHistory ) {
80+ const historyDs = getRepository ( elevated ) . getDataSetFor ( ServiceStateHistory , 'id' )
81+
82+ const previousState = JSON . stringify ( {
83+ installStatus : current . installStatus ,
84+ buildStatus : current . buildStatus ,
85+ runStatus : current . runStatus ,
86+ } )
87+
88+ const newState = JSON . stringify ( {
89+ installStatus : update . installStatus ?? current . installStatus ,
90+ buildStatus : update . buildStatus ?? current . buildStatus ,
91+ runStatus : update . runStatus ?? current . runStatus ,
92+ } )
93+
94+ await historyDs . add ( elevated , {
95+ id : 0 ,
96+ serviceId,
97+ event,
98+ previousState,
99+ newState,
100+ triggeredBy : trigger . triggeredBy ,
101+ triggerSource : trigger . triggerSource ,
102+ metadata : metadata ? JSON . stringify ( metadata ) : undefined ,
103+ createdAt : now ,
104+ } )
105+ }
102106
103107 void this . ws . announce ( {
104108 type : 'service-status-changed' ,
@@ -127,7 +131,9 @@ export class ProcessManager {
127131 this . pendingOperations . add ( serviceId )
128132 try {
129133 await this . logger . information ( { message : `Starting service: ${ svc . displayName } ` } )
130- await this . updateServiceStatus ( serviceId , { runStatus : 'starting' } , 'run-started' , trigger )
134+ await this . updateServiceStatus ( serviceId , { runStatus : 'starting' } , 'run-started' , trigger , undefined , {
135+ skipHistory : true ,
136+ } )
131137
132138 const cwd = await resolveServiceCwd ( getInjectorReference ( this ) , svc , elevated )
133139 const child = this . spawnCommand ( svc . runCommand , cwd )
@@ -180,7 +186,9 @@ export class ProcessManager {
180186 }
181187
182188 await this . logger . information ( { message : `Stopping service: ${ serviceId } ` } )
183- await this . updateServiceStatus ( serviceId , { runStatus : 'stopping' } , 'run-stopped' , trigger )
189+ await this . updateServiceStatus ( serviceId , { runStatus : 'stopping' } , 'run-stopped' , trigger , undefined , {
190+ skipHistory : true ,
191+ } )
184192
185193 managed . process . kill ( 'SIGTERM' )
186194
0 commit comments