You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by ra...@apache.org on 2015/04/29 07:43:46 UTC
[02/50] git commit: updated refs/heads/master to 0b83559
volume upload: cannot delete a volume in NotUploaded state Added exception handler in the upload status monitor thread.
Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/075c8410
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/075c8410
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/075c8410
Branch: refs/heads/master
Commit: 075c8410527df2fe58f5be0f4dcdfc358aeb6f82
Parents: d19ea52
Author: Koushik Das <ko...@apache.org>
Authored: Thu Feb 5 15:50:21 2015 +0530
Committer: Rajani Karuturi <ra...@gmail.com>
Committed: Tue Feb 17 12:31:41 2015 +0530
----------------------------------------------------------------------
.../storage/ImageStoreUploadMonitorImpl.java | 130 ++++++++++---------
1 file changed, 72 insertions(+), 58 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/075c8410/server/src/com/cloud/storage/ImageStoreUploadMonitorImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/storage/ImageStoreUploadMonitorImpl.java b/server/src/com/cloud/storage/ImageStoreUploadMonitorImpl.java
index d87fe60..b2cc5d9 100755
--- a/server/src/com/cloud/storage/ImageStoreUploadMonitorImpl.java
+++ b/server/src/com/cloud/storage/ImageStoreUploadMonitorImpl.java
@@ -178,74 +178,88 @@ public class ImageStoreUploadMonitorImpl extends ManagerBase implements ImageSto
// 6. In listener check for the answer and update DB accordingly
List<VolumeDataStoreVO> volumeDataStores = _volumeDataStoreDao.listByVolumeState(Volume.State.NotUploaded, Volume.State.UploadInProgress);
for (VolumeDataStoreVO volumeDataStore : volumeDataStores) {
- DataStore dataStore = storeMgr.getDataStore(volumeDataStore.getDataStoreId(), DataStoreRole.Image);
- EndPoint ep = _epSelector.select(dataStore, volumeDataStore.getExtractUrl());
- if (ep == null) {
- s_logger.warn("There is no secondary storage VM for image store " + dataStore.getName());
- continue;
- }
- VolumeVO volume = _volumeDao.findById(volumeDataStore.getVolumeId());
- if (volume == null) {
- s_logger.warn("Volume with id " + volumeDataStore.getVolumeId() + " not found");
- continue;
- }
- Host host = _hostDao.findById(ep.getId());
- UploadStatusCommand cmd = new UploadStatusCommand(volume.getUuid(), EntityType.Volume);
- if (host != null && host.getManagementServerId() != null) {
- if (_nodeId == host.getManagementServerId().longValue()) {
- Answer answer = null;
- try {
- answer = ep.sendMessage(cmd);
- } catch (CloudRuntimeException e) {
- s_logger.warn("Unable to get upload status for volume " + volume.getUuid() + ". Error details: " + e.getMessage());
- answer = new UploadStatusAnswer(cmd, UploadStatus.UNKNOWN, e.getMessage());
- }
- if (answer == null || !(answer instanceof UploadStatusAnswer)) {
- s_logger.warn("No or invalid answer corresponding to UploadStatusCommand for volume " + volumeDataStore.getVolumeId());
- continue;
+ try {
+ DataStore dataStore = storeMgr.getDataStore(volumeDataStore.getDataStoreId(), DataStoreRole.Image);
+ EndPoint ep = _epSelector.select(dataStore, volumeDataStore.getExtractUrl());
+ if (ep == null) {
+ s_logger.warn("There is no secondary storage VM for image store " + dataStore.getName());
+ continue;
+ }
+ VolumeVO volume = _volumeDao.findById(volumeDataStore.getVolumeId());
+ if (volume == null) {
+ s_logger.warn("Volume with id " + volumeDataStore.getVolumeId() + " not found");
+ continue;
+ }
+ Host host = _hostDao.findById(ep.getId());
+ UploadStatusCommand cmd = new UploadStatusCommand(volume.getUuid(), EntityType.Volume);
+ if (host != null && host.getManagementServerId() != null) {
+ if (_nodeId == host.getManagementServerId().longValue()) {
+ Answer answer = null;
+ try {
+ answer = ep.sendMessage(cmd);
+ } catch (CloudRuntimeException e) {
+ s_logger.warn("Unable to get upload status for volume " + volume.getUuid() + ". Error details: " + e.getMessage());
+ answer = new UploadStatusAnswer(cmd, UploadStatus.UNKNOWN, e.getMessage());
+ }
+ if (answer == null || !(answer instanceof UploadStatusAnswer)) {
+ s_logger.warn("No or invalid answer corresponding to UploadStatusCommand for volume " + volumeDataStore.getVolumeId());
+ continue;
+ }
+ handleVolumeStatusResponse((UploadStatusAnswer)answer, volume, volumeDataStore);
}
- handleVolumeStatusResponse((UploadStatusAnswer)answer, volume, volumeDataStore);
+ } else {
+ String error = "Volume " + volume.getUuid() + " failed to upload as SSVM is either destroyed or SSVM agent not in 'Up' state";
+ handleVolumeStatusResponse(new UploadStatusAnswer(cmd, UploadStatus.ERROR, error), volume, volumeDataStore);
+ }
+ } catch (Throwable th) {
+ s_logger.warn("Exception while checking status for uploaded volume " + volumeDataStore.getExtractUrl() + ". Error details: " + th.getMessage());
+ if (s_logger.isTraceEnabled()) {
+ s_logger.trace("Exception details: ", th);
}
- } else {
- String error = "Volume " + volume.getUuid() + " failed to upload as SSVM is either destroyed or SSVM agent not in 'Up' state";
- handleVolumeStatusResponse(new UploadStatusAnswer(cmd, UploadStatus.ERROR, error), volume, volumeDataStore);
}
}
// Handle for template upload as well
List<TemplateDataStoreVO> templateDataStores = _templateDataStoreDao.listByTemplateState(VirtualMachineTemplate.State.NotUploaded, VirtualMachineTemplate.State.UploadInProgress);
for (TemplateDataStoreVO templateDataStore : templateDataStores) {
- DataStore dataStore = storeMgr.getDataStore(templateDataStore.getDataStoreId(), DataStoreRole.Image);
- EndPoint ep = _epSelector.select(dataStore, templateDataStore.getExtractUrl());
- if (ep == null) {
- s_logger.warn("There is no secondary storage VM for image store " + dataStore.getName());
- continue;
- }
- VMTemplateVO template = _templateDao.findById(templateDataStore.getTemplateId());
- if (template == null) {
- s_logger.warn("Template with id " + templateDataStore.getTemplateId() + " not found");
- continue;
- }
- Host host = _hostDao.findById(ep.getId());
- UploadStatusCommand cmd = new UploadStatusCommand(template.getUuid(), EntityType.Template);
- if (host != null && host.getManagementServerId() != null) {
- if (_nodeId == host.getManagementServerId().longValue()) {
- Answer answer = null;
- try {
- answer = ep.sendMessage(cmd);
- } catch (CloudRuntimeException e) {
- s_logger.warn("Unable to get upload status for template " + template.getUuid() + ". Error details: " + e.getMessage());
- answer = new UploadStatusAnswer(cmd, UploadStatus.UNKNOWN, e.getMessage());
- }
- if (answer == null || !(answer instanceof UploadStatusAnswer)) {
- s_logger.warn("No or invalid answer corresponding to UploadStatusCommand for template " + templateDataStore.getTemplateId());
- continue;
+ try {
+ DataStore dataStore = storeMgr.getDataStore(templateDataStore.getDataStoreId(), DataStoreRole.Image);
+ EndPoint ep = _epSelector.select(dataStore, templateDataStore.getExtractUrl());
+ if (ep == null) {
+ s_logger.warn("There is no secondary storage VM for image store " + dataStore.getName());
+ continue;
+ }
+ VMTemplateVO template = _templateDao.findById(templateDataStore.getTemplateId());
+ if (template == null) {
+ s_logger.warn("Template with id " + templateDataStore.getTemplateId() + " not found");
+ continue;
+ }
+ Host host = _hostDao.findById(ep.getId());
+ UploadStatusCommand cmd = new UploadStatusCommand(template.getUuid(), EntityType.Template);
+ if (host != null && host.getManagementServerId() != null) {
+ if (_nodeId == host.getManagementServerId().longValue()) {
+ Answer answer = null;
+ try {
+ answer = ep.sendMessage(cmd);
+ } catch (CloudRuntimeException e) {
+ s_logger.warn("Unable to get upload status for template " + template.getUuid() + ". Error details: " + e.getMessage());
+ answer = new UploadStatusAnswer(cmd, UploadStatus.UNKNOWN, e.getMessage());
+ }
+ if (answer == null || !(answer instanceof UploadStatusAnswer)) {
+ s_logger.warn("No or invalid answer corresponding to UploadStatusCommand for template " + templateDataStore.getTemplateId());
+ continue;
+ }
+ handleTemplateStatusResponse((UploadStatusAnswer)answer, template, templateDataStore);
}
- handleTemplateStatusResponse((UploadStatusAnswer)answer, template, templateDataStore);
+ } else {
+ String error = "Template " + template.getUuid() + " failed to upload as SSVM is either destroyed or SSVM agent not in 'Up' state";
+ handleTemplateStatusResponse(new UploadStatusAnswer(cmd, UploadStatus.ERROR, error), template, templateDataStore);
+ }
+ } catch (Throwable th) {
+ s_logger.warn("Exception while checking status for uploaded template " + templateDataStore.getExtractUrl() + ". Error details: " + th.getMessage());
+ if (s_logger.isTraceEnabled()) {
+ s_logger.trace("Exception details: ", th);
}
- } else {
- String error = "Template " + template.getUuid() + " failed to upload as SSVM is either destroyed or SSVM agent not in 'Up' state";
- handleTemplateStatusResponse(new UploadStatusAnswer(cmd, UploadStatus.ERROR, error), template, templateDataStore);
}
}
}