Bug 98430

Summary: History UI throws exceptions on unpublished content
Product: [Retired] Red Hat Enterprise CMS Reporter: Jon Orris <jorris>
Component: otherAssignee: Vadim Nasardinov <vnasardinov>
Status: CLOSED RAWHIDE QA Contact: Jon Orris <jorris>
Severity: high Docs Contact:
Priority: medium    
Version: nightlyCC: ccm-bugs-list, jross
Target Milestone: ---   
Target Release: ---   
Hardware: All   
OS: Linux   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2003-07-09 17:26:33 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Bug Depends On:    
Bug Blocks: 92111    

Description Jon Orris 2003-07-02 14:42:05 UTC
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)

Comment 1 Jon Orris 2003-07-02 14:44:59 UTC
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.


Comment 2 Richard Li 2003-07-03 19:47:00 UTC
Vadim, can you take a look? This still exists after your fix.

Comment 3 Vadim Nasardinov 2003-07-03 21:37:40 UTC
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.