[ 
https://issues.apache.org/jira/browse/CLOUDSTACK-5454?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13845944#comment-13845944
 ] 

Min Chen commented on CLOUDSTACK-5454:
--------------------------------------

As mentioned in our FS: 
https://cwiki.apache.org/confluence/display/CLOUDSTACK/Migration+of+NFS+Secondary+Storage+to+Object+Store,
 previous NFS store is not a read-only store. In requirement section, we have 
mentioned that "Only reads and deletes will be allowed on old NFS.". When you 
invoke deleteTemplate or deleteSnapshot before template/snapshot is migrated to 
S3, it should just succeed and remove those entries in previous NFS. Of course, 
if they have been migrated to S3, then we should remove those entries in both 
previous NFS and new S3. In either case, you should not see error in ms log 
regarding this deletion.  Fixed the error you reported in MS log.


> Deleting a snapshot from Secondary Staging store after migration returns 
> SUCCESS
> --------------------------------------------------------------------------------
>
>                 Key: CLOUDSTACK-5454
>                 URL: https://issues.apache.org/jira/browse/CLOUDSTACK-5454
>             Project: CloudStack
>          Issue Type: Bug
>      Security Level: Public(Anyone can view this level - this is the 
> default.) 
>          Components: Snapshot
>    Affects Versions: 4.3.0
>         Environment: Management Server: 4.3
> Host: kvm
>            Reporter: Pavan Kumar Bandarupally
>            Assignee: Min Chen
>            Priority: Critical
>             Fix For: 4.3.0
>
>
> After an NFS store has been migrated to Object store, it will be a read only 
> store. Any entities ,snapshots or templates , on this store prior to 
> migration should also be read only, which means user should not be able to 
> delete them.
> Deletion for template works as expected but the same for snapshot doesn't 
> work. In the UI user will be shown a successful task completion for snapshot 
> deletion. In the MS logs an exception is thrown but the job is rendered 
> SUCCESS. Job Trace below:
> 2013-12-11 18:06:57,128 DEBUG [c.c.a.ApiServlet] 
> (catalina-exec-25:ctx-08bb8b65) ===START===  10.146.0.11 -- GET  
> command=deleteSnapshot&id=d7a4b078-4fe7-4933-89b8-316c7c9be61c&response=json&sessionkey=u6C2YtXK2DU2l%2BSFpYbZ4wgNyww%3D&_=1386746147984
> 2013-12-11 18:06:56,591 DEBUG [c.c.a.m.AgentManagerImpl] 
> (AgentManager-Handler-7:null) SeqA 2-20435: Processing Seq 2-20435:  { Cmd , 
> MgmtId: -1, via: 2, Ver: v1, Flags: 11, 
> [{"com.cloud.agent.api.ConsoleProxyLoadReportCommand":{"_proxyVmId":1,"_loadInfo":"{\n
>   \"connections\": []\n}","wait":0}}] }
> 2013-12-11 18:07:00,367 DEBUG [c.c.h.d.HostDaoImpl] (ClusteredAgentManager 
> Timer:ctx-7a541b2c) Completed resetting hosts suitable for reconnect
> 2013-12-11 18:07:00,375 DEBUG [c.c.h.d.HostDaoImpl] (ClusteredAgentManager 
> Timer:ctx-7a541b2c) Acquiring hosts for clusters already owned by this 
> management server
> 2013-12-11 18:07:00,377 DEBUG [c.c.h.d.HostDaoImpl] (ClusteredAgentManager 
> Timer:ctx-7a541b2c) Completed acquiring hosts for clusters already owned by 
> this management server
> 2013-12-11 18:07:00,377 DEBUG [c.c.h.d.HostDaoImpl] (ClusteredAgentManager 
> Timer:ctx-7a541b2c) Acquiring hosts for clusters not owned by any management 
> server
> 2013-12-11 18:07:00,378 DEBUG [c.c.h.d.HostDaoImpl] (ClusteredAgentManager 
> Timer:ctx-7a541b2c) Completed acquiring hosts for clusters not owned by any 
> management server
> 2013-12-11 18:07:00,444 DEBUG [c.c.a.m.AgentManagerImpl] 
> (AgentManager-Handler-7:null) SeqA 2-20435: Sending Seq 2-20435:  { Ans: , 
> MgmtId: 6915098673184, via: 2, Ver: v1, Flags: 100010, 
> [{"com.cloud.agent.api.AgentControlAnswer":{"result":true,"wait":0}}] }
> 2013-12-11 18:07:00,704 DEBUG [c.c.s.s.SecondaryStorageManagerImpl] 
> (secstorage-1:ctx-d8b5b2d1) Zone 1 is ready to launch secondary storage VM
> 2013-12-11 18:07:00,712 DEBUG [o.a.c.f.j.i.AsyncJobManagerImpl] 
> (catalina-exec-25:ctx-08bb8b65 ctx-62ca804c) submit async job-43, details: 
> AsyncJobVO {id:43, userId: 2, accountId: 2, instanceType: Snapshot, 
> instanceId: 1, cmd: 
> org.apache.cloudstack.api.command.user.snapshot.DeleteSnapshotCmd, cmdInfo: 
> {"id":"d7a4b078-4fe7-4933-89b8-316c7c9be61c","response":"json","sessionkey":"u6C2YtXK2DU2l+SFpYbZ4wgNyww\u003d","cmdEventType":"SNAPSHOT.DELETE","ctxUserId":"2","httpmethod":"GET","_":"1386746147984","ctxAccountId":"2","ctxStartEventId":"121"},
>  cmdVersion: 0, status: IN_PROGRESS, processStatus: 0, resultCode: 0, result: 
> null, initMsid: 6915098673184, completeMsid: null, lastUpdated: null, 
> lastPolled: null, created: null}
> 2013-12-11 18:07:00,714 DEBUG [c.c.a.ApiServlet] 
> (catalina-exec-25:ctx-08bb8b65 ctx-62ca804c) ===END===  10.146.0.11 -- GET  
> command=deleteSnapshot&id=d7a4b078-4fe7-4933-89b8-316c7c9be61c&response=json&sessionkey=u6C2YtXK2DU2l%2BSFpYbZ4wgNyww%3D&_=1386746147984
> 2013-12-11 18:07:00,716 INFO  [o.a.c.f.j.i.AsyncJobMonitor] 
> (Job-Executor-13:ctx-e02ea08a) Add job-43 into job monitoring
> 2013-12-11 18:07:00,716 DEBUG [o.a.c.f.j.i.AsyncJobManagerImpl] 
> (Job-Executor-13:ctx-e02ea08a) Executing AsyncJobVO {id:43, userId: 2, 
> accountId: 2, instanceType: Snapshot, instanceId: 1, cmd: 
> org.apache.cloudstack.api.command.user.snapshot.DeleteSnapshotCmd, cmdInfo: 
> {"id":"d7a4b078-4fe7-4933-89b8-316c7c9be61c","response":"json","sessionkey":"u6C2YtXK2DU2l+SFpYbZ4wgNyww\u003d","cmdEventType":"SNAPSHOT.DELETE","ctxUserId":"2","httpmethod":"GET","_":"1386746147984","ctxAccountId":"2","ctxStartEventId":"121"},
>  cmdVersion: 0, status: IN_PROGRESS, processStatus: 0, resultCode: 0, result: 
> null, initMsid: 6915098673184, completeMsid: null, lastUpdated: null, 
> lastPolled: null, created: null}
> 2013-12-11 18:07:00,815 DEBUG [o.a.c.s.s.XenserverSnapshotStrategy] 
> (Job-Executor-13:ctx-e02ea08a ctx-62ca804c) delete snapshot chain for 
> snapshot: 1
> 2013-12-11 18:07:00,818 DEBUG [o.a.c.s.s.XenserverSnapshotStrategy] 
> (Job-Executor-13:ctx-e02ea08a ctx-62ca804c) Snapshot: 1 doesn't have 
> children, so it's ok to delete it and its parents
> 2013-12-11 18:07:00,897 DEBUG [c.c.a.t.Request] (Job-Executor-13:ctx-e02ea08a 
> ctx-62ca804c) Seq 3-1217003746: Sending  { Cmd , MgmtId: 6915098673184, via: 
> 3(s-2-VM), Ver: v1, Flags: 100011, 
> [{"org.apache.cloudstack.storage.command.DeleteCommand":{"data":{"org.apache.cloudstack.storage.to.SnapshotObjectTO":{"volume":{"uuid":"5ae95928-a717-48d3-8e33-f8b0c7ecc9de","volumeType":"ROOT","dataStore":{"org.apache.cloudstack.storage.to.PrimaryDataStoreTO":{"uuid":"9340974e-0bc0-39cb-a5b2-7303f47548aa","id":1,"poolType":"NetworkFilesystem","host":"10.147.28.7","path":"/export/home/pavan/primaryKVMS3","port":2049,"url":"NetworkFilesystem://10.147.28.7//export/home/pavan/primaryKVMS3/?ROLE=Primary&STOREUUID=9340974e-0bc0-39cb-a5b2-7303f47548aa"}},"name":"ROOT-3","size":8589934592,"path":"5ae95928-a717-48d3-8e33-f8b0c7ecc9de","volumeId":3,"vmName":"i-2-3-VM","accountId":2,"format":"QCOW2","id":3,"deviceId":0,"hypervisorType":"KVM"},"dataStore":{"com.cloud.agent.api.to.S3TO":{"id":2,"uuid":"4c9d7dc1-6e98-4792-8a59-1cd401c0582e","endPoint":"10.147.29.56:8080","bucketName":"pavankvmbucket","httpsFlag":false,"created":"Dec
>  10, 2013 10:31:15 
> PM","enableRRS":false,"maxSingleUploadSizeInBytes":5368709120}},"vmName":"i-2-3-VM","name":"CoSVMbeforeMigration_ROOT-3_20131210115423","hypervisorType":"KVM","id":1,"quiescevm":false}},"wait":0}}]
>  }
> 2013-12-11 18:07:00,952 DEBUG [c.c.c.ConsoleProxyManagerImpl] 
> (consoleproxy-1:ctx-7e8c193a) Zone 1 is ready to launch console proxy
> 2013-12-11 18:07:01,143 DEBUG [c.c.a.t.Request] (AgentManager-Handler-6:null) 
> Seq 3-1217003746: Processing:  { Ans: , MgmtId: 6915098673184, via: 3, Ver: 
> v1, Flags: 10, 
> [{"com.cloud.agent.api.Answer":{"result":false,"details":"Failed to delete 
> snapshot null from bucket pavankvmbucket due to the following error: The key 
> must be specified when deleting an object","wait":0}}] }
> 2013-12-11 18:07:01,143 DEBUG [c.c.a.t.Request] (Job-Executor-13:ctx-e02ea08a 
> ctx-62ca804c) Seq 3-1217003746: Received:  { Ans: , MgmtId: 6915098673184, 
> via: 3, Ver: v1, Flags: 10, { Answer } }
> 2013-12-11 18:07:01,144 DEBUG [o.a.c.s.s.SnapshotServiceImpl] 
> (Job-Executor-13:ctx-e02ea08a ctx-62ca804c) delete snapshot failedFailed to 
> delete snapshot null from bucket pavankvmbucket due to the following error: 
> The key must be specified when deleting an object
> 2013-12-11 18:07:01,175 DEBUG [o.a.c.s.s.XenserverSnapshotStrategy] 
> (Job-Executor-13:ctx-e02ea08a ctx-62ca804c) delete snapshot failed:
> com.cloud.utils.exception.CloudRuntimeException: Failed to delete snapshot 
> null from bucket pavankvmbucket due to the following error: The key must be 
> specified when deleting an object
>         at 
> org.apache.cloudstack.storage.snapshot.SnapshotServiceImpl.deleteSnapshot(SnapshotServiceImpl.java:386)
>         at 
> org.apache.cloudstack.storage.snapshot.XenserverSnapshotStrategy.deleteSnapshotChain(XenserverSnapshotStrategy.java:169)
>         at 
> org.apache.cloudstack.storage.snapshot.XenserverSnapshotStrategy.deleteSnapshot(XenserverSnapshotStrategy.java:229)
>         at 
> com.cloud.storage.snapshot.SnapshotManagerImpl.deleteSnapshot(SnapshotManagerImpl.java:428)
>         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>         at 
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
>         at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>         at java.lang.reflect.Method.invoke(Method.java:616)
>         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 
> com.cloud.event.ActionEventInterceptor.invoke(ActionEventInterceptor.java:50)
>         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 $Proxy161.deleteSnapshot(Unknown Source)
>         at 
> org.apache.cloudstack.api.command.user.snapshot.DeleteSnapshotCmd.execute(DeleteSnapshotCmd.java:97)
>         at com.cloud.api.ApiDispatcher.dispatch(ApiDispatcher.java:161)
>         at 
> com.cloud.api.ApiAsyncJobDispatcher.runJobInContext(ApiAsyncJobDispatcher.java:109)
>         at 
> com.cloud.api.ApiAsyncJobDispatcher$1.run(ApiAsyncJobDispatcher.java:66)
>         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 
> com.cloud.api.ApiAsyncJobDispatcher.runJob(ApiAsyncJobDispatcher.java:63)
>         at 
> org.apache.cloudstack.framework.jobs.impl.AsyncJobManagerImpl$5.runInContext(AsyncJobManagerImpl.java:520)
>         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 
> java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
>         at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
>         at java.util.concurrent.FutureTask.run(FutureTask.java:166)
>         at 
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
>         at 
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
>         at java.lang.Thread.run(Thread.java:679)
> 2013-12-11 18:07:01,246 DEBUG [o.a.c.f.j.i.AsyncJobManagerImpl] 
> (Job-Executor-13:ctx-e02ea08a ctx-62ca804c) Complete async job-43, jobStatus: 
> SUCCEEDED, resultCode: 0, result: 
> org.apache.cloudstack.api.response.SuccessResponse/null/{"success":true}
> 2013-12-11 18:07:01,259 DEBUG [o.a.c.f.j.i.AsyncJobManagerImpl] 
> (Job-Executor-13:ctx-e02ea08a) Done executing 
> org.apache.cloudstack.api.command.user.snapshot.DeleteSnapshotCmd for job-43
> 2013-12-11 18:07:01,282 INFO  [o.a.c.f.j.i.AsyncJobMonitor] 
> (Job-Executor-13:ctx-e02ea08a) Remove job-43 from job monitoring



--
This message was sent by Atlassian JIRA
(v6.1.4#6159)

Reply via email to