Openbravo Issue Tracking System - Retail Modules
View Issue Details
0035999Retail ModulesStoreServerpublic2017-05-02 18:082017-06-05 16:40
AugustoMauch 
mtaal 
normalmajorhave not tried
closedno change required 
5
 
RR17Q2.1 
mtaal
No
0035999: Prevent doing a commit inside an event handler (InvalidOrganizationChangeEventHandler)
Transactions must not be committed inside an event handler, or an error like this one [1] can occur. The InvalidOrganizationChangeEventHandler invokes the MobileServerProvider.getMobileServersForOrganization method, which can end up committing a transaction if some internal structure is not initialized. That method can also be called with a boolean parameter that determines if the transaction should be commited, that version should be used instead of the current one.

[1] cdb72c84 219658 [http-bio-8080-exec-5] ERROR org.openbravo.retail.copystore.process.CopyStoreProcess -
javax.enterprise.event.ObserverException
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
    at java.lang.Class.newInstance(Class.java:442)
    at org.jboss.weld.util.reflection.SecureReflections$16.work(SecureReflections.java:344)
    at org.jboss.weld.util.reflection.SecureReflectionAccess.run(SecureReflectionAccess.java:52)
    at org.jboss.weld.util.reflection.SecureReflectionAccess.runAsInstantiation(SecureReflectionAccess.java:173)
    at org.jboss.weld.util.reflection.SecureReflections.newInstance(SecureReflections.java:341)
    at org.jboss.weld.injection.Exceptions.rethrowException(Exceptions.java:33)
    at org.jboss.weld.injection.Exceptions.rethrowException(Exceptions.java:73)
    at org.jboss.weld.injection.MethodInjectionPoint.invokeOnInstanceWithSpecialValue(MethodInjectionPoint.java:162)
    at org.jboss.weld.event.ObserverMethodImpl.sendEvent(ObserverMethodImpl.java:245)
    at org.jboss.weld.event.ObserverMethodImpl.sendEvent(ObserverMethodImpl.java:233)
    at org.jboss.weld.event.ObserverMethodImpl.notify(ObserverMethodImpl.java:213)
    at org.jboss.weld.event.ObserverNotifier.notifyObserver(ObserverNotifier.java:117)
    at org.jboss.weld.event.ObserverNotifier.notifyObservers(ObserverNotifier.java:85)
    at org.jboss.weld.event.ObserverNotifier.fireEvent(ObserverNotifier.java:80)
    at org.jboss.weld.event.EventImpl.fire(EventImpl.java:69)
    at org.openbravo.client.kernel.event.PersistenceEventOBInterceptor.sendUpdateEvent(PersistenceEventOBInterceptor.java:106)
    at org.openbravo.client.kernel.event.PersistenceEventOBInterceptor.onFlushDirty(PersistenceEventOBInterceptor.java:75)
    at org.openbravo.client.kernel.event.PersistenceEventOBInterceptor$Proxy$_$$_WeldClientProxy.onFlushDirty(PersistenceEventOBInterceptor$Proxy$_$$_WeldClientProxy.java)
    at org.openbravo.dal.core.OBInterceptor.onFlushDirty(OBInterceptor.java:194)
    at org.hibernate.event.def.DefaultFlushEntityEventListener.invokeInterceptor(DefaultFlushEntityEventListener.java:372)
    at org.hibernate.event.def.DefaultFlushEntityEventListener.handleInterception(DefaultFlushEntityEventListener.java:349)
    at org.hibernate.event.def.DefaultFlushEntityEventListener.scheduleUpdate(DefaultFlushEntityEventListener.java:287)
    at org.hibernate.event.def.DefaultFlushEntityEventListener.onFlushEntity(DefaultFlushEntityEventListener.java:155)
    at org.hibernate.event.def.AbstractFlushingEventListener.flushEntities(AbstractFlushingEventListener.java:219)
    at org.hibernate.event.def.AbstractFlushingEventListener.flushEverythingToExecutions(AbstractFlushingEventListener.java:99)
    at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:50)
    at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1216)
    at org.openbravo.dal.service.OBDal.flush(OBDal.java:260)
    at org.openbravo.dal.core.SessionHandler.flushRemainingChanges(SessionHandler.java:680)
    at org.openbravo.dal.core.SessionHandler.commitAndClose(SessionHandler.java:592)
    at org.openbravo.dal.service.OBDal.commitAndClose(OBDal.java:223)
    at org.openbravo.replication.symmetricds.util.MobileServerProvider.initializeDataCachedByOrganization(MobileServerProvider.java:231)
    at org.openbravo.replication.symmetricds.util.MobileServerProvider.getMobileServersForOrganization(MobileServerProvider.java:179)
    at org.openbravo.replication.symmetricds.util.MobileServerProvider.getMobileServersForOrganization(MobileServerProvider.java:169)
    at org.openbravo.retail.storeserver.synchronization.eventhandler.InvalidOrganizationChangeEventHandler.anyStoreServerHasNowAccessToRecord(InvalidOrganizationChangeEventHandler.java:144)
I have not been able to reproduce this one, the log came from some BUT tests.
No tags attached.
blocks defect 0035897 closed mtaal Prevent doing a commit inside an event handler (InvalidOrganizationChangeEventHandler) 
Issue History
2017-05-15 16:31mtaalTypedefect => backport
2017-05-15 16:31mtaalTarget Version => RR17Q2.1
2017-06-05 16:40mtaalNote Added: 0097136
2017-06-05 16:40mtaalStatusscheduled => closed
2017-06-05 16:40mtaalResolutionopen => no change required

Notes
(0097136)
mtaal   
2017-06-05 16:40   
we will not deliver Q2.1 version