Bug 787559 - [ovirt] [engine-core] force remove pool fails- postgres db key violation
Summary: [ovirt] [engine-core] force remove pool fails- postgres db key violation
Keywords:
Status: CLOSED WORKSFORME
Alias: None
Product: oVirt
Classification: Retired
Component: ovirt-engine-core
Version: unspecified
Hardware: Unspecified
OS: Unspecified
unspecified
high
Target Milestone: ---
: 3.3.4
Assignee: Laszlo Hornyak
QA Contact:
URL:
Whiteboard: storage
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2012-02-06 06:23 UTC by Haim
Modified: 2016-02-10 17:13 UTC (History)
9 users (show)

Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Clone Of:
Environment:
Last Closed: 2012-06-19 13:16:47 UTC
oVirt Team: Storage


Attachments (Terms of Use)
ovirt-engine logs (48.72 KB, application/x-gzip)
2012-02-06 06:25 UTC, Haim
no flags Details

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.


Note You need to log in before you can comment on or make changes to this bug.