[MAGNOLIA-4522] Recursive activation does not work with Java 7 Created: 29/Aug/12  Updated: 13/Mar/13  Resolved: 27/Sep/12

Status: Closed
Project: Magnolia
Component/s: activation
Affects Version/s: 4.5.4
Fix Version/s: 4.5.5

Type: Improvement Priority: Critical
Reporter: Frank Sommer Assignee: Milan Divilek
Resolution: Fixed Votes: 1
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified
Environment:

Linux, JDK 1.7.0_04


Issue Links:
Cloners
is cloned by MAGNOLIA-4899 CLONE - Recursive activation does not... Closed
causality
relation
Template:
Acceptance criteria:
Empty
Task DoD:
[ ]* Doc/release notes changes? Comment present?
[ ]* Downstream builds green?
[ ]* Solution information and context easily available?
[ ]* Tests
[ ]* FixVersion filled and not yet released
[ ]  Architecture Decision Record (ADR)
Date of First Response:

 Description   

The activation in magnolia does not work with Java 7. The following exception is thrown on recursive activations. We have to run our application with Java 6.

12-08-29 10:24:34 ERROR AUTHOR[Thread-60]info.magnolia.module.admininterface.commands.ActivationCommand: can't activate
java.lang.IllegalArgumentException: Comparison method violates its general contract!
	at java.util.TimSort.mergeLo(TimSort.java:747)
	at java.util.TimSort.mergeAt(TimSort.java:483)
	at java.util.TimSort.mergeCollapse(TimSort.java:408)
	at java.util.TimSort.sort(TimSort.java:214)
	at java.util.TimSort.sort(TimSort.java:173)
	at java.util.Arrays.sort(Arrays.java:659)
	at java.util.Collections.sort(Collections.java:217)
	at info.magnolia.module.admininterface.commands.ActivationCommand.activateRecursive(ActivationCommand.java:212)
	at info.magnolia.module.admininterface.commands.ActivationCommand.activateBulkUpdate(ActivationCommand.java:141)
	at info.magnolia.module.admininterface.commands.ActivationCommand.execute(ActivationCommand.java:96)
	at info.magnolia.commands.MgnlCommand.executePooledOrSynchronized(MgnlCommand.java:174)
	at info.magnolia.commands.MgnlCommand.execute(MgnlCommand.java:161)
	at info.magnolia.module.workflow.MgnlParticipant.consume(MgnlParticipant.java:132)
	at openwfe.org.embed.impl.engine.AbstractEmbeddedParticipant.dispatch(AbstractEmbeddedParticipant.java:154)
	at openwfe.org.engine.expressions.ParticipantExpression.dispatch(ParticipantExpression.java:474)
	at openwfe.org.engine.expressions.ParticipantExpression.regularDispatch(ParticipantExpression.java:489)
	at openwfe.org.engine.expressions.ParticipantExpression.apply(ParticipantExpression.java:430)
	at openwfe.org.engine.expressions.raw.RawExpression.apply(RawExpression.java:371)
	at openwfe.org.engine.expressions.state.NormalState.apply(NormalState.java:112)
	at openwfe.org.engine.impl.expool.SimpleExpressionPool.applyOrLaunch(SimpleExpressionPool.java:529)
	at openwfe.org.engine.impl.expool.SimpleExpressionPool.apply(SimpleExpressionPool.java:542)
	at openwfe.org.engine.expressions.SequentialFlowExpression.apply(SequentialFlowExpression.java:140)
	at openwfe.org.engine.expressions.state.NormalState.apply(NormalState.java:112)
	at openwfe.org.engine.impl.expool.SimpleExpressionPool.applyOrLaunch(SimpleExpressionPool.java:529)
	at openwfe.org.engine.impl.expool.SimpleExpressionPool.apply(SimpleExpressionPool.java:542)
	at openwfe.org.engine.impl.expool.SimpleExpressionPool.apply(SimpleExpressionPool.java:554)
	at openwfe.org.engine.expressions.SequenceExpression.reply(SequenceExpression.java:130)
	at openwfe.org.engine.expressions.state.NormalState.reply(NormalState.java:118)
	at openwfe.org.engine.impl.expool.SimpleExpressionPool.reply(SimpleExpressionPool.java:713)
	at openwfe.org.engine.impl.expool.SimpleExpressionPool.replyToParent(SimpleExpressionPool.java:644)
	at openwfe.org.engine.expressions.AbstractFlowExpression.replyToParent(AbstractFlowExpression.java:479)
	at openwfe.org.engine.expressions.IfExpression.applyConsequence(IfExpression.java:260)
	at openwfe.org.engine.expressions.IfExpression.reply(IfExpression.java:189)
	at openwfe.org.engine.expressions.state.NormalState.reply(NormalState.java:118)
	at openwfe.org.engine.impl.expool.SimpleExpressionPool.reply(SimpleExpressionPool.java:713)
	at openwfe.org.engine.impl.expool.SimpleExpressionPool.replyToParent(SimpleExpressionPool.java:644)
	at openwfe.org.engine.expressions.AbstractFlowExpression.replyToParent(AbstractFlowExpression.java:479)
	at openwfe.org.engine.expressions.AbstractFlowExpression.applyToParent(AbstractFlowExpression.java:494)
	at openwfe.org.engine.expressions.DefinedExpression.apply(DefinedExpression.java:97)
	at openwfe.org.engine.expressions.raw.RawExpression.apply(RawExpression.java:371)
	at openwfe.org.engine.expressions.state.NormalState.apply(NormalState.java:112)
	at openwfe.org.engine.impl.expool.SimpleExpressionPool.applyOrLaunch(SimpleExpressionPool.java:529)
	at openwfe.org.engine.impl.expool.SimpleExpressionPool.apply(SimpleExpressionPool.java:542)
	at openwfe.org.engine.expressions.IfExpression.apply(IfExpression.java:128)
	at openwfe.org.engine.expressions.raw.RawExpression.apply(RawExpression.java:371)
	at openwfe.org.engine.expressions.state.NormalState.apply(NormalState.java:112)
	at openwfe.org.engine.impl.expool.SimpleExpressionPool.applyOrLaunch(SimpleExpressionPool.java:529)
	at openwfe.org.engine.impl.expool.SimpleExpressionPool.apply(SimpleExpressionPool.java:542)
	at openwfe.org.engine.expressions.SequentialFlowExpression.apply(SequentialFlowExpression.java:140)
	at openwfe.org.engine.expressions.AbstractFlowExpression.launch(AbstractFlowExpression.java:163)
	at openwfe.org.engine.expressions.raw.RawExpression.launch(RawExpression.java:383)
	at openwfe.org.engine.impl.expool.SimpleExpressionPool.applyOrLaunch(SimpleExpressionPool.java:527)
	at openwfe.org.engine.impl.expool.SimpleExpressionPool.launch(SimpleExpressionPool.java:565)
	at openwfe.org.engine.impl.launch.SimpleXmlLauncher$1.run(SimpleXmlLauncher.java:453)


 Comments   
Comment by Joerg von Frantzius [ 29/Aug/12 ]

This affects [SUPPORT-1845], where use of Java 7 was considered not to be a problem...

Comment by Joerg von Frantzius [ 30/Aug/12 ]

There was a patch supplied in SUPPORT-1845 , and there are plans to fix this in 4.5.5.

Are there any plans to backport the fix to 4.4.x ?

Comment by Milan Divilek [ 27/Sep/12 ]

Hello Jörg,

there is no plan to backport the fix to 4.4.x.

It should be simple workaround for this issue setup new system property, java.util.Arrays.useLegacyMergeSort to true. See http://www.oracle.com/technetwork/java/javase/compatibility-417013.html "Synopsis: Updated sort behavior for Arrays and Collections may throw an IllegalArgumentException".

Generated at Mon Feb 12 03:56:35 CET 2024 using Jira 9.4.2#940002-sha1:46d1a51de284217efdcb32434eab47a99af2938b.