You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@isis.apache.org by "Daniel Keir Haywood (Jira)" <ji...@apache.org> on 2020/02/21 14:39:00 UTC

[jira] [Updated] (ISIS-2296) @RequestScoped isn't honoured ... also use @TransactionScope instead of our home-grown WithTransactionScope

     [ https://issues.apache.org/jira/browse/ISIS-2296?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Daniel Keir Haywood updated ISIS-2296:
--------------------------------------
    Description: 
@RequestScoped isn't honoured (don't see new instance each request)

The services are:
 * AcceptHeadersService
 * CommandContext
 * InteractionContext
 * Scratchpad
 * PublisherDispatchServiceDefault

That's a big problem... I would expect them to be instantiated (and call @PostConstruct/@PreDestroy) for each request.  As it is, they seem to be singletons.

Also, these three further domain services are annotated with @RequestScoped, but also implement WithTransactionScope:
 * ChangedObjectService
 * QueryResultsCacheDefault
 * MetricsServiceDefault

This callback is being called, so they are not memory leaking over time, but they are not thread-safe for concurrent transactions.  At any rate, we should get rid of this home-grown transaction stuff and instead use Spring's @TransactionScope

~~~

Also, AcceptHeadersServiceForRest (the RO implementation) although it is annotated with @RequestScoped, seems to have its own thread-local.  This could probably be removed if it can be made to be properly request-scoped.

 

 

  was:
@RequestScoped isn't honoured (don't see new instance each request)

The services are:
 * AcceptHeadersService
 * CommandContext
 * InteractionContext
 * Scratchpad
 * PublisherDispatchServiceDefault

That's a big problem... I would expect them to be instantiated (and call @PostConstruct/@PreDestroy) for each request.  As it is, they seem to be singletons.

Also, these three further domain services are annotated with @RequestScoped, but also implement WithTransactionScope:
 * ChangedObjectService
 * QueryResultsCacheDefault
 * MetricsServiceDefault

This callback is being called, so they are not memory leaking over time, but they are not thread-safe for concurrent transactions.  At any rate, we should get rid of this home-grown transaction stuff and instead use Spring's @TransactionScope

 

 


> @RequestScoped isn't honoured ... also use @TransactionScope instead of our home-grown WithTransactionScope
> -----------------------------------------------------------------------------------------------------------
>
>                 Key: ISIS-2296
>                 URL: https://issues.apache.org/jira/browse/ISIS-2296
>             Project: Isis
>          Issue Type: Bug
>            Reporter: Daniel Keir Haywood
>            Assignee: Andi Huber
>            Priority: Critical
>             Fix For: 2.0.0-M3
>
>
> @RequestScoped isn't honoured (don't see new instance each request)
> The services are:
>  * AcceptHeadersService
>  * CommandContext
>  * InteractionContext
>  * Scratchpad
>  * PublisherDispatchServiceDefault
> That's a big problem... I would expect them to be instantiated (and call @PostConstruct/@PreDestroy) for each request.  As it is, they seem to be singletons.
> Also, these three further domain services are annotated with @RequestScoped, but also implement WithTransactionScope:
>  * ChangedObjectService
>  * QueryResultsCacheDefault
>  * MetricsServiceDefault
> This callback is being called, so they are not memory leaking over time, but they are not thread-safe for concurrent transactions.  At any rate, we should get rid of this home-grown transaction stuff and instead use Spring's @TransactionScope
> ~~~
> Also, AcceptHeadersServiceForRest (the RO implementation) although it is annotated with @RequestScoped, seems to have its own thread-local.  This could probably be removed if it can be made to be properly request-scoped.
>  
>  



--
This message was sent by Atlassian Jira
(v8.3.4#803005)