Project:
View Issue Details[ Jump to Notes ] | [ Issue History ] [ Print ] | ||||||||||
ID | |||||||||||
0023833 | |||||||||||
Type | Category | Severity | Reproducibility | Date Submitted | Last Update | ||||||
design defect | [Openbravo ERP] A. Platform | minor | always | 2013-05-16 12:45 | 2022-02-01 08:09 | ||||||
Reporter | vmromanos | View Status | public | ||||||||
Assigned To | Triage Platform Base | ||||||||||
Priority | urgent | Resolution | open | Fixed in Version | |||||||
Status | acknowledged | Fix in branch | Fixed in SCM revision | ||||||||
Projection | none | ETA | none | Target Version | |||||||
OS | Linux 32 bit | Database | PostgreSQL | Java version | 1.6.0_12 | ||||||
OS Version | Debian 5.0 | Database version | 8.3.8 | Ant version | 1.7.0 | ||||||
Product Version | pi | SCM revision | |||||||||
Review Assigned To | |||||||||||
Web browser | |||||||||||
Modules | Core | ||||||||||
Regression level | |||||||||||
Regression date | |||||||||||
Regression introduced in release | |||||||||||
Regression introduced by commit | |||||||||||
Triggers an Emergency Pack | No | ||||||||||
Summary | 0023833: Removing EntityPersistenceEventObserver | ||||||||||
Description | If a module contains any class that extends from EntityPersistenceEventObserver, and we delete that module in an instance, the compiled .class remains into the tomcat context. This situation may cause important problems for the user, like for example the unavailability to save or update a record anymore. See steps to reproduce for an example. | ||||||||||
Steps To Reproduce | 1. Install the module: https://code.openbravo.com/erp/mods/org.openbravo.localization.us.bankformat/ [^] 2. Compile and restart tomcat as usual 3. Try to create a new financial account (just fill the mandatory fields). 4. Now remove that module and run ant smartbuild -Dlocal=no 5. Restart tomcat as usual 6. Repeat step 3. You will see that we can't save the record anymore. Looking at the log we see the error: a3196480 2013-05-16 09:52:56,396 [ajp-8009-4] ERROR org.openbravo.service.json.DefaultJsonDataService - javax.enterprise.event.ObserverException at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27) at java.lang.reflect.Constructor.newInstance(Constructor.java:513) at java.lang.Class.newInstance0(Class.java:355) at java.lang.Class.newInstance(Class.java:308) at org.jboss.weld.util.reflection.SecureReflections$16.work(SecureReflections.java:395) at org.jboss.weld.util.reflection.SecureReflectionAccess.run(SecureReflectionAccess.java:54) at org.jboss.weld.util.reflection.SecureReflectionAccess.runAsInstantiation(SecureReflectionAccess.java:216) at org.jboss.weld.util.reflection.SecureReflections.newInstance(SecureReflections.java:390) at org.jboss.weld.injection.Exceptions.rethrowException(Exceptions.java:40) at org.jboss.weld.injection.Exceptions.rethrowException(Exceptions.java:92) at org.jboss.weld.injection.MethodInjectionPoint.invokeOnInstanceWithSpecialValue(MethodInjectionPoint.java:214) at org.jboss.weld.event.ObserverMethodImpl.sendEvent(ObserverMethodImpl.java:282) at org.jboss.weld.event.ObserverMethodImpl.sendEvent(ObserverMethodImpl.java:265) at org.jboss.weld.event.ObserverMethodImpl.notify(ObserverMethodImpl.java:234) at org.jboss.weld.manager.BeanManagerImpl.notifyObservers(BeanManagerImpl.java:632) at org.jboss.weld.manager.BeanManagerImpl.fireEvent(BeanManagerImpl.java:625) at org.jboss.weld.event.EventImpl.fire(EventImpl.java:75) at org.openbravo.client.kernel.event.PersistenceEventOBInterceptor.sendNewEvent(PersistenceEventOBInterceptor.java:93) at org.openbravo.client.kernel.event.PersistenceEventOBInterceptor.onSave(PersistenceEventOBInterceptor.java:82) at org.openbravo.client.kernel.event.org$jboss$weld$bean-flat-ManagedBean-class_org$openbravo$client$kernel$event$PersistenceEventOBInterceptor_$$_WeldClientProxy.onSave(org$jboss$weld$bean-flat-ManagedBean-class_org$openbravo$client$kernel$event$PersistenceEventOBInterceptor_$$_WeldClientProxy.java) at org.openbravo.dal.core.OBInterceptor.onSave(OBInterceptor.java:238) at org.hibernate.event.def.AbstractSaveEventListener.substituteValuesIfNecessary(AbstractSaveEventListener.java:413) at org.hibernate.event.def.AbstractSaveEventListener.performSaveOrReplicate(AbstractSaveEventListener.java:292) at org.hibernate.event.def.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:203) at org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:143) at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:210) at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:195) at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.performSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:117) at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:93) at org.hibernate.impl.SessionImpl.fireSaveOrUpdate(SessionImpl.java:685) at org.hibernate.impl.SessionImpl.saveOrUpdate(SessionImpl.java:677) at org.openbravo.dal.core.SessionHandler.save(SessionHandler.java:126) at org.openbravo.dal.service.OBDal.save(OBDal.java:226) at org.openbravo.service.json.DefaultJsonDataService.update(DefaultJsonDataService.java:621) at org.openbravo.service.json.DefaultJsonDataService.add(DefaultJsonDataService.java:557) at org.openbravo.service.datasource.DefaultDataSourceService.add(DefaultDataSourceService.java:161) at org.openbravo.service.datasource.DataSourceServlet.doPost(DataSourceServlet.java:684) at javax.servlet.http.HttpServlet.service(HttpServlet.java:637) at org.openbravo.base.HttpBaseServlet.serviceInitialized(HttpBaseServlet.java:225) at org.openbravo.base.secureApp.HttpSecureAppServlet.service(HttpSecureAppServlet.java:440) at org.openbravo.client.kernel.BaseKernelServlet.callServiceInSuper(BaseKernelServlet.java:87) at org.openbravo.client.kernel.BaseKernelServlet.service(BaseKernelServlet.java:63) at org.openbravo.service.datasource.DataSourceServlet.service(DataSourceServlet.java:138) at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.openbravo.utils.SessionExpirationFilter.doFilter(SessionExpirationFilter.java:66) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.openbravo.utils.CharsetFilter.doFilter(CharsetFilter.java:35) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.openbravo.client.kernel.KernelFilter$1.doAction(KernelFilter.java:62) at org.openbravo.dal.core.ThreadHandler.run(ThreadHandler.java:46) at org.openbravo.client.kernel.KernelFilter.doFilter(KernelFilter.java:71) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.openbravo.dal.core.DalRequestFilter$1.doAction(DalRequestFilter.java:81) at org.openbravo.dal.core.ThreadHandler.run(ThreadHandler.java:46) at org.openbravo.dal.core.DalRequestFilter.doFilter(DalRequestFilter.java:103) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298) at org.apache.coyote.ajp.AjpAprProcessor.process(AjpAprProcessor.java:429) at org.apache.coyote.ajp.AjpAprProtocol$AjpConnectionHandler.process(AjpAprProtocol.java:384) at org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1665) at java.lang.Thread.run(Thread.java:662) Caused by: java.lang.NoSuchMethodError: org.openbravo.model.financialmgmt.payment.FIN_FinancialAccount.getUSBAFAccountNo()Ljava/lang/String; at org.openbravo.localization.us.bankformat.event.FinancialAccountUSBankAccountHandler.setDisplayedAccount(FinancialAccountUSBankAccountHandler.java:71) at org.openbravo.localization.us.bankformat.event.FinancialAccountUSBankAccountHandler.onSave(FinancialAccountUSBankAccountHandler.java:66) at sun.reflect.GeneratedMethodAccessor803.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.jboss.weld.util.reflection.SecureReflections$13.work(SecureReflections.java:305) at org.jboss.weld.util.reflection.SecureReflectionAccess.run(SecureReflectionAccess.java:54) at org.jboss.weld.util.reflection.SecureReflectionAccess.runAsInvocation(SecureReflectionAccess.java:163) at org.jboss.weld.util.reflection.SecureReflections.invoke(SecureReflections.java:299) at org.jboss.weld.introspector.jlr.WeldMethodImpl.invokeOnInstance(WeldMethodImpl.java:188) at org.jboss.weld.introspector.ForwardingWeldMethod.invokeOnInstance(ForwardingWeldMethod.java:59) at org.jboss.weld.injection.MethodInjectionPoint.invokeOnInstanceWithSpecialValue(MethodInjectionPoint.java:198) ... 61 more | ||||||||||
Proposed Solution | Ensure the compiled class are removed from the tomcat's context when the module is removed from the ob's instance | ||||||||||
Tags | No tags attached. | ||||||||||
Attached Files | |||||||||||
Relationships [ Relation Graph ] [ Dependency Graph ] | |
Notes | |
(0081666) alostale (manager) 2015-11-10 16:49 |
smartbuild is not handling correctly class removals: deinstalling a module should be performed with compile.complete |
Issue History | |||
Date Modified | Username | Field | Change |
2013-05-16 12:45 | vmromanos | New Issue | |
2013-05-16 12:45 | vmromanos | Assigned To | => AugustoMauch |
2013-05-16 12:45 | vmromanos | Modules | => Core |
2013-05-16 12:45 | vmromanos | Triggers an Emergency Pack | => No |
2015-03-17 14:37 | alostale | Assigned To | AugustoMauch => platform |
2015-11-10 16:49 | alostale | Note Added: 0081666 | |
2015-11-10 16:49 | alostale | Severity | major => minor |
2015-11-10 16:49 | alostale | Status | new => acknowledged |
2015-11-10 16:49 | alostale | Type | defect => design defect |
2022-02-01 08:09 | alostale | Assigned To | platform => Triage Platform Base |
Copyright © 2000 - 2009 MantisBT Group |