[ 
https://issues.apache.org/jira/browse/SOLR-13579?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16892682#comment-16892682
 ] 

Andrzej Bialecki  commented on SOLR-13579:
------------------------------------------

bq. why is the "ResourceManagerPool" class different from the 
"ResourceManagerPlugin" class?
The code in {{ResourceManagerPool}} is independent of the type of resource(s) 
that a pool can manage. I decided to leave them separate for now - perhaps at 
some point we could allow a single pool to manage several aspects of a 
component, in which case a pool could have several plugins.

Also, there can be different pools of the same type, each used for a different 
group of components that support the same management aspect. For example, for 
searcher caches we may want to eventually create separate pools for 
filterCache, queryResultCache and fieldValueCache. All of these pools would use 
the same plugin implementation {{CacheManagerPlugin}} but configured with 
different params and limits.

bq. What happens if a single ManagedResource is part of two different "pools" 
with two different ResourceManagerPlugins that give conflicting/overlapping 
instructions?

Currently this is not allowed ({{DefaultResourceManager.addResource:183}}). In 
theory, I could imagine a component to belong to more than 1 pool of the same 
type - eg. one being a global per-node pool for coarse-grained control and the 
other being a local per-core pool for fine-grained optimization.

However, at this point my head explodes thinking about all possible bad 
interactions, so the code expressly forbids it. :)

bq. does that imply that once SolrCache(s) are part of a "pool" they no longer 
have their own max size(s)?
They still do - but it's used as the starting point for proportional 
adjustments.

As I mentioned above, the exact details of how the adjustments are distributed 
among all caches are still unclear - in the current patch they are applied 
proportionally to each cache's maxSize / maxRamMB. It should be easy to add 
more complex priorities or weights - I wanted to start with something simple to 
illustrate the concept.

bq. how/where would someone specify a "preference" for ensuring that if a 
"pool" is "full" that certain resources should be managed more agressively then 
others

In the current API that would probably need to be defined somewhere between 
{{SolrCache.getResourceLimits()}} and {{CacheManagerPlugin}}, ie. the cache 
would report its "priority" as one of the limits and the plugin would know what 
to do about it.

bq. Also, FYI: with this patch, we now have 2 "ManagedResource" classes in 
solr/core that have absolutely nothing to do with each other...
Yeah, I'll rename this one to something else.

> Create resource management API
> ------------------------------
>
>                 Key: SOLR-13579
>                 URL: https://issues.apache.org/jira/browse/SOLR-13579
>             Project: Solr
>          Issue Type: New Feature
>      Security Level: Public(Default Security Level. Issues are Public) 
>            Reporter: Andrzej Bialecki 
>            Assignee: Andrzej Bialecki 
>            Priority: Major
>         Attachments: SOLR-13579.patch, SOLR-13579.patch, SOLR-13579.patch, 
> SOLR-13579.patch, SOLR-13579.patch
>
>
> Resource management framework API supporting the goals outlined in SOLR-13578.



--
This message was sent by Atlassian JIRA
(v7.6.14#76016)

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@lucene.apache.org
For additional commands, e-mail: dev-h...@lucene.apache.org

Reply via email to