Hi Richard,
thanks for your response.

Unfortunately the suggested solution didn’t help. I did session.unwrap() in the 
method invoking session.save(). But the error persists (see the altered stack 
trace [1]).

Just for the records: I’m saving multiple workspaces right one after the other. 
I guess that each call to save *asynchronously* triggers the cache flush and 
updating of the lastUpdateTimeStamp property (see the 
info.magnolia.cms.util.DelayedExecutor$RunnableWrapper.run(DelayedExecutor.java:103)
 frame in the stack trace, that it’s called asynchronously).

Somehow access to that lastUpdateTimeStamp property should be synchronized 
accross multiple threads invoking 
info.magnolia.module.advancedcache.NotifyFlushListeningPolicy_Patched$InitOrUpdateTimeStampOp.exec.
 Unfortunately I do not know how to implement this kind of synchronization? 
Should simple thread sync using a monitor object help in this case? Do you have 
any idea?

Thanks for any further assistance.

Cheers,
Vivian



[1] Full stack trace

2015-10-29 17:53:53,938 WARN  org.apache.jackrabbit.core.ItemSaveOperation      
: 
/modules/advanced-cache/config/notifyFlushListeningPolicy/lastUpdateTimeStamp: 
failed to restore transient state
2015-10-29 17:53:53,942 ERROR 
e.advancedcache.NotifyFlushListeningPolicy_Patched: Failed to store cache last 
update timestamp. All entries will be flushed from cache on restart.
javax.jcr.InvalidItemStateException: property 
/modules/advanced-cache/config/notifyFlushListeningPolicy/lastUpdateTimeStamp: 
the property cannot be saved because it has been modified externally.
        at 
org.apache.jackrabbit.core.PropertyImpl.makePersistent(PropertyImpl.java:161)
        at 
org.apache.jackrabbit.core.ItemSaveOperation.persistTransientItems(ItemSaveOperation.java:849)
        at 
org.apache.jackrabbit.core.ItemSaveOperation.perform(ItemSaveOperation.java:243)
        at 
org.apache.jackrabbit.core.session.SessionState.perform(SessionState.java:216)
        at org.apache.jackrabbit.core.ItemImpl.perform(ItemImpl.java:91)
        at org.apache.jackrabbit.core.ItemImpl.save(ItemImpl.java:329)
        at 
org.apache.jackrabbit.core.session.SessionSaveOperation.perform(SessionSaveOperation.java:65)
        at 
org.apache.jackrabbit.core.session.SessionState.perform(SessionState.java:216)
        at org.apache.jackrabbit.core.SessionImpl.perform(SessionImpl.java:361)
        at org.apache.jackrabbit.core.SessionImpl.save(SessionImpl.java:812)
        at 
info.magnolia.module.advancedcache.NotifyFlushListeningPolicy_Patched$InitOrUpdateTimeStampOp.exec(NotifyFlushListeningPolicy_Patched.java:92)
        at 
info.magnolia.module.advancedcache.NotifyFlushListeningPolicy_Patched$InitOrUpdateTimeStampOp.exec(NotifyFlushListeningPolicy_Patched.java:56)
        at info.magnolia.cms.security.JCRSessionOp.exec(JCRSessionOp.java:67)
        at 
info.magnolia.context.MgnlContext.doInSystemContext(MgnlContext.java:385)
        at 
info.magnolia.context.MgnlContext.doInSystemContext(MgnlContext.java:371)
        at 
info.magnolia.module.advancedcache.NotifyFlushListeningPolicy_Patched.updateLastUpdateTimestamp(NotifyFlushListeningPolicy_Patched.java:36)
        at 
info.magnolia.module.advancedcache.NotifyFlushListeningPolicy.preHandleEvents(NotifyFlushListeningPolicy.java:46)
        at 
info.magnolia.module.cache.AbstractListeningFlushPolicy$CacheCleaner.onEvent(AbstractListeningFlushPolicy.java:193)
        at 
info.magnolia.cms.util.ObservationUtil$ObservationBasedDelayedExecutor$1.run(ObservationUtil.java:253)
        at 
info.magnolia.cms.util.DelayedExecutor$RunnableWrapper.run(DelayedExecutor.java:103)
        at EDU.oswego.cs.dl.util.concurrent.ClockDaemon$RunLoop.run(Unknown 
Source)
        at java.lang.Thread.run(Thread.java:745)


> On 29.10.2015, at 16:02, Unger, Richard <richard.un...@lfrz.at> wrote:
> 
> Hi Vivian,
> 
> Whenever the "MgnlPropertySettingContentDecorator" stuff gives me trouble, I 
> unwrap the Nodes/Sessions all the way before using them. Is this what is 
> causing the trouble in your case, or is it another interaction?
> 
> Regards from Vienna,
> 
> Richard
> 
> 
> 
>> -----Ursprüngliche Nachricht-----
>> Von: user-list-ow...@magnolia-cms.com 
>> [mailto:user-list-owner@magnolia- cms.com] Im Auftrag von Vivian 
>> Steller
>> Gesendet: Donnerstag, 29. Oktober 2015 14:48
>> An: user-list@magnolia-cms.com
>> Betreff: [magnolia-user] javax.jcr.InvalidItemStateException: property
>> /modules/advanced-
>> cache/config/notifyFlushListeningPolicy/lastUpdateTimeStamp
>> 
>> Hi Folks,
>> technical question: can anyone suggest on how to avoid / recover from 
>> InvalidItemStateExceptions?
>> 
>> Here’s the use case/problem:
>> * we’re using advanced cache / notifyFlushListeningPolicy
>> * we’re bulk creating tons of nodes in various workspaces using a bulk 
>> action; the action is performed in system context
>> * nodes are created just fine, this is all right, however…
>> * PROBLEM: updating the lastUpdateTimeStamp property fails with the 
>> exception below [1]…
>> * interesting: the exception does not appear if I perform the 
>> operation for the first time after starting Magnolia.. it seems that 
>> somehow the state is not written back correctly in the 
>> NotifyFlushListeningPolicy?
>> 
>> Here some concrete questions?
>> * did anyone experience the same issues with the 
>> NotifyFlushListeningPolicy?
>> * since we know we’re doing lots of stuff in the workspaces: is there 
>> a way to temporarily turn off updating this property and just writing it 
>> once?
>> * is there a way to recover from an InvalidItemState in some way?
>> * any other idea to avoid this exception?
>> 
>> Thanks in advance,
>> cheers,
>> Vivian
>> 
>> 
>> [1] Full Exception Stack trace:
>> 2015-10-29 14:29:15,933 WARN
>> org.apache.jackrabbit.core.ItemSaveOperation      : /modules/advanced-
>> cache/config/notifyFlushListeningPolicy/lastUpdateTimeStamp: failed to 
>> restore transient state
>> 2015-10-29 14:29:15,934 ERROR
>> ia.jcr.wrapper.MgnlPropertySettingContentDecorator: Failed to update 
>> LUD for session: session-admin-318::config
>> javax.jcr.InvalidItemStateException: property /modules/advanced-
>> cache/config/notifyFlushListeningPolicy/lastUpdateTimeStamp: the 
>> property cannot be saved because it has been modified externally.
>>      at
>> org.apache.jackrabbit.core.PropertyImpl.makePersistent(PropertyImpl.java:
>> 161)
>>      at
>> org.apache.jackrabbit.core.ItemSaveOperation.persistTransientItems(Ite
>> mS
>> aveOperation.java:849)
>>      at
>> org.apache.jackrabbit.core.ItemSaveOperation.perform(ItemSaveOperation
>> .java:243)
>>      at
>> org.apache.jackrabbit.core.session.SessionState.perform(SessionState.java:
>> 216)
>>      at org.apache.jackrabbit.core.ItemImpl.perform(ItemImpl.java:91)
>>      at org.apache.jackrabbit.core.ItemImpl.save(ItemImpl.java:329)
>>      at
>> org.apache.jackrabbit.core.session.SessionSaveOperation.perform(Sessio
>> nS
>> aveOperation.java:65)
>>      at
>> org.apache.jackrabbit.core.session.SessionState.perform(SessionState.java:
>> 216)
>>      at
>> org.apache.jackrabbit.core.SessionImpl.perform(SessionImpl.java:361)
>>      at
>> org.apache.jackrabbit.core.SessionImpl.save(SessionImpl.java:812)
>>      at
>> info.magnolia.jcr.wrapper.DelegateSessionWrapper.save(DelegateSessionW
>> rapper.java:297)
>>      at
>> info.magnolia.jcr.wrapper.DelegateSessionWrapper.save(DelegateSessionW
>> rapper.java:297)
>>      at
>> info.magnolia.jcr.wrapper.DelegateSessionWrapper.save(DelegateSessionW
>> rapper.java:297)
>>      at
>> info.magnolia.jcr.wrapper.MgnlPropertySettingContentDecorator$MgnlProp
>> ertySettingSessionWrapper.save(MgnlPropertySettingContentDecorator.jav
>> a:492)
>>      at
>> info.magnolia.jcr.wrapper.DelegateSessionWrapper.save(DelegateSessionW
>> rapper.java:297)
>>      at
>> info.magnolia.audit.MgnlAuditLoggingContentDecoratorSessionWrapper.sav
>> e(MgnlAuditLoggingContentDecoratorSessionWrapper.java:82)
>>      at
>> info.magnolia.module.advancedcache.NotifyFlushListeningPolicy$InitOrUp
>> da
>> teTimeStampOp.exec(NotifyFlushListeningPolicy.java:127)
>>      at
>> info.magnolia.module.advancedcache.NotifyFlushListeningPolicy$InitOrUp
>> da
>> teTimeStampOp.exec(NotifyFlushListeningPolicy.java:98)
>>      at
>> info.magnolia.cms.security.JCRSessionOp.exec(JCRSessionOp.java:67)
>>      at
>> info.magnolia.context.MgnlContext.doInSystemContext(MgnlContext.java:3
>> 85)
>>      at
>> info.magnolia.context.MgnlContext.doInSystemContext(MgnlContext.java:3
>> 71)
>>      at
>> info.magnolia.module.advancedcache.NotifyFlushListeningPolicy.updateLa
>> st
>> UpdateTimestamp(NotifyFlushListeningPolicy.java:61)
>>      at
>> info.magnolia.module.advancedcache.NotifyFlushListeningPolicy.preHandl
>> eE
>> vents(NotifyFlushListeningPolicy.java:46)
>>      at
>> info.magnolia.module.cache.AbstractListeningFlushPolicy$CacheCleaner.o
>> nE
>> vent(AbstractListeningFlushPolicy.java:193)
>>      at
>> info.magnolia.cms.util.ObservationUtil$ObservationBasedDelayedExecutor
>> $
>> 1.run(ObservationUtil.java:253)
>>      at
>> info.magnolia.cms.util.DelayedExecutor$RunnableWrapper.run(DelayedExec
>> utor.java:103)
>>      at
>> EDU.oswego.cs.dl.util.concurrent.ClockDaemon$RunLoop.run(Unknown
>> Source)
>>      at java.lang.Thread.run(Thread.java:745)
>> 2015-10-29 14:29:15,935 ERROR
>> ia.module.advancedcache.NotifyFlushListeningPolicy: Failed to store 
>> cache last update timestamp. All entries will be flushed from cache on 
>> restart.
>> javax.jcr.InvalidItemStateException: property /modules/advanced-
>> cache/config/notifyFlushListeningPolicy/lastUpdateTimeStamp: the 
>> property cannot be saved because it has been modified externally.
>>      at
>> org.apache.jackrabbit.core.PropertyImpl.makePersistent(PropertyImpl.java:
>> 161)
>>      at
>> org.apache.jackrabbit.core.ItemSaveOperation.persistTransientItems(Ite
>> mS
>> aveOperation.java:849)
>>      at
>> org.apache.jackrabbit.core.ItemSaveOperation.perform(ItemSaveOperation
>> .java:243)
>>      at
>> org.apache.jackrabbit.core.session.SessionState.perform(SessionState.java:
>> 216)
>>      at org.apache.jackrabbit.core.ItemImpl.perform(ItemImpl.java:91)
>>      at org.apache.jackrabbit.core.ItemImpl.save(ItemImpl.java:329)
>>      at
>> org.apache.jackrabbit.core.session.SessionSaveOperation.perform(Sessio
>> nS
>> aveOperation.java:65)
>>      at
>> org.apache.jackrabbit.core.session.SessionState.perform(SessionState.java:
>> 216)
>>      at
>> org.apache.jackrabbit.core.SessionImpl.perform(SessionImpl.java:361)
>>      at
>> org.apache.jackrabbit.core.SessionImpl.save(SessionImpl.java:812)
>>      at
>> info.magnolia.jcr.wrapper.DelegateSessionWrapper.save(DelegateSessionW
>> rapper.java:297)
>>      at
>> info.magnolia.jcr.wrapper.DelegateSessionWrapper.save(DelegateSessionW
>> rapper.java:297)
>>      at
>> info.magnolia.jcr.wrapper.DelegateSessionWrapper.save(DelegateSessionW
>> rapper.java:297)
>>      at
>> info.magnolia.jcr.wrapper.MgnlPropertySettingContentDecorator$MgnlProp
>> ertySettingSessionWrapper.save(MgnlPropertySettingContentDecorator.jav
>> a:492)
>>      at
>> info.magnolia.jcr.wrapper.DelegateSessionWrapper.save(DelegateSessionW
>> rapper.java:297)
>>      at
>> info.magnolia.audit.MgnlAuditLoggingContentDecoratorSessionWrapper.sav
>> e(MgnlAuditLoggingContentDecoratorSessionWrapper.java:82)
>>      at
>> info.magnolia.module.advancedcache.NotifyFlushListeningPolicy$InitOrUp
>> da
>> teTimeStampOp.exec(NotifyFlushListeningPolicy.java:127)
>>      at
>> info.magnolia.module.advancedcache.NotifyFlushListeningPolicy$InitOrUp
>> da
>> teTimeStampOp.exec(NotifyFlushListeningPolicy.java:98)
>>      at
>> info.magnolia.cms.security.JCRSessionOp.exec(JCRSessionOp.java:67)
>>      at
>> info.magnolia.context.MgnlContext.doInSystemContext(MgnlContext.java:3
>> 85)
>>      at
>> info.magnolia.context.MgnlContext.doInSystemContext(MgnlContext.java:3
>> 71)
>>      at
>> info.magnolia.module.advancedcache.NotifyFlushListeningPolicy.updateLa
>> st
>> UpdateTimestamp(NotifyFlushListeningPolicy.java:61)
>>      at
>> info.magnolia.module.advancedcache.NotifyFlushListeningPolicy.preHandl
>> eE
>> vents(NotifyFlushListeningPolicy.java:46)
>>      at
>> info.magnolia.module.cache.AbstractListeningFlushPolicy$CacheCleaner.o
>> nE
>> vent(AbstractListeningFlushPolicy.java:193)
>>      at
>> info.magnolia.cms.util.ObservationUtil$ObservationBasedDelayedExecutor
>> $
>> 1.run(ObservationUtil.java:253)
>>      at
>> info.magnolia.cms.util.DelayedExecutor$RunnableWrapper.run(DelayedExec
>> utor.java:103)
>>      at
>> EDU.oswego.cs.dl.util.concurrent.ClockDaemon$RunLoop.run(Unknown
>> Source)
>>      at java.lang.Thread.run(Thread.java:745)
>> 
>> ----------------------------------------------------------------
>> For list details, see http://www.magnolia-cms.com/community/mailing-
>> lists.html
>> Alternatively, use our forums: http://forum.magnolia-cms.com/ To 
>> unsubscribe, E-mail to: <user-list-unsubscr...@magnolia-cms.com>
>> ----------------------------------------------------------------
> 
> 
> 
> ----------------------------------------------------------------
> For list details, see http://www.magnolia-cms.com/community/mailing-lists.html
> Alternatively, use our forums: http://forum.magnolia-cms.com/
> To unsubscribe, E-mail to: <user-list-unsubscr...@magnolia-cms.com>
> ----------------------------------------------------------------
> 



----------------------------------------------------------------
For list details, see http://www.magnolia-cms.com/community/mailing-lists.html
Alternatively, use our forums: http://forum.magnolia-cms.com/
To unsubscribe, E-mail to: <user-list-unsubscr...@magnolia-cms.com>
----------------------------------------------------------------

Reply via email to