[ 
http://jira.magnolia-cms.com/browse/MAGNOLIA-3837?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Grégory Joseph updated MAGNOLIA-3837:
-------------------------------------

    Description: 
The code change introduced for MAGNOLIA-3693 makes it impossible to deserialize 
existing workitems which were created with 4.4.4 or earlier versions. 

As such, just looking at the workflow "inbox" generates tons of exceptions. 
What's worse, proceeding with such work items will result in items not being 
deleted when they should. No content should be lost, but the removal of a 
paragraph, for example, won't be done. (!) TODO: update this issue as soon as 
we know more.

To reproduce:
* install a 4.4.4 instance (with workflow)
* activate a page (don't "proceed" !)
* upgrade to 4.4.5
* open inbox (logs will show exception(s))
* proceed activation
{color:white}
* ????
* profit !!
{color}

Possible track for patching this up:
Since we can't *just* revert the {{Rule}} class (because users might have 
started activations with the new class structure), we'd need to hook into the 
unserialization process. Something along those lines should work:
{code}
    private void readObject(ObjectInputStream ois) throws 
ClassNotFoundException, IOException {
        final ObjectInputStream.GetField field = ois.readFields();
        final Object o = field.get("allowedTypes", null);
        // here, if o is a String[], push into a Set, otherwise do nothing ...
    }
{code}

As a side note, I'd suggest we remove the {{serialVersionUID}} - had it not 
been there (or modified when code was changed, as it should have), the error 
log *might* have been a little cleared. I'd also suggest we don't "just" log 
the exception when unserializing the rule.

Classes and methods to look at:
* {{info.magnolia.cms.core.version.ContentVersion#init}}
* {{info.magnolia.cms.core.version.BaseVersionManager#getUsedFilter}}
* {{info.magnolia.module.exchangesimple.ReceiveFilter#handleChildren}}


  was:
The code change introduced for MAGNOLIA-3693 makes it impossible to deserialize 
existing workitems which were created with 4.4.4 or earlier versions. 

As such, just looking at the workflow "inbox" generates tons of exceptions. 
What's worse, proceeding with such work items will have (currently) 
unpredictable results (current state of testing seems to indicate paragraphs 
might not be removed, but no content should be lost either) (!) TODO: update 
this issue as soon as we know more.

To reproduce:
* install a 4.4.4 instance (with workflow)
* activate a page (don't "proceed" !)
* upgrade to 4.4.5
* open inbox (logs will show exception(s))
* proceed activation
{color:white}
* ????
* profit !!
{color}

Possible track for patching this up:
Since we can't *just* revert the {{Rule}} class (because users might have 
started activations with the new class structure), we'd need to hook into the 
unserialization process. Something along those lines should work:
{code}
    private void readObject(ObjectInputStream ois) throws 
ClassNotFoundException, IOException {
        final ObjectInputStream.GetField field = ois.readFields();
        final Object o = field.get("allowedTypes", null);
        // here, if o is a String[], push into a Set, otherwise do nothing ...
    }
{code}

As a side note, I'd suggest we remove the {{serialVersionUID}} - had it not 
been there (or modified when code was changed, as it should have), the error 
log *might* have been a little cleared. I'd also suggest we don't "just" log 
the exception when unserializing the rule.

Classes and methods to look at:
* {{info.magnolia.cms.core.version.ContentVersion#init}}
* {{info.magnolia.cms.core.version.BaseVersionManager#getUsedFilter}}
* {{info.magnolia.module.exchangesimple.ReceiveFilter#handleChildren}}



> Incompatible change in 4.4.5 breaks existing activation work items 
> -------------------------------------------------------------------
>
>                 Key: MAGNOLIA-3837
>                 URL: http://jira.magnolia-cms.com/browse/MAGNOLIA-3837
>             Project: Magnolia
>          Issue Type: Bug
>      Security Level: Public
>          Components: activation, core, workflow
>    Affects Versions: 4.4.5
>            Reporter: Grégory Joseph
>            Assignee: Ondřej Chytil
>            Priority: Blocker
>             Fix For: 4.4.6
>
>
> The code change introduced for MAGNOLIA-3693 makes it impossible to 
> deserialize existing workitems which were created with 4.4.4 or earlier 
> versions. 
> As such, just looking at the workflow "inbox" generates tons of exceptions. 
> What's worse, proceeding with such work items will result in items not being 
> deleted when they should. No content should be lost, but the removal of a 
> paragraph, for example, won't be done. (!) TODO: update this issue as soon as 
> we know more.
> To reproduce:
> * install a 4.4.4 instance (with workflow)
> * activate a page (don't "proceed" !)
> * upgrade to 4.4.5
> * open inbox (logs will show exception(s))
> * proceed activation
> {color:white}
> * ????
> * profit !!
> {color}
> Possible track for patching this up:
> Since we can't *just* revert the {{Rule}} class (because users might have 
> started activations with the new class structure), we'd need to hook into the 
> unserialization process. Something along those lines should work:
> {code}
>     private void readObject(ObjectInputStream ois) throws 
> ClassNotFoundException, IOException {
>         final ObjectInputStream.GetField field = ois.readFields();
>         final Object o = field.get("allowedTypes", null);
>         // here, if o is a String[], push into a Set, otherwise do nothing ...
>     }
> {code}
> As a side note, I'd suggest we remove the {{serialVersionUID}} - had it not 
> been there (or modified when code was changed, as it should have), the error 
> log *might* have been a little cleared. I'd also suggest we don't "just" log 
> the exception when unserializing the rule.
> Classes and methods to look at:
> * {{info.magnolia.cms.core.version.ContentVersion#init}}
> * {{info.magnolia.cms.core.version.BaseVersionManager#getUsedFilter}}
> * {{info.magnolia.module.exchangesimple.ReceiveFilter#handleChildren}}

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: 
http://jira.magnolia-cms.com/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira




----------------------------------------------------------------
For list details see
http://www.magnolia-cms.com/community/mailing-lists.html
To unsubscribe, E-mail to: <[email protected]>
----------------------------------------------------------------

Reply via email to