Github user mike-tutkowski commented on the issue:
https://github.com/apache/cloudstack/pull/1847
Let me provide a bit of background on this and then we can decide which way
we want to correct this side effect.
Here is the PR that went in a while ago that enabled CloudStack to support
volume snapshots that reside on primary storage:
https://github.com/apache/cloudstack/pull/1403
The idea being these types of snapshots are faster than the
back-up-to-secondary-storage approach CloudStack does by default and they can
be a lot more space efficient, as well.
As part of this process, I went through and tried to identify all of the
locations where we assumed a volume snapshot resided on secondary storage (and
I put in code to see if it really resides there or, instead, if it's on primary
storage).
As we have noted, a couple places were missed and this PR (as wells as
#1735) were opened to address those issues.
The way this particular PR's code is written should work fine. In the case
where the original primary storage has been removed, an exception will be
thrown, caught, logged, and then we will default to returning secondary storage
as the location (which it should be).
Instead of the try/catch approach, though, it might be better if we see if
dataStore is null.
DataStore dataStore = dataStoreMgr.getDataStore(storagePoolId,
DataStoreRole.Primary);
If that comes back null, then we apparently have removed primary storage,
which can only be done if your snapshots don't reside on it. If dataStore ==
null, return DataStoreRole.IMAGE.
---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at [email protected] or file a JIRA ticket
with INFRA.
---