@@ -169,18 +169,15 @@ Error Launcher::RunInstances(const Array<ServiceInfo>& services, const Array<Lay
169
169
LOG_ERR () << " Can't process instances: err=" << err;
170
170
}
171
171
172
- LockGuard lock {mMutex };
173
-
174
172
if (auto err = SendRunStatus (); !err.IsNone ()) {
175
173
LOG_ERR () << " Can't send run status: err=" << err;
176
174
}
177
175
178
- mLaunchInProgress = false ;
179
- mCondVar .NotifyOne ();
180
-
181
- ShowResourceUsageStats ();
176
+ FinishLaunch ();
182
177
});
183
178
if (!err.IsNone ()) {
179
+ FinishLaunch ();
180
+
184
181
return AOS_ERROR_WRAP (err);
185
182
}
186
183
@@ -364,17 +361,10 @@ Error Launcher::RunLastInstances()
364
361
LOG_ERR () << " Can't process last instances: err=" << err;
365
362
}
366
363
367
- LockGuard lock {mMutex };
368
-
369
- mLaunchInProgress = false ;
370
- mCondVar .NotifyOne ();
371
-
372
- ShowResourceUsageStats ();
364
+ FinishLaunch ();
373
365
});
374
366
!err.IsNone ()) {
375
- LockGuard lock {mMutex };
376
-
377
- mLaunchInProgress = false ;
367
+ FinishLaunch ();
378
368
379
369
return AOS_ERROR_WRAP (err);
380
370
}
@@ -546,6 +536,8 @@ Error Launcher::SendRunStatus()
546
536
547
537
Error Launcher::SendOutdatedInstancesStatus (const Array<InstanceData>& instances)
548
538
{
539
+ LockGuard lock {mMutex };
540
+
549
541
auto status = MakeUnique<InstanceStatusStaticArray>(&mAllocator );
550
542
551
543
for (const auto & instance : instances) {
@@ -981,11 +973,7 @@ Error Launcher::StopCurrentInstances()
981
973
mLaunchInProgress = true ;
982
974
}
983
975
984
- auto finishLaunch = DeferRelease (&mLaunchInProgress , [this ](bool *) {
985
- LockGuard lock {mMutex };
986
-
987
- mLaunchInProgress = false ;
988
- });
976
+ auto finishLaunch = DeferRelease (&mLaunchInProgress , [this ](bool *) { FinishLaunch (); });
989
977
990
978
auto stopInstances = MakeUnique<InstanceDataStaticArray>(&mAllocator );
991
979
@@ -1034,7 +1022,9 @@ Error Launcher::HandleOfflineTTLs()
1034
1022
return ErrorEnum::eNone;
1035
1023
}
1036
1024
1037
- mCondVar .Wait (lock, [this ] { return !mLaunchInProgress ; });
1025
+ if (auto err = mCondVar .Wait (lock, [this ] { return !mLaunchInProgress ; }); !err.IsNone ()) {
1026
+ return AOS_ERROR_WRAP (err);
1027
+ }
1038
1028
1039
1029
outdatedInstances = MakeShared<InstanceDataStaticArray>(&mAllocator );
1040
1030
@@ -1056,21 +1046,14 @@ Error Launcher::HandleOfflineTTLs()
1056
1046
LOG_ERR () << " Can't process stop instances: err=" << err;
1057
1047
}
1058
1048
1059
- LockGuard lock {mMutex };
1060
-
1061
1049
if (auto err = SendOutdatedInstancesStatus (*outdatedInstances); !err.IsNone ()) {
1062
1050
LOG_ERR () << " Can't send outdated instances status: err=" << err;
1063
1051
}
1064
1052
1065
- mLaunchInProgress = false ;
1066
- mCondVar .NotifyOne ();
1067
-
1068
- ShowResourceUsageStats ();
1053
+ FinishLaunch ();
1069
1054
});
1070
1055
if (!err.IsNone ()) {
1071
- LockGuard lock {mMutex };
1072
-
1073
- mLaunchInProgress = false ;
1056
+ FinishLaunch ();
1074
1057
1075
1058
return AOS_ERROR_WRAP (err);
1076
1059
}
@@ -1208,6 +1191,8 @@ Error Launcher::GetEnvChangedInstances(Array<InstanceData>& instances) const
1208
1191
1209
1192
Error Launcher::SendEnvChangedInstancesStatus (const Array<InstanceData>& instances)
1210
1193
{
1194
+ LockGuard lock {mMutex };
1195
+
1211
1196
auto status = MakeUnique<InstanceStatusStaticArray>(&mAllocator );
1212
1197
1213
1198
for (const auto & instanceData : instances) {
@@ -1279,26 +1264,29 @@ Error Launcher::UpdateInstancesEnvVars()
1279
1264
LOG_ERR () << " Can't process stop instances: err=" << err;
1280
1265
}
1281
1266
1282
- LockGuard lock {mMutex };
1283
-
1284
1267
if (auto err = SendEnvChangedInstancesStatus (*restartInstances); !err.IsNone ()) {
1285
1268
LOG_ERR () << " Can't send env changed instances status: err=" << err;
1286
1269
}
1287
1270
1288
- mLaunchInProgress = false ;
1289
- mCondVar .NotifyOne ();
1290
-
1291
- ShowResourceUsageStats ();
1271
+ FinishLaunch ();
1292
1272
});
1293
1273
if (!err.IsNone ()) {
1294
- LockGuard lock {mMutex };
1295
-
1296
- mLaunchInProgress = false ;
1274
+ FinishLaunch ();
1297
1275
1298
1276
return AOS_ERROR_WRAP (err);
1299
1277
}
1300
1278
1301
1279
return ErrorEnum::eNone;
1302
1280
}
1303
1281
1282
+ void Launcher::FinishLaunch ()
1283
+ {
1284
+ LockGuard lock {mMutex };
1285
+
1286
+ mLaunchInProgress = false ;
1287
+ mCondVar .NotifyAll ();
1288
+
1289
+ ShowResourceUsageStats ();
1290
+ }
1291
+
1304
1292
} // namespace aos::sm::launcher
0 commit comments