mirror of
https://github.com/apache/cloudstack.git
synced 2025-10-26 08:42:29 +01:00
Merge release branch 4.20 to main
* 4.20: Fix Stats Collector to not divide by zero (#10492) linstor: try to delete -rst resource before snapshot backup (#10443)
This commit is contained in:
commit
9c6f2a9e14
@ -5,6 +5,12 @@ All notable changes to Linstor CloudStack plugin will be documented in this file
|
|||||||
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
||||||
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
||||||
|
|
||||||
|
## [2025-02-21]
|
||||||
|
|
||||||
|
### Fixed
|
||||||
|
|
||||||
|
- Always try to delete cs-...-rst resource before doing a snapshot backup
|
||||||
|
|
||||||
## [2025-01-27]
|
## [2025-01-27]
|
||||||
|
|
||||||
### Fixed
|
### Fixed
|
||||||
|
|||||||
@ -1119,6 +1119,8 @@ public class LinstorPrimaryDataStoreDriverImpl implements PrimaryDataStoreDriver
|
|||||||
String snapshotName,
|
String snapshotName,
|
||||||
String restoredName) throws ApiException {
|
String restoredName) throws ApiException {
|
||||||
final String rscGrp = getRscGrp(storagePoolVO);
|
final String rscGrp = getRscGrp(storagePoolVO);
|
||||||
|
// try to delete -rst resource, could happen if the copy failed and noone deleted it.
|
||||||
|
deleteResourceDefinition(storagePoolVO, restoredName);
|
||||||
ResourceDefinitionCreate rdc = createResourceDefinitionCreate(restoredName, rscGrp);
|
ResourceDefinitionCreate rdc = createResourceDefinitionCreate(restoredName, rscGrp);
|
||||||
api.resourceDefinitionCreate(rdc);
|
api.resourceDefinitionCreate(rdc);
|
||||||
|
|
||||||
@ -1261,19 +1263,22 @@ public class LinstorPrimaryDataStoreDriverImpl implements PrimaryDataStoreDriver
|
|||||||
throws ApiException {
|
throws ApiException {
|
||||||
Answer answer;
|
Answer answer;
|
||||||
String restoreName = rscName + "-rst";
|
String restoreName = rscName + "-rst";
|
||||||
String devName = restoreResourceFromSnapshot(api, pool, rscName, snapshotName, restoreName);
|
try {
|
||||||
|
String devName = restoreResourceFromSnapshot(api, pool, rscName, snapshotName, restoreName);
|
||||||
|
|
||||||
Optional<RemoteHostEndPoint> optEPAny = getLinstorEP(api, restoreName);
|
Optional<RemoteHostEndPoint> optEPAny = getLinstorEP(api, restoreName);
|
||||||
if (optEPAny.isPresent()) {
|
if (optEPAny.isPresent()) {
|
||||||
// patch the src device path to the temporary linstor resource
|
// patch the src device path to the temporary linstor resource
|
||||||
snapshotObject.setPath(devName);
|
snapshotObject.setPath(devName);
|
||||||
origCmd.setSrcTO(snapshotObject.getTO());
|
origCmd.setSrcTO(snapshotObject.getTO());
|
||||||
answer = optEPAny.get().sendMessage(origCmd);
|
answer = optEPAny.get().sendMessage(origCmd);
|
||||||
} else{
|
} else{
|
||||||
answer = new Answer(origCmd, false, "Unable to get matching Linstor endpoint.");
|
answer = new Answer(origCmd, false, "Unable to get matching Linstor endpoint.");
|
||||||
|
}
|
||||||
|
} finally {
|
||||||
|
// delete the temporary resource, noop if already gone
|
||||||
|
api.resourceDefinitionDelete(restoreName);
|
||||||
}
|
}
|
||||||
// delete the temporary resource, noop if already gone
|
|
||||||
api.resourceDefinitionDelete(restoreName);
|
|
||||||
return answer;
|
return answer;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -718,10 +718,10 @@ public class StatsCollector extends ManagerBase implements ComponentMethodInterc
|
|||||||
getDynamicDataFromDB();
|
getDynamicDataFromDB();
|
||||||
long interval = (Long) dbStats.get(uptime) - lastUptime;
|
long interval = (Long) dbStats.get(uptime) - lastUptime;
|
||||||
long activity = (Long) dbStats.get(queries) - lastQueries;
|
long activity = (Long) dbStats.get(queries) - lastQueries;
|
||||||
loadHistory.add(0, Double.valueOf(activity / interval));
|
loadHistory.add(0, interval == 0 ? -1 : Double.valueOf(activity / interval));
|
||||||
int maxsize = DATABASE_SERVER_LOAD_HISTORY_RETENTION_NUMBER.value();
|
int maxsize = DATABASE_SERVER_LOAD_HISTORY_RETENTION_NUMBER.value();
|
||||||
while (loadHistory.size() > maxsize) {
|
while (loadHistory.size() > maxsize) {
|
||||||
loadHistory.remove(maxsize - 1);
|
loadHistory.remove(maxsize);
|
||||||
}
|
}
|
||||||
} catch (Throwable e) {
|
} catch (Throwable e) {
|
||||||
// pokemon catch to make sure the thread stays running
|
// pokemon catch to make sure the thread stays running
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user