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 2021/11/08 21:41:00 UTC
[jira] [Updated] (ISIS-2888) Use EclipseLink for caching of
"findByUsername" and similar security queries.
[ https://issues.apache.org/jira/browse/ISIS-2888?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Daniel Keir Haywood updated ISIS-2888:
--------------------------------------
Description:
observed numerous calls to findByUsername going to the database,
Have tried various configuration settings to change EclipseLink cache behaviour but they don’t seem to make a difference.
One of them was trying to use QueryMonitor to log cache hits but couldn’t make that output anything. Simple observation of the page showed by rough count of time that page load didn’t vary with different configuration settings.
Perhaps @Cache is required on ApplicationUser?
Earlier attempts to use QueryResultsCache didn’t work out either since hit the issue with ObjectBulkLoader (https://issues.apache.org/jira/browse/ISIS-2330); but think more important is using EclipseLink caching.
Using that caching would be more likely to make a big difference and dealing with clearing the cache can be done at a later date if we need to write direct to the database.
Any luck with settings to log output from EclipseLink’s QueryMonitor or PerformanceMonitor?
~~~
addendum; things attempted:
- various EclipseLink settings and did find with eclipselink.profiler=QueryMonitor that I could reload the dashboard page and see some output.
This showed that caching was happening for primary key based requests but not others.
- Using XML to configure the named queries gave an error about the class not having an id and seemed to be to do with the inheritance and where things were set - various combinations of which class used didn't help.
- tried to no avail finding a way to have my own named queries so I could set the hint on them.
- tried again with wrapping the findByUsername with queryResultsCache but that gave errors about not being in an interaction context when setting up queryResultsCache bean.
Final solution that was hacked: rudimentary caching in overridden version of AuthorizorSecman.
was:
things attempted:
- various EclipseLink settings and did find with eclipselink.profiler=QueryMonitor that I could reload the dashboard page and see some output.
This showed that caching was happening for primary key based requests but not others.
- Using XML to configure the named queries gave an error about the class not having an id and seemed to be to do with the inheritance and where things were set - various combinations of which class used didn't help.
- tried to no avail finding a way to have my own named queries so I could set the hint on them.
- tried again with wrapping the findByUsername with queryResultsCache but that gave errors about not being in an interaction context when setting up queryResultsCache bean.
Final solution that was hacked: rudimentary caching in overridden version of AuthorizorSecman.
> Use EclipseLink for caching of "findByUsername" and similar security queries.
> -----------------------------------------------------------------------------
>
> Key: ISIS-2888
> URL: https://issues.apache.org/jira/browse/ISIS-2888
> Project: Isis
> Issue Type: Improvement
> Reporter: Daniel Keir Haywood
> Priority: Minor
> Fix For: 2.0.0
>
>
> observed numerous calls to findByUsername going to the database,
>
> Have tried various configuration settings to change EclipseLink cache behaviour but they don’t seem to make a difference.
>
> One of them was trying to use QueryMonitor to log cache hits but couldn’t make that output anything. Simple observation of the page showed by rough count of time that page load didn’t vary with different configuration settings.
>
> Perhaps @Cache is required on ApplicationUser?
>
> Earlier attempts to use QueryResultsCache didn’t work out either since hit the issue with ObjectBulkLoader (https://issues.apache.org/jira/browse/ISIS-2330); but think more important is using EclipseLink caching.
> Using that caching would be more likely to make a big difference and dealing with clearing the cache can be done at a later date if we need to write direct to the database.
>
> Any luck with settings to log output from EclipseLink’s QueryMonitor or PerformanceMonitor?
> ~~~
> addendum; things attempted:
>
> - various EclipseLink settings and did find with eclipselink.profiler=QueryMonitor that I could reload the dashboard page and see some output.
> This showed that caching was happening for primary key based requests but not others.
>
> - Using XML to configure the named queries gave an error about the class not having an id and seemed to be to do with the inheritance and where things were set - various combinations of which class used didn't help.
>
> - tried to no avail finding a way to have my own named queries so I could set the hint on them.
>
> - tried again with wrapping the findByUsername with queryResultsCache but that gave errors about not being in an interaction context when setting up queryResultsCache bean.
>
>
> Final solution that was hacked: rudimentary caching in overridden version of AuthorizorSecman.
--
This message was sent by Atlassian Jira
(v8.20.1#820001)