CLOUDSTACK-3774: NPE while creating template from snapshot on a upgraded setup.

After upgrade the SSVM was staying in connecting/alert state. This was because
while handling the processConnect command for ssvm the management server was
trying to template sync. For resource limit calculation it was trying to get the
remote size of the template. If the template was no longer available a number
format exception was thrown. The process connect wasn't getting completed and
the ssvm used to stay in connecting/alert state. While creating template from
snapshot cloudstack looks for up and enabled ssvms and because there wasn't
any available (as the ssvm was in coonecting/alert state) it used to pick the
wrong resource (LocalNfs*Resource) instead of the NfsSecondaryStorageResource.

Fixed the issue by making sure number format exceptions are avoided so that
SSVM moves to the right state.
This commit is contained in:
Devdeep Singh 2013-08-06 16:19:35 +05:30
parent c229244dab
commit 41f7820709
1 changed files with 10 additions and 5 deletions

View File

@ -108,17 +108,22 @@ public class UriUtils {
HttpsURLConnection httpsConn = null;
try {
URI uri = new URI(url);
if(uri.getScheme().equalsIgnoreCase("http")) {
if (uri.getScheme().equalsIgnoreCase("http")) {
httpConn = (HttpURLConnection) uri.toURL().openConnection();
if (httpConn != null) {
remoteSize = Long.parseLong(httpConn.getHeaderField("content-length"));
String contentLength = httpConn.getHeaderField("content-length");
if (contentLength != null) {
remoteSize = Long.parseLong(contentLength);
}
httpConn.disconnect();
}
}
else if(uri.getScheme().equalsIgnoreCase("https")) {
} else if (uri.getScheme().equalsIgnoreCase("https")) {
httpsConn = (HttpsURLConnection) uri.toURL().openConnection();
if (httpsConn != null) {
remoteSize = Long.parseLong(httpsConn.getHeaderField("content-length"));
String contentLength = httpsConn.getHeaderField("content-length");
if (contentLength != null) {
remoteSize = Long.parseLong(contentLength);
}
httpsConn.disconnect();
}
}