Deletion of bundle folder does not check for bundle dependency

  • 7016034
  • 06-Jan-2015
  • 14-Sep-2015

Environment

Novell ZENworks Configuration Management 11.3 Bundles
Novell ZENworks Patch Management 11.3

Situation

A bundle folder contains one or more bundles which are referred to by a bundle launch or bundle install action from a bundle in another folder.
This bundle folder gets deleted in ZENworks Control Center

While the bundle folder is not seen in ZCC anymore, related entries stay behind in the SQL database.

Error message logged in loader-messages.log:
"...
[TRACE] [11/14/2014 16:44:24.693] [7070] [ZENLoader] [14071] [] [Loader.SoftDeletedObjectsCleanupHandler] [] [Error message from Database procedure zZENObjectDelete :  The DELETE statement conflicted with the REFERENCE constraint "fk_zLinkedObject_DependencyUID".
..."

The following could be seen in loader-messages.log if the database is Sybase:

ERROR:
"...
[Loader.SoftDeletedObjectsCleanupHandler] [] [Error message from Database procedure zZENObjectDelete : No primary key value for foreign key 'fk_zLinkedObject_DependencyUID' in table 'zLinkedObject']
[Loader.SoftDeletedObjectsCleanupHandler] [] [Failed to clean up 46 soft deleted objects.]

..."

Resolution

This is fixed in FTF Roll Up 1 for ZENworks 11.3.2 - see KB 7016205 "FTF Roll Up 1 for ZENworks 11.3.2 (7016205)" which can be found at  http://novell.com/support/kb/doc.php?id=7016205


Workaround:
Delete the bundles or bundle versions which contain such a bundle launch or bundle install action as mentioned above. See Additional Information section for a query to help determine the dependent bundles.

Cause

The parent bundle folder deletion should not go through if there is still an effective bundle dependency to a bundle below this folder object.

Additional Information

A so called softdelete functionality has been added with ZCM 11.3.

If a bundle, policy or device object gets delete in ZCC, the related entry in the SQL database zZenObject table gets flagged as deletable. There is background process handled by the zenloader Primary Server process schedule through the queue which actually clears the object information from the database.

For the Sybase database, the following query can be run to determine the dependent bundles that are preventing the delete from completing (This may also work on a Microsoft SQL Server database, but has not been tested):
select * from zZENObject where zuid in (select ContainingObjectUID from zlinkedobject where DependencyUID in (select zuid from zzenobject where tobedeleted = 1));