Hi Oscar,

It looks like a concurrency bug in Javassist in 3.20.0-GA.  It's fixed in
[1], but hasn't yet been released.

If it's a blocker, then I guess all you can do is to build a local version
of Javassist, and the use Maven <dependencyManagement> section in your
top-level pom.xml to reference your local version.

HTH
Dan

[1]
https://github.com/jboss-javassist/javassist/commit/fee5e033b303efce0cb6d9268b5361d5e1eb1974#diff-784aef550e16e266f5ecb6a3ce357fd1



On 23 August 2016 at 22:27, Óscar Bou - GOVERTIS <o....@govertis.com> wrote:

> Hi all.
>
> I’m also experiencing a problem when javassist tries to enhance some
> classes from inside a thread (a Quartz job), when invoked through the
> WrapperFactory.
>
> Seems that sometimes the “proxyFactory.createClass()” method invocation in
> ProxyCreator does not return the enhanced class, returning “null” instead.
>
> It occurs occasionally (in every execution), but not repeated for the same
> class or invocation.
>
> I’ve not found any difference when debugging between “correct” invocations
> and those returning “null”.
>
> Any ideas?
>
>
>
> java.lang.NullPointerException at org.objenesis.ObjenesisBase.
> getInstantiatorOf(ObjenesisBase.java:89) at org.objenesis.ObjenesisBase.
> newInstance(ObjenesisBase.java:73) at org.objenesis.ObjenesisHelper.
> newInstance(ObjenesisHelper.java:44) at org.apache.isis.core.wrapper.
> internal.util.Util.createInstance(Util.java:43) at
> org.apache.isis.core.wrapper.proxy.ProxyCreator.
> instantiateProxy(ProxyCreator.java:67) at org.apache.isis.core.wrapper.
> handlers.ProxyContextHandler.proxy(ProxyContextHandler.java:47) at
> org.apache.isis.core.wrapper.WrapperFactoryDefault.createProxy(
> WrapperFactoryDefault.java:253) at org.apache.isis.core.wrapper.
> WrapperFactoryDefault.wrap(WrapperFactoryDefault.java:246) at
> org.apache.isis.core.wrapper.WrapperFactoryDefault.wrap(
> WrapperFactoryDefault.java:222) at 
> mydom.dom.backend.mydomService.wrap(mydomService.java:11)
> at mydom.dom.supplier.subscription.SupplierAnyOfferChangedNotific
> ationRepository.createUnprocessedNotification(
> SupplierAnyOfferChangedNotificationRepository.java:52) at sun.reflect.
> GeneratedMethodAccessor160.invoke(Unknown Source) at sun.reflect.
> DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> at java.lang.reflect.Method.invoke(Method.java:483) at
> org.apache.isis.core.metamodel.facets.actions.action.invocation.
> ActionInvocationFacetForDomainEventAbstract.invokeMethodElseFromCache(
> ActionInvocationFacetForDomainEventAbstract.java:408) at
> org.apache.isis.core.metamodel.facets.actions.action.invocation.
> ActionInvocationFacetForDomainEventAbstract$2.execute(
> ActionInvocationFacetForDomainEventAbstract.java:262) at
> org.apache.isis.core.metamodel.facets.actions.action.invocation.
> ActionInvocationFacetForDomainEventAbstract$2.execute(
> ActionInvocationFacetForDomainEventAbstract.java:1) at
> org.apache.isis.applib.services.iactn.Interaction.
> executeInternal(Interaction.java:173) at org.apache.isis.applib.
> services.iactn.Interaction.execute(Interaction.java:143) at
> org.apache.isis.core.metamodel.facets.actions.action.invocation.
> ActionInvocationFacetForDomainEventAbstract.doInvoke(
> ActionInvocationFacetForDomainEventAbstract.java:311) at
> org.apache.isis.core.metamodel.facets.actions.action.invocation.
> ActionInvocationFacetForDomainEventAbstract$1.execute(
> ActionInvocationFacetForDomainEventAbstract.java:165) at
> org.apache.isis.core.runtime.system.transaction.IsisTransactionManager.
> executeWithinTransaction(IsisTransactionManager.java:143) at
> org.apache.isis.core.runtime.system.transaction.IsisTransactionManager.
> executeWithinTransaction(IsisTransactionManager.java:133) at
> org.apache.isis.core.runtime.services.persistsession.
> PersistenceSessionServiceInternalDefault.executeWithinTransaction(
> PersistenceSessionServiceInternalDefault.java:179) at
> org.apache.isis.core.metamodel.facets.actions.action.invocation.
> ActionInvocationFacetForDomainEventAbstract.invoke(
> ActionInvocationFacetForDomainEventAbstract.java:161) at
> org.apache.isis.core.metamodel.specloader.specimpl.ObjectActionDefault.
> executeInternal(ObjectActionDefault.java:398) at org.apache.isis.core.
> metamodel.specloader.specimpl.ObjectActionDefault.execute(ObjectActionDefault.java:387)
> at org.apache.isis.core.wrapper.handlers.DomainObjectInvocationHandler.
> handleActionMethod(DomainObjectInvocationHandler.java:671) at
> org.apache.isis.core.wrapper.handlers.DomainObjectInvocationHandler.
> invoke(DomainObjectInvocationHandler.java:284) at
> org.apache.isis.core.wrapper.proxy.ProxyCreator$1.invoke(ProxyCreator.java:72)
> at mydom.dom.supplier.subscription.SupplierAnyOfferChangedNotific
> ationRepository_$$_jvstfc5_1b.createUnprocessedNotification(
> SupplierAnyOfferChangedNotificationRepository_$$_jvstfc5_1b.java) at
> mydom.dom.supplier.subscription.SupplierAnyOfferChangedNotific
> ationRepository.addUnprocessedNotification(SupplierAnyOfferChangedNotificationRepository.java:101)
> at mydom.dom.supplier.subscription.SupplierAnyOfferChangedNotific
> ationRepository.lambda$0(SupplierAnyOfferChangedNotificationRepository.java:163)
> at mydom.dom.supplier.subscription.SupplierAnyOfferChangedNotific
> ationRepository$$Lambda$40/685085353.apply(Unknown Source) at
> java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193)
> at 
> java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1374)
> at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:512)
> at 
> java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:502)
> at java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:708)
> at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
> at java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:499)
> at mydom.dom.supplier.subscription.SupplierAnyOfferChangedNotific
> ationRepository.downloadToDatabaseAndDeleteFromQueue(
> SupplierAnyOfferChangedNotificationRepository.java:186) at sun.reflect.
> NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.
> NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(
> DelegatingMethodAccessorImpl.java:43) at 
> java.lang.reflect.Method.invoke(Method.java:483)
> at org.apache.isis.core.metamodel.facets.actions.action.invocation.
> ActionInvocationFacetForDomainEventAbstract.invokeMethodElseFromCache(
> ActionInvocationFacetForDomainEventAbstract.java:408) at
> org.apache.isis.core.metamodel.facets.actions.action.invocation.
> ActionInvocationFacetForDomainEventAbstract$2.execute(
> ActionInvocationFacetForDomainEventAbstract.java:262) at
> org.apache.isis.core.metamodel.facets.actions.action.invocation.
> ActionInvocationFacetForDomainEventAbstract$2.execute(
> ActionInvocationFacetForDomainEventAbstract.java:1) at
> org.apache.isis.applib.services.iactn.Interaction.
> executeInternal(Interaction.java:173) at org.apache.isis.applib.
> services.iactn.Interaction.execute(Interaction.java:143) at
> org.apache.isis.core.metamodel.facets.actions.action.invocation.
> ActionInvocationFacetForDomainEventAbstract.doInvoke(
> ActionInvocationFacetForDomainEventAbstract.java:311) at
> org.apache.isis.core.metamodel.facets.actions.action.invocation.
> ActionInvocationFacetForDomainEventAbstract$1.execute(
> ActionInvocationFacetForDomainEventAbstract.java:165) at
> org.apache.isis.core.runtime.system.transaction.IsisTransactionManager.
> executeWithinTransaction(IsisTransactionManager.java:143) at
> org.apache.isis.core.runtime.system.transaction.IsisTransactionManager.
> executeWithinTransaction(IsisTransactionManager.java:133) at
> org.apache.isis.core.runtime.services.persistsession.
> PersistenceSessionServiceInternalDefault.executeWithinTransaction(
> PersistenceSessionServiceInternalDefault.java:179) at
> org.apache.isis.core.metamodel.facets.actions.action.invocation.
> ActionInvocationFacetForDomainEventAbstract.invoke(
> ActionInvocationFacetForDomainEventAbstract.java:161) at
> org.apache.isis.core.metamodel.specloader.specimpl.ObjectActionDefault.
> executeInternal(ObjectActionDefault.java:398) at org.apache.isis.core.
> metamodel.specloader.specimpl.ObjectActionDefault.execute(ObjectActionDefault.java:387)
> at org.apache.isis.core.wrapper.handlers.DomainObjectInvocationHandler.
> handleActionMethod(DomainObjectInvocationHandler.java:671) at
> org.apache.isis.core.wrapper.handlers.DomainObjectInvocationHandler.
> invoke(DomainObjectInvocationHandler.java:284) at
> org.apache.isis.core.wrapper.proxy.ProxyCreator$1.invoke(ProxyCreator.java:72)
> at mydom.dom.supplier.subscription.SupplierAnyOfferChangedNotific
> ationRepository_$$_jvstfc5_1b.downloadToDatabaseAndDeleteFromQueue(
> SupplierAnyOfferChangedNotificationRepository_$$_jvstfc5_1b.java) at
> mydom.dom.supplier.subscription.SupplierCompetitionAnalysisService.
> downloadCompetitorsInformation(SupplierCompetitionAnalysisService.java:531)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
> at sun.reflect.DelegatingMethodAccessorImpl.invoke(
> DelegatingMethodAccessorImpl.java:43) at 
> java.lang.reflect.Method.invoke(Method.java:483)
> at org.apache.isis.core.metamodel.facets.actions.action.invocation.
> ActionInvocationFacetForDomainEventAbstract.invokeMethodElseFromCache(
> ActionInvocationFacetForDomainEventAbstract.java:408) at
> org.apache.isis.core.metamodel.facets.actions.action.invocation.
> ActionInvocationFacetForDomainEventAbstract$2.execute(
> ActionInvocationFacetForDomainEventAbstract.java:262) at
> org.apache.isis.core.metamodel.facets.actions.action.invocation.
> ActionInvocationFacetForDomainEventAbstract$2.execute(
> ActionInvocationFacetForDomainEventAbstract.java:1) at
> org.apache.isis.applib.services.iactn.Interaction.
> executeInternal(Interaction.java:173) at org.apache.isis.applib.
> services.iactn.Interaction.execute(Interaction.java:143) at
> org.apache.isis.core.metamodel.facets.actions.action.invocation.
> ActionInvocationFacetForDomainEventAbstract.doInvoke(
> ActionInvocationFacetForDomainEventAbstract.java:311) at
> org.apache.isis.core.metamodel.facets.actions.action.invocation.
> ActionInvocationFacetForDomainEventAbstract$1.execute(
> ActionInvocationFacetForDomainEventAbstract.java:165) at
> org.apache.isis.core.runtime.system.transaction.IsisTransactionManager.
> executeWithinTransaction(IsisTransactionManager.java:143) at
> org.apache.isis.core.runtime.system.transaction.IsisTransactionManager.
> executeWithinTransaction(IsisTransactionManager.java:133) at
> org.apache.isis.core.runtime.services.persistsession.
> PersistenceSessionServiceInternalDefault.executeWithinTransaction(
> PersistenceSessionServiceInternalDefault.java:179) at
> org.apache.isis.core.metamodel.facets.actions.action.invocation.
> ActionInvocationFacetForDomainEventAbstract.invoke(
> ActionInvocationFacetForDomainEventAbstract.java:161) at
> org.apache.isis.core.metamodel.specloader.specimpl.ObjectActionDefault.
> executeInternal(ObjectActionDefault.java:398) at org.apache.isis.core.
> metamodel.specloader.specimpl.ObjectActionDefault.execute(ObjectActionDefault.java:387)
> at org.apache.isis.core.wrapper.handlers.DomainObjectInvocationHandler.
> handleActionMethod(DomainObjectInvocationHandler.java:671) at
> org.apache.isis.core.wrapper.handlers.DomainObjectInvocationHandler.
> invoke(DomainObjectInvocationHandler.java:284) at
> org.apache.isis.core.wrapper.proxy.ProxyCreator$1.invoke(ProxyCreator.java:72)
> at mydom.dom.supplier.subscription.SupplierCompetitionAnalysisSer
> vice_$$_jvstfc5_19.downloadCompetitorsInformation(
> SupplierCompetitionAnalysisService_$$_jvstfc5_19.java) at
> mydom.dom.supplier.subscription.schedule.DownloadCompetitorsInformation$
> SupplierUpdateCompetitionInformationRunnable.
> executeWithinExceptionHandler(DownloadCompetitorsInformation.java:57) at
> mydom.dom.scheduler.mydomSessionTemplate.doExecuteWithTransaction(mydomSessionTemplate.java:17)
> at org.apache.isis.core.runtime.sessiontemplate.
> AbstractIsisSessionTemplate$1.execute(AbstractIsisSessionTemplate.java:66)
> at org.apache.isis.core.runtime.system.transaction.IsisTransactionManager.
> executeWithinTransaction(IsisTransactionManager.java:143) at
> org.apache.isis.core.runtime.system.transaction.IsisTransactionManager.
> executeWithinTransaction(IsisTransactionManager.java:133) at
> org.apache.isis.core.runtime.sessiontemplate.AbstractIsisSessionTemplate.
> doExecute(AbstractIsisSessionTemplate.java:63) at
> org.apache.isis.core.runtime.sessiontemplate.AbstractIsisSessionTemplate.
> execute(AbstractIsisSessionTemplate.java:41) at mydom.dom.scheduler.
> AbstractIsisQuartzJob.execute(AbstractIsisQuartzJob.java:51) at
> org.quartz.core.JobRunShell.run(JobRunShell.java:202) at org.quartz.simpl.
> SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:573) ®ƒ

Reply via email to