bug fixes

This commit is contained in:
Abhisar Sinha 2026-03-14 20:09:25 +05:30 committed by Abhishek Kumar
parent 05a5b03d95
commit 10ad7967cd
7 changed files with 23 additions and 28 deletions

View File

@ -25,16 +25,18 @@ public class StartNBDServerCommand extends Command {
private String volumePath;
private String socket;
private String direction;
private String fromCheckpointId;
public StartNBDServerCommand() {
}
protected StartNBDServerCommand(String transferId, String exportName, String volumePath, String socket, String direction) {
protected StartNBDServerCommand(String transferId, String exportName, String volumePath, String socket, String direction, String fromCheckpointId) {
this.transferId = transferId;
this.socket = socket;
this.exportName = exportName;
this.volumePath = volumePath;
this.direction = direction;
this.fromCheckpointId = fromCheckpointId;
}
public String getExportName() {
@ -61,4 +63,8 @@ public class StartNBDServerCommand extends Command {
public String getDirection() {
return direction;
}
public String getFromCheckpointId() {
return fromCheckpointId;
}
}

View File

@ -18,7 +18,6 @@
--;
-- Schema upgrade from 4.21.0.0 to 4.22.0.0
--;
not supported for download
-- health check status as enum
CALL `cloud`.`IDEMPOTENT_CHANGE_COLUMN`('router_health_check', 'check_result', 'check_result', 'varchar(16) NOT NULL COMMENT "check executions result: SUCCESS, FAILURE, WARNING, UNKNOWN"');

View File

@ -134,7 +134,7 @@ public class LibvirtCreateImageTransferCommandWrapper extends CommandWrapper<Cre
payload.put("export", exportName);
String checkpointId = cmd.getCheckpointId();
if (checkpointId != null) {
payload.put("export_bitmap", exportName + "-" + checkpointId.substring(0, 4));
payload.put("export_bitmap", cmd.getCheckpointId());
}
}

View File

@ -88,8 +88,8 @@ public class LibvirtStartBackupCommandWrapper extends CommandWrapper<StartBackup
script.add(backupCmd);
String result = script.execute();
// backupXmlFile.delete();
// checkpointXmlFile.delete();
backupXmlFile.delete();
checkpointXmlFile.delete();
if (result != null) {
return new StartBackupAnswer(cmd, false, "Backup begin failed: " + result);

View File

@ -69,10 +69,11 @@ public class LibvirtStartNBDServerCommandWrapper extends CommandWrapper<StartNBD
String socketName = "/tmp/imagetransfer/" + socket + ".sock";
String systemdRunCmd = String.format(
"systemd-run --unit=%s --property=Restart=no qemu-nbd --export-name %s --socket %s --persistent %s %s",
"systemd-run --unit=%s --property=Restart=no qemu-nbd --export-name %s --socket %s --persistent %s %s %s",
unitName,
exportName,
socketName,
cmd.getFromCheckpointId() != null ? "-B " + cmd.getFromCheckpointId() : "",
cmd.getDirection().equals("download") ? "--read-only" : "",
volumePath
);

View File

@ -38,7 +38,8 @@ public class LibvirtStopNBDServerCommandWrapper extends CommandWrapper<StopNBDSe
resetScript.execute();
}
private Answer handleUpload(StopNBDServerCommand cmd) {
@Override
public Answer execute(StopNBDServerCommand cmd, LibvirtComputingResource resource) {
try {
String unitName = "qemu-nbd-" + cmd.getTransferId().hashCode();
@ -68,17 +69,4 @@ public class LibvirtStopNBDServerCommandWrapper extends CommandWrapper<StopNBDSe
return new Answer(cmd, false, "Error finalizing image transfer: " + e.getMessage());
}
}
private Answer handleDownload(StopNBDServerCommand cmd) {
return new Answer(cmd, true, "Image transfer finalized");
}
@Override
public Answer execute(StopNBDServerCommand cmd, LibvirtComputingResource resource) {
if (cmd.getDirection().equals("download")) {
return handleDownload(cmd);
} else {
return handleUpload(cmd);
}
}
}

View File

@ -337,7 +337,7 @@ public class IncrementalBackupServiceImpl extends ManagerBase implements Increme
VMInstanceVO vm = vmInstanceDao.findById(backup.getVmId());
if (vm.getState() == State.Stopped) {
String volumePath = getVolumePathForFileBasedBackend(volume);
startNBDServer(transferId, direction, backup.getHostId(), volume.getUuid(), volumePath);
startNBDServer(transferId, direction, backup.getHostId(), volume.getUuid(), volumePath, vm.getActiveCheckpointId());
socket = transferId;
}
@ -393,7 +393,7 @@ public class IncrementalBackupServiceImpl extends ManagerBase implements Increme
return hosts.get(0);
}
private void startNBDServer(String transferId, String direction, Long hostId, String exportName, String volumePath) {
private void startNBDServer(String transferId, String direction, Long hostId, String exportName, String volumePath, String checkpointId) {
StartNBDServerAnswer nbdServerAnswer;
if (hostId == null) {
throw new CloudRuntimeException("Host cannot be determined for starting NBD server");
@ -407,7 +407,8 @@ public class IncrementalBackupServiceImpl extends ManagerBase implements Increme
exportName,
volumePath,
transferId,
direction
direction,
checkpointId
);
try {
nbdServerAnswer = (StartNBDServerAnswer) agentManager.send(hostId, nbdServerCmd);
@ -457,7 +458,7 @@ public class IncrementalBackupServiceImpl extends ManagerBase implements Increme
volumePath);
} else {
startNBDServer(transferId, direction, host.getId(), volume.getUuid(), volumePath);
startNBDServer(transferId, direction, host.getId(), volume.getUuid(), volumePath, null);
imageTransfer = new ImageTransferVO(
transferId,
null,
@ -486,7 +487,7 @@ public class IncrementalBackupServiceImpl extends ManagerBase implements Increme
if (!transferAnswer.getResult()) {
if (!backend.equals(ImageTransfer.Backend.file)) {
stopNbdServer(imageTransfer);
stopNBDServer(imageTransfer);
}
throw new CloudRuntimeException("Failed to create image transfer: " + transferAnswer.getDetails());
}
@ -578,14 +579,14 @@ public class IncrementalBackupServiceImpl extends ManagerBase implements Increme
VMInstanceVO vm = vmInstanceDao.findById(backup.getVmId());
if (vm.getState() == State.Stopped) {
boolean stopNbdServerResult = stopNbdServer(imageTransfer);
boolean stopNbdServerResult = stopNBDServer(imageTransfer);
if (!stopNbdServerResult) {
throw new CloudRuntimeException("Failed to stop the nbd server");
}
}
}
private boolean stopNbdServer(ImageTransferVO imageTransfer) {
private boolean stopNBDServer(ImageTransferVO imageTransfer) {
String transferId = imageTransfer.getUuid();
String direction = imageTransfer.getDirection().toString();
StopNBDServerCommand stopNbdServerCommand = new StopNBDServerCommand(transferId, direction);
@ -602,7 +603,7 @@ public class IncrementalBackupServiceImpl extends ManagerBase implements Increme
private void finalizeUploadImageTransfer(ImageTransferVO imageTransfer) {
String transferId = imageTransfer.getUuid();
boolean stopNbdServerResult = stopNbdServer(imageTransfer);
boolean stopNbdServerResult = stopNBDServer(imageTransfer);
if (!stopNbdServerResult) {
throw new CloudRuntimeException("Failed to stop the nbd server");
}