Hi, Yes you are right. We have tested issue on ACS 4.8 and issue remains on latest stable release of ACS when we have a vm with 3 snapshots and when we delete vm after that we could not delete these vm's some snapshots. Because after deleting one of them we noticed that primary volume_id is lost. We also noticed that there is a similar issue for listsnapshot api function for CLOUDSTACK-8845 issue. We plan to update CLOUDSTACK-8845 to make same fixes for destroysnapshot function.
S. Tolga Demir. 2016-02-24 16:30 GMT+02:00 Gabriel Beims Bräscher <[email protected]>: > Hi Semih, > > I do not know much about this issue with any practical experience to give > you an accurate shot. Checking the code (Apache CloudStack 4.6.2) I would > presume the following. > > CloudStack handles a snapshot if can find a volume related to the given > snapshot. With that, the CS is able to discover the snapshot storage pool. > > As in your case it could not find any volume (fails to find a "volume_id" > at table "snapshots" or the table "volumes" does not have the volume id > pointed by the snapshot); it tries to get the snapshot on the table > "snapshot_store_ref", checking for the snapshot id ("snapshot_id" column) > with the data store role of "primary" ("store_role" column). > > This exception (StorageSystemSnapshotStrategy.canHandle, at line 461) is > thrown because: > - the volume has been deleted or the database has some inconsistency that > the CS cannot find a volume with the snapshot id; > - there is some inconsistency in the"snapshot_store_ref" table. > > Hope I've helped, > Cheers Gabriel. > > > 2016-02-24 6:56 GMT-03:00 Semih Tolga DEMİR <[email protected]>: > > > Hi; > > > > I have created a new snapshot from VM01. But i have a problem after i > > deleted the VM01. I could not delete snapshot which created from VM01. > > > > Error message is " Unable to determine the storage pool of the snapshot " > > > > But i can create new volume from this snapshot. Anybody know why this > issue > > happens? > > > > Log : > > > > com.cloud.utils.exception.CloudRuntimeException: Unable to determine the > > storage pool of the snapshot > > at > > > > > org.apache.cloudstack.storage.snapshot.StorageSystemSnapshotStrategy.canHandle(StorageSystemSnapshotStrategy.java:461) > > at > > > > > org.apache.cloudstack.storage.helper.StorageStrategyFactoryImpl$3.canHandle(StorageStrategyFactoryImpl.java:72) > > at > > > > > org.apache.cloudstack.storage.helper.StorageStrategyFactoryImpl$3.canHandle(StorageStrategyFactoryImpl.java:69) > > at > > > > > org.apache.cloudstack.storage.helper.StorageStrategyFactoryImpl.bestMatch(StorageStrategyFactoryImpl.java:95) > > at > > > > > org.apache.cloudstack.storage.helper.StorageStrategyFactoryImpl.getSnapshotStrategy(StorageStrategyFactoryImpl.java:69) > > at > > > > > com.cloud.storage.snapshot.SnapshotManagerImpl.deleteSnapshot(SnapshotManagerImpl.java:444) > > at sun.reflect.GeneratedMethodAccessor722.invoke(Unknown Source) > > at > > > > > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) > > at java.lang.reflect.Method.invoke(Method.java:606) > > at > > > > > org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:317) > > at > > > > > org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:183) > > at > > > > > org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150) > > at > > > > > org.apache.cloudstack.network.contrail.management.EventUtils$EventInterceptor.invoke(EventUtils.java:106) > > at > > > > > org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:161) > > at > > > > > com.cloud.event.ActionEventInterceptor.invoke(ActionEventInterceptor.java:51) > > at > > > > > org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:161) > > at > > > > > org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:91) > > at > > > > > org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172) > > at > > > > > org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204) > > at com.sun.proxy.$Proxy187.deleteSnapshot(Unknown Source) > > at > > > > > org.apache.cloudstack.api.command.user.snapshot.DeleteSnapshotCmd.execute(DeleteSnapshotCmd.java:103) > > at com.cloud.api.ApiDispatcher.dispatch(ApiDispatcher.java:150) > > at > > > com.cloud.api.ApiAsyncJobDispatcher.runJob(ApiAsyncJobDispatcher.java:108) > > at > > > > > org.apache.cloudstack.framework.jobs.impl.AsyncJobManagerImpl$5.runInContext(AsyncJobManagerImpl.java:554) > > at > > > > > org.apache.cloudstack.managed.context.ManagedContextRunnable$1.run(ManagedContextRunnable.java:49) > > at > > > > > org.apache.cloudstack.managed.context.impl.DefaultManagedContext$1.call(DefaultManagedContext.java:56) > > at > > > > > org.apache.cloudstack.managed.context.impl.DefaultManagedContext.callWithContext(DefaultManagedContext.java:103) > > at > > > > > org.apache.cloudstack.managed.context.impl.DefaultManagedContext.runWithContext(DefaultManagedContext.java:53) > > at > > > > > org.apache.cloudstack.managed.context.ManagedContextRunnable.run(ManagedContextRunnable.java:46) > > at > > > > > org.apache.cloudstack.framework.jobs.impl.AsyncJobManagerImpl$5.run(AsyncJobManagerImpl.java:502) > > at > > java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) > > at java.util.concurrent.FutureTask.run(FutureTask.java:262) > > at > > > > > java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) > > at > > > > > java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) > > at java.lang.Thread.run(Thread.java:745) > > > > Thanks. > > >
