Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Scripting: Per-context script cache, default off (#52855) #53756

Conversation

stu-elastic
Copy link
Contributor

@stu-elastic stu-elastic commented Mar 18, 2020

  • Adds per context settings:
    script.context.${CONTEXT}.cache_max_size ~
    script.cache.max_size

    script.context.${CONTEXT}.cache_expire ~
    script.cache.expire

    script.context.${CONTEXT}.max_compilations_rate ~
    script.max_compilations_rate

  • Context cache is used if:
    script.max_compilations_rate=use-context. This
    value is dynamically updatable, so users can
    switch back to the general cache if desired.

  • Settings for context caches take the first value
    that applies:

    1. Context specific settings if set, eg
      script.context.ingest.cache_max_size
    2. Correlated general setting is set to the non-default
      value, eg script.cache.max_size
    3. Context default

The reason for 2's inclusion is to allow an easy
transition for users who've customized their general
cache settings.

Using the general cache settings for the context caches
results in higher effective settings, since they are
multiplied across the number of contexts. So a general
cache max size of 200 will become 200 * # of contexts.
However, this behavior it will avoid users snapping to a
value that is too low for them.

Backport of: #52855
Refs: #50152

* Adds per context settings:
  `script.context.${CONTEXT}.cache_max_size` ~
  `script.cache.max_size`

  `script.context.${CONTEXT}.cache_expire` ~
  `script.cache.expire`

  `script.context.${CONTEXT}.max_compilations_rate` ~
  `script.max_compilations_rate`

* Context cache is used if:
  `script.max_compilations_rate=use-context`.  This
  value is dynamically updatable, so users can
  switch back to the general cache if desired.

* Settings for context caches take the first value
  that applies:
  1) Context specific settings if set, eg
     `script.context.ingest.cache_max_size`
  2) Correlated general setting is set to the non-default
     value, eg `script.cache.max_size`
  3) Context default

The reason for 2's inclusion is to allow an easy
transition for users who've customized their general
cache settings.

Using the general cache settings for the context caches
results in higher effective settings, since they are
multiplied across the number of contexts.  So a general
cache max size of 200 will become 200 * # of contexts.
However, this behavior it will avoid users snapping to a
value that is too low for them.

Refs: elastic#50152
…0152-painless-limit-per-context__02__context_specific
@stu-elastic stu-elastic merged commit cdbee32 into elastic:7.x Mar 18, 2020
@stu-elastic stu-elastic added :Core/Infra/Scripting Scripting abstractions, Painless, and Mustache >enhancement v7.7.0 labels Mar 18, 2020
@elasticmachine
Copy link
Collaborator

Pinging @elastic/es-core-infra (:Core/Infra/Scripting)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
:Core/Infra/Scripting Scripting abstractions, Painless, and Mustache >enhancement v7.7.0
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants