Bug 787559

Summary: [ovirt] [engine-core] force remove pool fails- postgres db key violation
Product: [Retired] oVirt Reporter: Haim <hateya>
Component: ovirt-engine-coreAssignee: Laszlo Hornyak <lhornyak>
Status: CLOSED WORKSFORME QA Contact:
Severity: high Docs Contact:
Priority: unspecified    
Version: unspecifiedCC: acathrow, amureini, dfediuck, emesika, iheim, mgoldboi, yeylon, ykaul, yzaslavs
Target Milestone: ---   
Target Release: 3.3.4   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard: storage
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2012-06-19 13:16:47 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: Storage RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Attachments:
Description Flags
ovirt-engine logs none

Description Haim 2012-02-06 06:23:47 UTC
Description of problem:

- trying to force remove db: 


2012-02-03 10:17:35,275 INFO  [org.ovirt.engine.core.vdsbroker.vdsbroker.SpmStopVDSCommand] (pool-5-thread-49) SpmStopVDSCommand::Stopping SPM on vds nott-vds3.qa.lab.tlv.redhat.com, pool id 61751252-99fe-45bc-bf24-dbf248172475
2012-02-03 10:17:36,338 INFO  [org.ovirt.engine.core.vdsbroker.vdsbroker.SpmStopVDSCommand] (pool-5-thread-49) FINISH, SpmStopVDSCommand, log id: 7899603a
2012-02-03 10:17:36,343 INFO  [org.ovirt.engine.core.vdsbroker.irsbroker.ResetIrsVDSCommand] (pool-5-thread-49) FINISH, ResetIrsVDSCommand, log id: 2e6be448
2012-02-03 10:17:36,343 INFO  [org.ovirt.engine.core.vdsbroker.irsbroker.SpmStopOnIrsVDSCommand] (pool-5-thread-49) FINISH, SpmStopOnIrsVDSCommand, log id: d662a6f
2012-02-03 10:17:36,347 INFO  [org.ovirt.engine.core.vdsbroker.vdsbroker.DisconnectStoragePoolVDSCommand] (pool-5-thread-49) START, DisconnectStoragePoolVDSCommand(vdsId = f697cabc-4846-11e1-a8ef-7316ed9cfe25, storagePoolId = 61751252-9
9fe-45bc-bf24-dbf248172475, vds_spm_id = 2, masterDomainId = 00000000-0000-0000-0000-000000000000, masterVersion = 0), log id: 54bd16f3
2012-02-03 10:17:36,980 INFO  [org.ovirt.engine.core.vdsbroker.vdsbroker.DisconnectStoragePoolVDSCommand] (pool-5-thread-49) FINISH, DisconnectStoragePoolVDSCommand, log id: 54bd16f3
2012-02-03 10:17:36,987 INFO  [org.ovirt.engine.core.vdsbroker.vdsbroker.DisconnectStorageServerVDSCommand] (pool-5-thread-49) START, DisconnectStorageServerVDSCommand(vdsId = f697cabc-4846-11e1-a8ef-7316ed9cfe25, storagePoolId = 617512
52-99fe-45bc-bf24-dbf248172475, storageType = ISCSI, connectionList = [{ id: e6e8bd5a-c432-4ed6-ada2-2e3c8833d29d, connection: 10.35.64.81 };]), log id: 49d837cc
2012-02-03 10:17:39,053 INFO  [org.ovirt.engine.core.vdsbroker.vdsbroker.DisconnectStorageServerVDSCommand] (pool-5-thread-49) FINISH, DisconnectStorageServerVDSCommand, return: {e6e8bd5a-c432-4ed6-ada2-2e3c8833d29d=0}, log id: 49d837cc
2012-02-03 10:17:45,126 INFO  [org.ovirt.engine.core.bll.MultipleActionsRunner] (http--0.0.0.0-8080-5) MultipleActionsRunner of type RemoveStorageDomain invoked with no actions
2012-02-03 10:17:45,174 WARN  [org.ovirt.engine.core.bll.storage.DetachStorageDomainFromPoolCommand] (http--0.0.0.0-8080-5) CanDoAction of action DetachStorageDomainFromPool failed. Reasons:VAR__TYPE__STORAGE__DOMAIN,VAR__ACTION__DETACH
,ACTION_TYPE_FAILED_MASTER_STORAGE_DOMAIN_NOT_ACTIVE
2012-02-03 10:17:58,895 INFO  [org.ovirt.engine.core.bll.storage.RemoveStoragePoolCommand] (http--0.0.0.0-8080-5) Running command: RemoveStoragePoolCommand internal: false. Entities affected :  ID: 61751252-99fe-45bc-bf24-dbf248172475 T
ype: StoragePool
2012-02-03 10:17:59,005 INFO  [org.ovirt.engine.core.utils.transaction.TransactionSupport] (http--0.0.0.0-8080-5) transaction rolled back
2012-02-03 10:17:59,005 ERROR [org.ovirt.engine.core.bll.storage.RemoveStoragePoolCommand] (http--0.0.0.0-8080-5) Command org.ovirt.engine.core.bll.storage.RemoveStoragePoolCommand throw exception: org.springframework.dao.DataIntegrityV
iolationException: CallableStatementCallback; SQL [{call force_delete_storage_domain(?)}]; ERROR: update or delete on table "image_templates" violates foreign key constraint "image_templates_vm_template_image_map" on table "vm_template_
image_map"
  Detail: Key (it_guid)=(00000000-0000-0000-0000-000000000000) is still referenced from table "vm_template_image_map".
  Where: SQL statement "delete FROM image_templates where it_guid in(select it_guid from tt_TEMPTEMPLATEIMAGESTABLE)"
PL/pgSQL function "force_delete_storage_domain" line 45 at SQL statement; nested exception is org.postgresql.util.PSQLException: ERROR: update or delete on table "image_templates" violates foreign key constraint "image_templates_vm_template_image_map" on table "vm_template_image_map"
  Detail: Key (it_guid)=(00000000-0000-0000-0000-000000000000) is still referenced from table "vm_template_image_map".
  Where: SQL statement "delete FROM image_templates where it_guid in(select it_guid from tt_TEMPTEMPLATEIMAGESTABLE)"
PL/pgSQL function "force_delete_storage_domain" line 45 at SQL statement
        at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.doTranslate(SQLErrorCodeSQLExceptionTranslator.java:228) [spring-jdbc-2.5.6.SEC02.jar:]
        at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:72) [spring-jdbc-2.5.6.SEC02.jar:]
        at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:952) [spring-jdbc-2.5.6.SEC02.jar:]
        at org.springframework.jdbc.core.JdbcTemplate.call(JdbcTemplate.java:985) [spring-jdbc-2.5.6.SEC02.jar:]
        at org.springframework.jdbc.core.simple.AbstractJdbcCall.executeCallInternal(AbstractJdbcCall.java:368) [spring-jdbc-2.5.6.SEC02.jar:]
        at org.springframework.jdbc.core.simple.AbstractJdbcCall.doExecute(AbstractJdbcCall.java:342) [spring-jdbc-2.5.6.SEC02.jar:]
        at org.springframework.jdbc.core.simple.SimpleJdbcCall.execute(SimpleJdbcCall.java:164) [spring-jdbc-2.5.6.SEC02.jar:]
        at org.ovirt.engine.core.dal.dbbroker.SimpleJdbcCallsHandler.executeImpl(SimpleJdbcCallsHandler.java:112) [engine-dal.jar:]
        at org.ovirt.engine.core.dal.dbbroker.SimpleJdbcCallsHandler.executeModification(SimpleJdbcCallsHandler.java:39) [engine-dal.jar:]
        at org.ovirt.engine.core.dao.StorageDomainDAODbFacadeImpl.remove(StorageDomainDAODbFacadeImpl.java:144) [engine-dal.jar:]
        at org.ovirt.engine.core.bll.storage.RemoveStoragePoolCommand$10.runInTransaction(RemoveStoragePoolCommand.java:262) [engine-bll.jar:]
        at org.ovirt.engine.core.bll.storage.RemoveStoragePoolCommand$10.runInTransaction(RemoveStoragePoolCommand.java:253) [engine-bll.jar:]
        at org.ovirt.engine.core.utils.transaction.TransactionSupport.executeInNewTransaction(TransactionSupport.java:204) [utils-3.0.0-0001.jar:]
        at org.ovirt.engine.core.bll.storage.RemoveStoragePoolCommand.removeDomainFromDb(RemoveStoragePoolCommand.java:253) [engine-bll.jar:]
        at org.ovirt.engine.core.bll.storage.RemoveStoragePoolCommand.forceRemoveStorageDomains(RemoveStoragePoolCommand.java:121) [engine-bll.jar:]
        at org.ovirt.engine.core.bll.storage.RemoveStoragePoolCommand.executeCommand(RemoveStoragePoolCommand.java:74) [engine-bll.jar:]
        at org.ovirt.engine.core.bll.CommandBase.ExecuteWithoutTransaction(CommandBase.java:617) [engine-bll.jar:]
        at org.ovirt.engine.core.bll.CommandBase.executeActionInTransactionScope(CommandBase.java:709) [engine-bll.jar:]
        at org.ovirt.engine.core.bll.CommandBase.runInTransaction(CommandBase.java:978) [engine-bll.jar:]
        at org.ovirt.engine.core.utils.transaction.TransactionSupport.executeInSuppressed(TransactionSupport.java:168) [utils-3.0.0-0001.jar:]
        at org.ovirt.engine.core.utils.transaction.TransactionSupport.executeInScope(TransactionSupport.java:107) [utils-3.0.0-0001.jar:]
        at org.ovirt.engine.core.bll.CommandBase.Execute(CommandBase.java:722) [engine-bll.jar:]
:


Repro:
- pool (iSCSI), 2 data-domains, export and ISO 
- detach both ISO and export 
- put both data domains in maintenance
- force remove pool - approve 

data-domains have both templates and vms.  

ovirt-engine-genericapi-3.0.0_0001-1.4.fc16.x86_64
ovirt-engine-restapi-3.0.0_0001-1.4.fc16.x86_64
ovirt-guest-agent-gdm-plugin-1.0.0-1.fc16.x86_64
ovirt-engine-jbossas-1.2-2.fc16.x86_64
ovirt-engine-notification-service-3.0.0_0001-1.4.fc16.x86_64
ovirt-node-tools-2.2.1-1.fc16.noarch
ovirt-engine-dbscripts-3.0.0_0001-1.4.fc16.x86_64
ovirt-engine-setup-3.0.0_0001-1.4.fc16.x86_64
ovirt-engine-userportal-3.0.0_0001-1.4.fc16.x86_64
ovirt-engine-3.0.0_0001-1.4.fc16.x86_64
ovirt-guest-agent-kdm-plugin-1.0.0-1.fc16.x86_64
ovirt-engine-sdk-1.2-1.fc16.x86_64
ovirt-engine-iso-uploader-3.0.0_0001-1.4.fc16.x86_64
ovirt-engine-config-3.0.0_0001-1.4.fc16.x86_64
ovirt-engine-jboss-deps-3.0.0_0001-1.4.fc16.x86_64
ovirt-engine-webadmin-portal-3.0.0_0001-1.4.fc16.x86_64
ovirt-engine-cli-1.2-1.fc16.x86_64
ovirt-guest-agent-pam-module-1.0.0-1.fc16.x86_64
ovirt-engine-tools-common-3.0.0_0001-1.4.fc16.x86_64
ovirt-node-2.2.1-1.fc16.noarch
ovirt-engine-log-collector-3.0.0_0001-1.4.fc16.x86_64
ovirt-engine-backend-3.0.0_0001-1.4.fc16.x86_64
ovirt-guest-agent-debuginfo-1.0.0-1.fc16.x86_64
ovirt-guest-agent-1.0.0-1.fc16.x86_6

Comment 1 Haim 2012-02-06 06:25:19 UTC
Created attachment 559555 [details]
ovirt-engine logs

Comment 2 Laszlo Hornyak 2012-02-10 11:57:46 UTC
One fix on the definition: force remove data center, not pool

The same issue can not happen, since Mike dropped the vm_template_image_map on the 19th January (fa65ec62fa8ed15ceb1e717fafcd7f0921425ef9)

However, I managed to generate a very similar issue once. (and still trying to do it again)

Comment 3 Laszlo Hornyak 2012-06-19 13:16:47 UTC
checked, does not reproduce.

the table mentioned in the bug no longer exists.