Skip to content

Commit edd5f23

Browse files
Pearl1594Pearl Dsilva
andauthored
Fix NPE when Volume exists on secondary store but doesn't have a download URL (#4530)
Co-authored-by: Pearl Dsilva <[email protected]>
1 parent e5b7733 commit edd5f23

File tree

1 file changed

+5
-1
lines changed

1 file changed

+5
-1
lines changed

server/src/main/java/com/cloud/storage/VolumeApiServiceImpl.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2881,8 +2881,12 @@ private Optional<String> setExtractVolumeSearchCriteria(SearchCriteria<VolumeDat
28812881
} else if (volumeStoreRef != null) {
28822882
s_logger.debug("volume " + volumeId + " is already installed on secondary storage, install path is " +
28832883
volumeStoreRef.getInstallPath());
2884+
VolumeInfo destVol = volFactory.getVolume(volumeId, DataStoreRole.Image);
2885+
if (destVol == null) {
2886+
throw new CloudRuntimeException("Failed to find the volume on a secondary store");
2887+
}
28842888
ImageStoreEntity secStore = (ImageStoreEntity) dataStoreMgr.getDataStore(volumeStoreRef.getDataStoreId(), DataStoreRole.Image);
2885-
String extractUrl = secStore.createEntityExtractUrl(volumeStoreRef.getInstallPath(), volume.getFormat(), null);
2889+
String extractUrl = secStore.createEntityExtractUrl(volumeStoreRef.getInstallPath(), volume.getFormat(), destVol);
28862890
volumeStoreRef = _volumeStoreDao.findByVolume(volumeId);
28872891
volumeStoreRef.setExtractUrl(extractUrl);
28882892
volumeStoreRef.setExtractUrlCreated(DateUtil.now());

0 commit comments

Comments
 (0)