We're testing our 5.0.18 -> 6.0.7 upgrade procedure, which calls for undeploying a number of custom zimlets. Something didn't work right during the upgrade and while the zimlets aren't physically installed on any of the mailbox servers (there's four in our cluster), they're listed in LDAP. zmzimletctl undeploy [zimletname] *appears* to work:
Code:
2010-08-10 23:05:01,911 INFO [Thread-1763] [] zimlet - Uninstalling Zimlet ca_sfu_icat_courseinfo from LDAP.
2010-08-10 23:05:02,348 INFO [Thread-1763] [] zimlet - Removing Zimlet ca_sfu_icat_courseinfo from COS default
2010-08-10 23:05:02,666 WARN [Thread-1763] [] zimlet - Zimlet not found: /opt/zimbra/zimlets-deployed/ca_sfu_icat_courseinfo
2010-08-10 23:05:04,818 INFO [Thread-1763] [] zimlet - Removing Zimlet ca_sfu_icat_courseinfo from COS earlyadopters
2010-08-10 23:05:05,198 INFO [Thread-1763] [] zimlet - Removing Zimlet ca_sfu_icat_courseinfo from COS equipment
2010-08-10 23:05:05,435 INFO [Thread-1763] [] zimlet - Removing Zimlet ca_sfu_icat_courseinfo from COS itds-earlyadopter
2010-08-10 23:05:05,653 INFO [Thread-1763] [] zimlet - Removing Zimlet ca_sfu_icat_courseinfo from COS locations
2010-08-10 23:05:05,853 INFO [Thread-1763] [] zimlet - Removing Zimlet ca_sfu_icat_courseinfo from COS techteam
... but the zimlets remain listed in LDAP (and in the admin console). Attempting to disable a rogue zimlet results in a stack dump being printed to STDOUT:
Code:
[] INFO: Disabling Zimlet ca_sfu_icat_courseinfo
[] WARN: Zimlet not found: /opt/zimbra/zimlets-deployed/ca_sfu_icat_courseinfo
com.zimbra.cs.zimlet.ZimletException: Cannot disable Zimlet ca_sfu_icat_courseinfo
at com.zimbra.cs.zimlet.ZimletException.CANNOT_DISABLE(ZimletException.java:70)
at com.zimbra.cs.zimlet.ZimletUtil.setZimletEnable(ZimletUtil.java:848)
at com.zimbra.cs.zimlet.ZimletUtil.disableZimlet(ZimletUtil.java:873)
at com.zimbra.cs.zimlet.ZimletUtil.dispatch(ZimletUtil.java:1829)
at com.zimbra.cs.zimlet.ZimletUtil.main(ZimletUtil.java:1888)
Caused by: com.zimbra.common.service.ServiceException: system failure: unable to modify attrs: [LDAP: error code 32 - No Such Object]
ExceptionId:main:1281506992893:07efd5967419c5c9
Code:service.FAILURE
at com.zimbra.common.service.ServiceException.FAILURE(ServiceException.java:248)
at com.zimbra.cs.account.ldap.LdapProvisioning.modifyAttrsInternal(LdapProvisioning.java:351)
at com.zimbra.cs.account.ldap.LdapProvisioning.modifyAttrs(LdapProvisioning.java:314)
at com.zimbra.cs.account.ldap.LdapProvisioning.modifyAttrs(LdapProvisioning.java:295)
at com.zimbra.cs.account.Provisioning.modifyAttrs(Provisioning.java:301)
at com.zimbra.cs.zimlet.ZimletUtil.setZimletEnable(ZimletUtil.java:843)
... 3 more
Caused by: javax.naming.NameNotFoundException: [LDAP: error code 32 - No Such Object]; remaining name 'cn=ca_sfu_icat_courseinfo,cn=zimlets,cn=zimbra'
at com.sun.jndi.ldap.LdapCtx.mapErrorCode(LdapCtx.java:3066)
at com.sun.jndi.ldap.LdapCtx.processReturnCode(LdapCtx.java:2987)
at com.sun.jndi.ldap.LdapCtx.processReturnCode(LdapCtx.java:2794)
at com.sun.jndi.ldap.LdapCtx.c_modifyAttributes(LdapCtx.java:1455)
at com.sun.jndi.toolkit.ctx.ComponentDirContext.p_modifyAttributes(ComponentDirContext.java:255)
at com.sun.jndi.toolkit.ctx.PartialCompositeDirContext.modifyAttributes(PartialCompositeDirContext.java:172)
at javax.naming.directory.InitialDirContext.modifyAttributes(InitialDirContext.java:153)
at com.zimbra.cs.account.ldap.ZimbraLdapContext.modifyAttributes(ZimbraLdapContext.java:644)
at com.zimbra.cs.account.ldap.LdapUtil.modifyAttrs(LdapUtil.java:421)
at com.zimbra.cs.account.ldap.LdapProvisioning.modifyAttrsInternal(LdapProvisioning.java:336)
... 7 more
[] ERROR: Error
com.zimbra.cs.zimlet.ZimletException: Cannot disable Zimlet ca_sfu_icat_courseinfo
at com.zimbra.cs.zimlet.ZimletException.CANNOT_DISABLE(ZimletException.java:70)
at com.zimbra.cs.zimlet.ZimletUtil.setZimletEnable(ZimletUtil.java:848)
at com.zimbra.cs.zimlet.ZimletUtil.disableZimlet(ZimletUtil.java:873)
at com.zimbra.cs.zimlet.ZimletUtil.dispatch(ZimletUtil.java:1829)
at com.zimbra.cs.zimlet.ZimletUtil.main(ZimletUtil.java:1888)
Caused by: com.zimbra.common.service.ServiceException: system failure: unable to modify attrs: [LDAP: error code 32 - No Such Object]
ExceptionId:main:1281506992893:07efd5967419c5c9
Code:service.FAILURE
at com.zimbra.common.service.ServiceException.FAILURE(ServiceException.java:248)
at com.zimbra.cs.account.ldap.LdapProvisioning.modifyAttrsInternal(LdapProvisioning.java:351)
at com.zimbra.cs.account.ldap.LdapProvisioning.modifyAttrs(LdapProvisioning.java:314)
at com.zimbra.cs.account.ldap.LdapProvisioning.modifyAttrs(LdapProvisioning.java:295)
at com.zimbra.cs.account.Provisioning.modifyAttrs(Provisioning.java:301)
at com.zimbra.cs.zimlet.ZimletUtil.setZimletEnable(ZimletUtil.java:843)
... 3 more
Caused by: javax.naming.NameNotFoundException: [LDAP: error code 32 - No Such Object]; remaining name 'cn=ca_sfu_icat_courseinfo,cn=zimlets,cn=zimbra'
at com.sun.jndi.ldap.LdapCtx.mapErrorCode(LdapCtx.java:3066)
at com.sun.jndi.ldap.LdapCtx.processReturnCode(LdapCtx.java:2987)
at com.sun.jndi.ldap.LdapCtx.processReturnCode(LdapCtx.java:2794)
at com.sun.jndi.ldap.LdapCtx.c_modifyAttributes(LdapCtx.java:1455)
at com.sun.jndi.toolkit.ctx.ComponentDirContext.p_modifyAttributes(ComponentDirContext.java:255)
at com.sun.jndi.toolkit.ctx.PartialCompositeDirContext.modifyAttributes(PartialCompositeDirContext.java:172)
at javax.naming.directory.InitialDirContext.modifyAttributes(InitialDirContext.java:153)
at com.zimbra.cs.account.ldap.ZimbraLdapContext.modifyAttributes(ZimbraLdapContext.java:644)
at com.zimbra.cs.account.ldap.LdapUtil.modifyAttrs(LdapUtil.java:421)
at com.zimbra.cs.account.ldap.LdapProvisioning.modifyAttrsInternal(LdapProvisioning.java:336)
... 7 more
How can I excise these ghost zimlets from LDAP? I've tried every incantation of zmprov flushCache I can think of, as well as restarting the server (zmcontrol) a number of times.