@@ -1119,6 +1119,8 @@ private String restoreResourceFromSnapshot(
1119
1119
String snapshotName ,
1120
1120
String restoredName ) throws ApiException {
1121
1121
final String rscGrp = getRscGrp (storagePoolVO );
1122
+ // try to delete -rst resource, could happen if the copy failed and noone deleted it.
1123
+ deleteResourceDefinition (storagePoolVO , restoredName );
1122
1124
ResourceDefinitionCreate rdc = createResourceDefinitionCreate (restoredName , rscGrp );
1123
1125
api .resourceDefinitionCreate (rdc );
1124
1126
@@ -1261,19 +1263,22 @@ private Answer copyFromTemporaryResource(
1261
1263
throws ApiException {
1262
1264
Answer answer ;
1263
1265
String restoreName = rscName + "-rst" ;
1264
- String devName = restoreResourceFromSnapshot (api , pool , rscName , snapshotName , restoreName );
1265
-
1266
- Optional <RemoteHostEndPoint > optEPAny = getLinstorEP (api , restoreName );
1267
- if (optEPAny .isPresent ()) {
1268
- // patch the src device path to the temporary linstor resource
1269
- snapshotObject .setPath (devName );
1270
- origCmd .setSrcTO (snapshotObject .getTO ());
1271
- answer = optEPAny .get ().sendMessage (origCmd );
1272
- } else {
1273
- answer = new Answer (origCmd , false , "Unable to get matching Linstor endpoint." );
1266
+ try {
1267
+ String devName = restoreResourceFromSnapshot (api , pool , rscName , snapshotName , restoreName );
1268
+
1269
+ Optional <RemoteHostEndPoint > optEPAny = getLinstorEP (api , restoreName );
1270
+ if (optEPAny .isPresent ()) {
1271
+ // patch the src device path to the temporary linstor resource
1272
+ snapshotObject .setPath (devName );
1273
+ origCmd .setSrcTO (snapshotObject .getTO ());
1274
+ answer = optEPAny .get ().sendMessage (origCmd );
1275
+ } else {
1276
+ answer = new Answer (origCmd , false , "Unable to get matching Linstor endpoint." );
1277
+ }
1278
+ } finally {
1279
+ // delete the temporary resource, noop if already gone
1280
+ api .resourceDefinitionDelete (restoreName );
1274
1281
}
1275
- // delete the temporary resource, noop if already gone
1276
- api .resourceDefinitionDelete (restoreName );
1277
1282
return answer ;
1278
1283
}
1279
1284
0 commit comments