...
SolrMetricsContext
now as a rule is created for each child component, and it includes also the component's metric names and scope. This simplifies the management of metrics, obtaining metrics snapshots - and it was needed in order to construct fully-qualified component IDs for the resource API.SolrCache.warm(...)
also re-sets the limits (such asmaxSize
andmaxRamMB
) using the old cache's limits - this is to preserve custom limits from the old instance when a new instance is a replacement for the old one.
...
The content of the pool configurations file is a serialization of `ResourceManagerAPIResourceManagerAPI.
ResourcePoolConfigs`ResourcePoolConfigs
, which is basically a map of pool names to their configurations. Each pool configuration consists of the following:
...
There are several pre-defined pools, which can be listed using the /cluster/resource
API.
Example configuration in /resourceMgr/poolConfigs.json
:
{
"configs":{
"searcherUserCache":{
"name":"searcherUserCache",
"type":"cache",
'searcherDocumentCache' :
{
'maxRamMB' : 100
} "poolParams":{},
"poolLimits":{
"maxSize": 1000,
"maxRamMB":-1}},
...
}
Currently the PR doesn't use other configuration files or system properties.
...
Users can migrate to this framework gradually by specifying concrete resource limits in place of the defaults - the default settings create unlimited pools for searcher caches so the back-compat behavior remains the same.
...
Test Plan
An integration test TestCacheDynamics
has been created to show the behavior of cache resource management under changing resource constraints. Obviously more tests are needed on a real cluster.
An integration test TestResourceManagerIntegration
exercises the REST API.
Ref Guide content
Most of the material in this SIP, plus example configurations, will become a new section in the Ref Guide.
Rejected Alternatives
If there are alternative ways of accomplishing the same thing, what were they? The purpose of this section is to motivate why the design is the way it is and not some other way.