@@ -1305,15 +1305,15 @@ func (nc *NodeController) syncOrphans(node *longhorn.Node, collectedDataInfo map
1305
1305
newOrphanedReplicaDataStores , missingOrphanedReplicaDataStores :=
1306
1306
nc .getNewAndMissingOrphanedReplicaDataStores (diskName , diskInfo .DiskUUID , diskInfo .Path , diskInfo .OrphanedReplicaDataStores )
1307
1307
1308
- if err := nc .createOrphans (node , diskName , diskInfo , newOrphanedReplicaDataStores ); err != nil {
1308
+ if err := nc .createDataOrphans (node , diskName , diskInfo , newOrphanedReplicaDataStores ); err != nil {
1309
1309
return errors .Wrapf (err , "failed to create orphans for disk %v" , diskName )
1310
1310
}
1311
- if err := nc .deleteOrphans (node , diskName , diskInfo , missingOrphanedReplicaDataStores ); err != nil {
1311
+ if err := nc .deleteDataOrphans (node , diskName , diskInfo , missingOrphanedReplicaDataStores ); err != nil {
1312
1312
return errors .Wrapf (err , "failed to delete orphans for disk %v" , diskName )
1313
1313
}
1314
1314
}
1315
1315
1316
- return nil
1316
+ return nc . deleteInstanceOrphans ( node )
1317
1317
}
1318
1318
1319
1319
func (nc * NodeController ) getNewAndMissingOrphanedReplicaDataStores (diskName , diskUUID , diskPath string , replicaDataStores map [string ]string ) (map [string ]string , map [string ]string ) {
@@ -1356,7 +1356,33 @@ func (nc *NodeController) getNewAndMissingOrphanedReplicaDataStores(diskName, di
1356
1356
return newOrphanedReplicaDataStores , missingOrphanedReplicaDataStores
1357
1357
}
1358
1358
1359
- func (nc * NodeController ) deleteOrphans (node * longhorn.Node , diskName string , diskInfo * monitor.CollectedDiskInfo , missingOrphanedReplicaDataStores map [string ]string ) error {
1359
+ func (nc * NodeController ) deleteInstanceOrphans (node * longhorn.Node ) error {
1360
+ if ! node .Spec .EvictionRequested {
1361
+ return nil
1362
+ }
1363
+ nc .logger .Debugf ("Deleting orphaned instances to evict node %v" , node .Name )
1364
+
1365
+ orphans , err := nc .ds .ListOrphansByNodeRO (node .Name )
1366
+ if err != nil {
1367
+ return errors .Wrapf (err , "failed to list orphans to evict node %v" , node .Name )
1368
+ }
1369
+
1370
+ multiError := util .NewMultiError ()
1371
+ for _ , orphan := range orphans {
1372
+ switch orphan .Spec .Type {
1373
+ case longhorn .OrphanTypeEngineInstance , longhorn .OrphanTypeReplicaInstance :
1374
+ if err := nc .ds .DeleteOrphan (orphan .Name ); err != nil {
1375
+ multiError .Append (util .NewMultiError (fmt .Sprintf ("%v: %v" , orphan .Name , err )))
1376
+ }
1377
+ }
1378
+ }
1379
+ if len (multiError ) > 0 {
1380
+ return fmt .Errorf ("node controller failed to delete instance orphan CR: %v" , multiError .Join ())
1381
+ }
1382
+ return nil
1383
+ }
1384
+
1385
+ func (nc * NodeController ) deleteDataOrphans (node * longhorn.Node , diskName string , diskInfo * monitor.CollectedDiskInfo , missingOrphanedReplicaDataStores map [string ]string ) error {
1360
1386
autoDeletionResourceTypes , err := nc .ds .GetSettingOrphanResourceAutoDeletion ()
1361
1387
if err != nil {
1362
1388
return errors .Wrapf (err , "failed to get %v setting" , types .SettingNameOrphanResourceAutoDeletion )
@@ -1394,7 +1420,7 @@ func (nc *NodeController) deleteOrphans(node *longhorn.Node, diskName string, di
1394
1420
return nil
1395
1421
}
1396
1422
1397
- func (nc * NodeController ) createOrphans (node * longhorn.Node , diskName string , diskInfo * monitor.CollectedDiskInfo , newOrphanedReplicaDataStores map [string ]string ) error {
1423
+ func (nc * NodeController ) createDataOrphans (node * longhorn.Node , diskName string , diskInfo * monitor.CollectedDiskInfo , newOrphanedReplicaDataStores map [string ]string ) error {
1398
1424
for dataStore := range newOrphanedReplicaDataStores {
1399
1425
if err := nc .createOrphan (node , diskName , dataStore , diskInfo ); err != nil && ! apierrors .IsAlreadyExists (err ) {
1400
1426
return errors .Wrapf (err , "failed to create orphan for orphaned replica data store %v in disk %v on node %v" ,
0 commit comments