API vcloud sdk VApp.undeploy((UndeployPowerActionType.DEFAULT) выдает прерывистое исключение
Мы призываем API удалить vApps в нерабочее время, чтобы потом запустить их снова.
Я получаю неустойчивую ошибку при попытке удалить VApps. (Я дам полную трассировку стека позже).
Просто чтобы вы знали, что я делаю, я сначала вызываю VApp.shutdown(), который всегда, кажется, возвращает успех. Иногда я жду до 10 минут, прежде чем вызывать вызов Vapp.undeploy(UndeployPowerActionType.DEFAULT). Это все еще чаще, чем нет, не работает. Когда я снова запускаю его, он довольно часто работает (и когда я проверяю результат, Vapp действительно не развернут), или, если он все еще не работает, то, когда я вызываю его снова, он работает.
Трассировка стека выглядит следующим образом... (иногда индекс массива выходит за пределы диапазона с различными числами, например, -5 или -12 и т. Д. И т. Д. Но трассировка стека всегда выглядит следующим образом...)
2014-07-17 13:10:33 ОШИБКА [main] ControlModule:75 - Развертывание привело к ошибке java.lang.ArrayIndexOutOfBoundsException: индекс массива вне диапазона: -2 в com.sun.xml.bind.v2.util.CollisionCheckStack.findDuplicate(CollisionCheckStack.java:133) в com.sun.xml.bind.v2.util.CollisionCheckStack.push(CollisionCheckStack.java:71) в com.sun.xml.bind.v2.runtime.pushOject(XMLSject) XMLSerializer.java:494) по адресу com.sun.xml.bind.v2.runtime.XMLSerializer.childAsXsiType(XMLSerializer.java:609) по адресу com.sun.xml.bind.v2.runtime.property.SingleElementNodeProperty.serializeBode (SingleElement.java:113) в com.sun.xml.bind.v2.runtime.ElementBeanInfoImpl$1.serializeBody(ElementBeanInfoImpl.java:120) в com.sun.xml.bind.v2.runtime.ElementBeanInfoImpl $ 1.serializeBody (BoF) 149) в com.sun.xml.bind.v2.runtime.ElementBeanInfoImpl.serializeBody(ElementBeanInfoImpl.java:269) в com.sun.xml.bind.v2.runtime.ElementBeanInfoImpl.serializeRoot(ElementBean).sun.xml.bind.v2.runtime.ElementBeanInfoImpl.serializeRoot(ElementBeanInfoImpl.java:35) в com.sun.xml.bind.v2.runtime.XMLSerializer.childAsRoot(XMLSerializer.java:472ml) в com.sun.bind.v2.runtime.MarshallerImpl.write(MarshallerImpl.java:301) в com.sun.xml.bind.v2.runtime.MarshallerImpl.marshal(MarshallerImpl.java:230) в javax.xml.bind.helpers.AmplMarler.marshal(AbstractMarshallerImpl.java:106) в com.vmware.vcloud.sdk.JAXBUtil.marshal(JAXBUtil.java:199) в com.vmware.vcloud.sdk.AbstractVapp.createVappUnDeployParamBj: at. com (Аннотация) vmware.vcloud.sdk.AbstractVapp.undeploy(AbstractVapp.java:318) на com.ipt.ebsa.skyscape.client.module.ControlModule.controlVApp(ControlModule.java:70) на com.ipt.ebsa.skyscape.client.manager.VMManager.controlVApp(VMManager.java:294) на com.ipt.ebsa.skyscape.client.CloudManager.UndeployVApp(CloudManager.java:197) на com.ipt.ebsa.skyscape.client.RajVAApp Java:178) на com.ipt.ebsa.skyscape.client.RajVAppTest.testUndeployVApp0(RajVAppTest.java:121) в sun.reflect.NativeMethodAccessorImpl.invoke0(собственный метод) в sun.reflect.NativeMethodAccessorImpl.incess java:55) на java.lang.reflect.Method.invoke(Method.java:619) на org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:47) на org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) в org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44) в org.junit.internal.runners.statements.InvoeMehod () 17) на org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26) на org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:271) на org.junit.runners.BlockJUhitrClassCUhit4 (BlockJUnit4ClassRunner.java:70) в org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50) в org.junit.runners.ParentRunner$3.run(ParentRunner.java:238) в org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63) в org.junit.runners.ParentRunner.runChildren(.java:236) в org.junit.runners.ParentRunner.access$000(ParentRunner.java:53) в org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229) в org.junit.runners.ParentRunner. запустить (ParentRunner.java:309) в org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50) в org.eclipse.jdt.internal.junit.runner.TestExecution.TunExecution. Java:38) в org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467) в org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runT683 (удаленный) (удаленный) в org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390) в org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java-19) 17 13:10:33 DEBUG [main] ControlModule: 77 - Undepl Выключение vapp 'TEST_RAJ2' завершено 2014-07-17 13:10:33 DEBUG [main] VMManager:296 - выход controlVApp
Может кто-нибудь сказать мне, если я делаю что-то не так? Это нормальная практика, просто нужно повторить попытку, и в конечном итоге это сработает, чтобы удалить мой Vapp.
Если это так, и мне нужно продолжать повторную попытку, я могу обнаружить это исключение, и, если я его получу, повторить определенное количество раз, прежде чем, наконец, произойдет сбой и я сдаюсь?
Или есть другой способ определить, является ли Vapp незадействованным или нет?
Будет ли лучше вызывать shutdown (), а не undeploy()? Я думаю, по моему опыту, это кажется более последовательным. Тем не менее, получающиеся vApps в консоли называются "частично работающими", а не "выключенными". Это вполне может быть приемлемым, так как в конце концов мы просто хотим, чтобы наш партнер по облачному хостингу прекратил взимать с нас плату за периоды, когда нам не нужны vAPP. Я думаю, что закрытие vAPP может на самом деле достичь этой цели? Я должен был бы проверить с партнером облачного хостинга.
Буду признателен за любую оказанную помощь.
Спасибо,