Description of problem: @33139/Postgres The history UI gives a couple of different exceptions when accessing elements after unpublishing content. Steps: Create an article with an Image. Everything in the History UI works fine. Publish it. Unpublish it. Apply a workflow and change the content & image. Go to the history UI. Attempting to view the diff between the previously published version and the current version, or to view the old published version, gives: com.arsdigita.versioning.ProxyDataObject$CollectionAttributeException: slaveVersions has already been processed. attr: com.arsdigita.persistence.OID:12: serialized=com.arsdigita.cms.Folder;id:1:9036 deserialized=[com.arsdigita.cms.Folder:{id=9036}] operation: [com.arsdigita.versioning.GenericOperation:{id=3510}] attribute=slaveVersions changeset=[com.arsdigita.versioning.DataObjectChange:{id=3285}] eventType=[com.arsdigita.versioning.EventType:{id=4}] id=3510 javaclass=[com.arsdigita.versioning.JavaClass:{id=12}] subtype=1 value=com.arsdigita.cms.Folder;id:1:9036 at com.arsdigita.versioning.ProxyDataObject$Collection.add(ProxyDataObject.java:684) at com.arsdigita.versioning.ProxyDataObject.add(ProxyDataObject.java:234) at com.arsdigita.versioning.ProxyDataObject.undoRemove(ProxyDataObject.java:432) at com.arsdigita.versioning.ProxyDataObject.undoEvent(ProxyDataObject.java:391) at com.arsdigita.versioning.RollbackRecord.rollback(RollbackRecord.java:204) at com.arsdigita.versioning.RollbackRecord.computeDifferences(RollbackRecord.java:157) at com.arsdigita.versioning.RollbackRecord.diff(RollbackRecord.java:168) at com.arsdigita.versioning.Versions.diff(Versions.java:108) at com.arsdigita.versioning.Versions.diff(Versions.java:112) at com.arsdigita.cms.ui.revision.DifferencePane$ModelBuilder.makeModel(DifferencePane.java:159) at com.arsdigita.bebop.Table$3.initialValue(Table.java:768) at com.arsdigita.bebop.Table.generateXML(Table.java(Compiled Code)) at com.arsdigita.bebop.Table.generateXML(Table.java(Compiled Code)) at com.arsdigita.bebop.Table.generateXML(Table.java(Compiled Code)) at com.arsdigita.toolbox.ui.Section.generateXML(Section.java:117) at com.arsdigita.bebop.SimpleContainer.generateXML(SimpleContainer.java(Compiled Code)) at com.arsdigita.toolbox.ui.LayoutPanel.section(LayoutPanel.java(Compiled Code)) at com.arsdigita.toolbox.ui.LayoutPanel.generateXML(LayoutPanel.java:73) at com.arsdigita.toolbox.ui.ModalPanel.generateXML(ModalPanel.java:85) at com.arsdigita.toolbox.ui.ModalPanel.generateXML(ModalPanel.java:85) at com.arsdigita.bebop.TabbedPane.generateXML(TabbedPane.java:444) at com.arsdigita.bebop.SimpleContainer.generateXML(SimpleContainer.java(Compiled Code)) at com.arsdigita.bebop.Page.generateXML(Page.java:638) at com.arsdigita.bebop.Page.buildDocument(Page.java:736) at com.arsdigita.cms.dispatcher.CMSPage$1.excurse(CMSPage.java:262) at com.arsdigita.cms.CMSExcursion.run(CMSExcursion.java:71) at com.arsdigita.cms.dispatcher.CMSPage.dispatch(CMSPage.java:270) Attempting to view one of the Pre-published versions, such as the Edited or Authored version, gives: com.arsdigita.versioning.ProxyDataObject$CollectionAttributeException: slaveVersions has already been processed. attr: com.arsdigita.persistence.OID:12: serialized=com.arsdigita.cms.Folder;id:1:9036 deserialized=[com.arsdigita.cms.Folder:{id=9036}] operation: [com.arsdigita.versioning.GenericOperation:{id=3510}] attribute=slaveVersions changeset=[com.arsdigita.versioning.DataObjectChange:{id=3285}] eventType=[com.arsdigita.versioning.EventType:{id=4}] id=3510 javaclass=[com.arsdigita.versioning.JavaClass:{id=12}] subtype=1 value=com.arsdigita.cms.Folder;id:1:9036 at com.arsdigita.versioning.ProxyDataObject$Collection.add(ProxyDataObject.java:684) at com.arsdigita.versioning.ProxyDataObject.add(ProxyDataObject.java:234) at com.arsdigita.versioning.ProxyDataObject.undoRemove(ProxyDataObject.java:432) at com.arsdigita.versioning.ProxyDataObject.undoEvent(ProxyDataObject.java:391) at com.arsdigita.versioning.RollbackRecord.rollback(RollbackRecord.java:204) at com.arsdigita.versioning.RollbackRecord.computeDifferences(RollbackRecord.java:157) at com.arsdigita.versioning.RollbackRecord.diff(RollbackRecord.java:168) at com.arsdigita.versioning.Versions.diff(Versions.java:108) at com.arsdigita.versioning.Versions.diff(Versions.java:112) at com.arsdigita.cms.ui.revision.DifferencePane$ModelBuilder.makeModel(DifferencePane.java:159) at com.arsdigita.bebop.Table$3.initialValue(Table.java:768) at com.arsdigita.bebop.Table.generateXML(Table.java(Compiled Code)) at com.arsdigita.bebop.Table.generateXML(Table.java(Compiled Code)) at com.arsdigita.bebop.Table.generateXML(Table.java(Compiled Code)) at com.arsdigita.toolbox.ui.Section.generateXML(Section.java:117) at com.arsdigita.bebop.SimpleContainer.generateXML(SimpleContainer.java(Compiled Code)) at com.arsdigita.toolbox.ui.LayoutPanel.section(LayoutPanel.java(Compiled Code)) at com.arsdigita.toolbox.ui.LayoutPanel.generateXML(LayoutPanel.java:73) at com.arsdigita.toolbox.ui.ModalPanel.generateXML(ModalPanel.java:85) at com.arsdigita.toolbox.ui.ModalPanel.generateXML(ModalPanel.java:85) at com.arsdigita.bebop.TabbedPane.generateXML(TabbedPane.java:444) at com.arsdigita.bebop.SimpleContainer.generateXML(SimpleContainer.java(Compiled Code)) at com.arsdigita.bebop.Page.generateXML(Page.java:638) at com.arsdigita.bebop.Page.buildDocument(Page.java:736) at com.arsdigita.cms.dispatcher.CMSPage$1.excurse(CMSPage.java:262) at com.arsdigita.cms.CMSExcursion.run(CMSExcursion.java:71) at com.arsdigita.cms.dispatcher.CMSPage.dispatch(CMSPage.java:270) com.arsdigita.versioning.ProxyDataObject$CollectionAttributeException: slaveVersions has already been processed. attr: com.arsdigita.persistence.OID:12: serialized=com.arsdigita.cms.Folder;id:1:9036 deserialized=[com.arsdigita.cms.Folder:{id=9036}] operation: [com.arsdigita.versioning.GenericOperation:{id=3510}] attribute=slaveVersions changeset=[com.arsdigita.versioning.DataObjectChange:{id=3285}] eventType=[com.arsdigita.versioning.EventType:{id=4}] id=3510 javaclass=[com.arsdigita.versioning.JavaClass:{id=12}] subtype=1 value=com.arsdigita.cms.Folder;id:1:9036 at com.arsdigita.versioning.ProxyDataObject$Collection.add(ProxyDataObject.java:684) at com.arsdigita.versioning.ProxyDataObject.add(ProxyDataObject.java:234) at com.arsdigita.versioning.ProxyDataObject.undoRemove(ProxyDataObject.java:432) at com.arsdigita.versioning.ProxyDataObject.undoEvent(ProxyDataObject.java:391) at com.arsdigita.versioning.RollbackRecord.rollback(RollbackRecord.java:204) at com.arsdigita.versioning.RollbackRecord.computeDifferences(RollbackRecord.java:157) at com.arsdigita.versioning.RollbackRecord.diff(RollbackRecord.java:168) at com.arsdigita.versioning.Versions.diff(Versions.java:108) at com.arsdigita.versioning.Versions.diff(Versions.java:112) at com.arsdigita.cms.ui.revision.DifferencePane$ModelBuilder.makeModel(DifferencePane.java:159) at com.arsdigita.bebop.Table$3.initialValue(Table.java:768) at com.arsdigita.bebop.Table.generateXML(Table.java(Compiled Code)) at com.arsdigita.bebop.Table.generateXML(Table.java(Compiled Code)) at com.arsdigita.bebop.Table.generateXML(Table.java(Compiled Code)) at com.arsdigita.toolbox.ui.Section.generateXML(Section.java:117) at com.arsdigita.bebop.SimpleContainer.generateXML(SimpleContainer.java(Compiled Code)) at com.arsdigita.toolbox.ui.LayoutPanel.section(LayoutPanel.java(Compiled Code)) at com.arsdigita.toolbox.ui.LayoutPanel.generateXML(LayoutPanel.java:73) at com.arsdigita.toolbox.ui.ModalPanel.generateXML(ModalPanel.java:85) at com.arsdigita.toolbox.ui.ModalPanel.generateXML(ModalPanel.java:85) at com.arsdigita.bebop.TabbedPane.generateXML(TabbedPane.java:444) at com.arsdigita.bebop.SimpleContainer.generateXML(SimpleContainer.java(Compiled Code)) at com.arsdigita.bebop.Page.generateXML(Page.java:638) at com.arsdigita.bebop.Page.buildDocument(Page.java:736) at com.arsdigita.cms.dispatcher.CMSPage$1.excurse(CMSPage.java:262) at com.arsdigita.cms.CMSExcursion.run(CMSExcursion.java:71) at com.arsdigita.cms.dispatcher.CMSPage.dispatch(CMSPage.java:270) com.arsdigita.versioning.ProxyDataObject$CollectionAttributeException: slaveVersions has already been processed. attr: com.arsdigita.persistence.OID:12: serialized=com.arsdigita.cms.Folder;id:1:9036 deserialized=[com.arsdigita.cms.Folder:{id=9036}] operation: [com.arsdigita.versioning.GenericOperation:{id=3510}] attribute=slaveVersions changeset=[com.arsdigita.versioning.DataObjectChange:{id=3285}] eventType=[com.arsdigita.versioning.EventType:{id=4}] id=3510 javaclass=[com.arsdigita.versioning.JavaClass:{id=12}] subtype=1 value=com.arsdigita.cms.Folder;id:1:9036 at com.arsdigita.versioning.ProxyDataObject$Collection.add(ProxyDataObject.java:684) at com.arsdigita.versioning.ProxyDataObject.add(ProxyDataObject.java:234) at com.arsdigita.versioning.ProxyDataObject.undoRemove(ProxyDataObject.java:432) at com.arsdigita.versioning.ProxyDataObject.undoEvent(ProxyDataObject.java:391) at com.arsdigita.versioning.RollbackRecord.rollback(RollbackRecord.java:204) at com.arsdigita.versioning.RollbackRecord.computeDifferences(RollbackRecord.java:157) at com.arsdigita.versioning.RollbackRecord.diff(RollbackRecord.java:168) at com.arsdigita.versioning.Versions.diff(Versions.java:108) at com.arsdigita.versioning.Versions.diff(Versions.java:112) at com.arsdigita.cms.ui.revision.DifferencePane$ModelBuilder.makeModel(DifferencePane.java:159) at com.arsdigita.bebop.Table$3.initialValue(Table.java:768) at com.arsdigita.bebop.Table.generateXML(Table.java(Compiled Code)) at com.arsdigita.bebop.Table.generateXML(Table.java(Compiled Code)) at com.arsdigita.bebop.Table.generateXML(Table.java(Compiled Code)) at com.arsdigita.toolbox.ui.Section.generateXML(Section.java:117) at com.arsdigita.bebop.SimpleContainer.generateXML(SimpleContainer.java(Compiled Code)) at com.arsdigita.toolbox.ui.LayoutPanel.section(LayoutPanel.java(Compiled Code)) at com.arsdigita.toolbox.ui.LayoutPanel.generateXML(LayoutPanel.java:73) at com.arsdigita.toolbox.ui.ModalPanel.generateXML(ModalPanel.java:85) at com.arsdigita.toolbox.ui.ModalPanel.generateXML(ModalPanel.java:85) at com.arsdigita.bebop.TabbedPane.generateXML(TabbedPane.java:444) at com.arsdigita.bebop.SimpleContainer.generateXML(SimpleContainer.java(Compiled Code)) at com.arsdigita.bebop.Page.generateXML(Page.java:638) at com.arsdigita.bebop.Page.buildDocument(Page.java:736) at com.arsdigita.cms.dispatcher.CMSPage$1.excurse(CMSPage.java:262) at com.arsdigita.cms.CMSExcursion.run(CMSExcursion.java:71) at com.arsdigita.cms.dispatcher.CMSPage.dispatch(CMSPage.java:270) com.arsdigita.versioning.ProxyDataObject$CollectionAttributeException: slaveVersions has already been processed. attr: com.arsdigita.persistence.OID:12: serialized=com.arsdigita.cms.Folder;id:1:9036 deserialized=[com.arsdigita.cms.Folder:{id=9036}] operation: [com.arsdigita.versioning.GenericOperation:{id=3510}] attribute=slaveVersions changeset=[com.arsdigita.versioning.DataObjectChange:{id=3285}] eventType=[com.arsdigita.versioning.EventType:{id=4}] id=3510 javaclass=[com.arsdigita.versioning.JavaClass:{id=12}] subtype=1 value=com.arsdigita.cms.Folder;id:1:9036 at com.arsdigita.versioning.ProxyDataObject$Collection.add(ProxyDataObject.java:684) at com.arsdigita.versioning.ProxyDataObject.add(ProxyDataObject.java:234) at com.arsdigita.versioning.ProxyDataObject.undoRemove(ProxyDataObject.java:432) at com.arsdigita.versioning.ProxyDataObject.undoEvent(ProxyDataObject.java:391) at com.arsdigita.versioning.RollbackRecord.rollback(RollbackRecord.java:204) at com.arsdigita.versioning.RollbackRecord.computeDifferences(RollbackRecord.java:157) at com.arsdigita.versioning.RollbackRecord.diff(RollbackRecord.java:168) at com.arsdigita.versioning.Versions.diff(Versions.java:108) at com.arsdigita.versioning.Versions.diff(Versions.java:112) at com.arsdigita.cms.ui.revision.DifferencePane$ModelBuilder.makeModel(DifferencePane.java:159) at com.arsdigita.bebop.Table$3.initialValue(Table.java:768) at com.arsdigita.bebop.Table.generateXML(Table.java(Compiled Code)) at com.arsdigita.bebop.Table.generateXML(Table.java(Compiled Code)) at com.arsdigita.bebop.Table.generateXML(Table.java(Compiled Code)) at com.arsdigita.toolbox.ui.Section.generateXML(Section.java:117) at com.arsdigita.bebop.SimpleContainer.generateXML(SimpleContainer.java(Compiled Code)) at com.arsdigita.toolbox.ui.LayoutPanel.section(LayoutPanel.java(Compiled Code)) at com.arsdigita.toolbox.ui.LayoutPanel.generateXML(LayoutPanel.java:73) at com.arsdigita.toolbox.ui.ModalPanel.generateXML(ModalPanel.java:85) at com.arsdigita.toolbox.ui.ModalPanel.generateXML(ModalPanel.java:85) at com.arsdigita.bebop.TabbedPane.generateXML(TabbedPane.java:444) at com.arsdigita.bebop.SimpleContainer.generateXML(SimpleContainer.java(Compiled Code)) at com.arsdigita.bebop.Page.generateXML(Page.java:638) at com.arsdigita.bebop.Page.buildDocument(Page.java:736) at com.arsdigita.cms.dispatcher.CMSPage$1.excurse(CMSPage.java:262) at com.arsdigita.cms.CMSExcursion.run(CMSExcursion.java:71) at com.arsdigita.cms.dispatcher.CMSPage.dispatch(CMSPage.java:270) com.arsdigita.versioning.ProxyDataObject$CollectionAttributeException: slaveVersions has already been processed. attr: com.arsdigita.persistence.OID:12: serialized=com.arsdigita.cms.Folder;id:1:9036 deserialized=[com.arsdigita.cms.Folder:{id=9036}] operation: [com.arsdigita.versioning.GenericOperation:{id=3510}] attribute=slaveVersions changeset=[com.arsdigita.versioning.DataObjectChange:{id=3285}] eventType=[com.arsdigita.versioning.EventType:{id=4}] id=3510 javaclass=[com.arsdigita.versioning.JavaClass:{id=12}] subtype=1 value=com.arsdigita.cms.Folder;id:1:9036 at com.arsdigita.versioning.ProxyDataObject$Collection.add(ProxyDataObject.java:684) at com.arsdigita.versioning.ProxyDataObject.add(ProxyDataObject.java:234) at com.arsdigita.versioning.ProxyDataObject.undoRemove(ProxyDataObject.java:432) at com.arsdigita.versioning.ProxyDataObject.undoEvent(ProxyDataObject.java:391) at com.arsdigita.versioning.RollbackRecord.rollback(RollbackRecord.java:204) at com.arsdigita.versioning.RollbackRecord.computeDifferences(RollbackRecord.java:157) at com.arsdigita.versioning.RollbackRecord.diff(RollbackRecord.java:168) at com.arsdigita.versioning.Versions.diff(Versions.java:108) at com.arsdigita.versioning.Versions.diff(Versions.java:112) at com.arsdigita.cms.ui.revision.DifferencePane$ModelBuilder.makeModel(DifferencePane.java:159) at com.arsdigita.bebop.Table$3.initialValue(Table.java:768) at com.arsdigita.bebop.Table.generateXML(Table.java(Compiled Code)) at com.arsdigita.bebop.Table.generateXML(Table.java(Compiled Code)) at com.arsdigita.bebop.Table.generateXML(Table.java(Compiled Code)) at com.arsdigita.toolbox.ui.Section.generateXML(Section.java:117) at com.arsdigita.bebop.SimpleContainer.generateXML(SimpleContainer.java(Compiled Code)) at com.arsdigita.toolbox.ui.LayoutPanel.section(LayoutPanel.java(Compiled Code)) at com.arsdigita.toolbox.ui.LayoutPanel.generateXML(LayoutPanel.java:73) at com.arsdigita.toolbox.ui.ModalPanel.generateXML(ModalPanel.java:85) at com.arsdigita.toolbox.ui.ModalPanel.generateXML(ModalPanel.java:85) at com.arsdigita.bebop.TabbedPane.generateXML(TabbedPane.java:444) at com.arsdigita.bebop.SimpleContainer.generateXML(SimpleContainer.java(Compiled Code)) at com.arsdigita.bebop.Page.generateXML(Page.java:638) at com.arsdigita.bebop.Page.buildDocument(Page.java:736) at com.arsdigita.cms.dispatcher.CMSPage$1.excurse(CMSPage.java:262) at com.arsdigita.cms.CMSExcursion.run(CMSExcursion.java:71) at com.arsdigita.cms.dispatcher.CMSPage.dispatch(CMSPage.java:270)
ARGH. ETest broke copy & paste on Windoze _again_, so the second stack trace is a dup of the first. Will add the correct stack trace when I use a real OS again.
Vadim, can you take a look? This still exists after your fix.
This seems to be fixed by the combination of p4 changes 33248 and 33257. I think Justin should take a look at 33257 that fixes an NPE in OperationIterator. With the NPE fixed, the output of the diff looks like so (view in fixed-width font): Object | Property | Change -------------------+---------------+-------------------------- Publishing is Slow | SlaveVersions | Added Publishing is Slow | | Publishing is Slow | TextAsset | To Publishing is Slow | | From nothing | | Publishing is Slow | ImageCaptions | Removed Publishing is Slow | | Publishing is Slow | Lead | To "reaallly slow" | | From nothing | | null | ObjectType | To nothing | From "com.arsdigita.cms.contenttypes.Article" In other words, repeat the steps described by Jon above, and view the difference between the current version and the initial version. Notice the abundance of rows that look like so: Object: null Property: LaunchDate Change: To nothing From Thu Jul 17 00:00:00 EDT 2003 Not sure if this is the desired effect.