elastic / elastic/logstash

[discuss] dynamic settings

Open
#6,399 2 comments 4 reactions 0 assignees View on GitHub
design discuss enhancement
Dominant language
Java
Stars
14.9k
Forks
3.5k
Avg merge
19h 14m
Merged PRs (30d)
63

Description

### Description
I am currently working on a feature which will be configurable through the settings and will eventually make sense to be able to dynamically change while logstash is running, given a UI and/or API. Same idea with runtime parameters like batch size or number or workers - il would be really useful to be able to change some of the runtime parameters dynamically. These are my thoughts after discussing this idea with @jsvd. #

### Proposal
- Most of LS runtime parameters are now managed with the `Settings` class. I propose we enhance/refactor this class to support multi-threading, where both settings reader threads (ex.: pipeline) and writer threads (ex.: UI or API) could concurrently read/write in the global settings.

- A callback mechanism could be introduced to notify of changed settings?

- Support for multiple settings instances, for example with multiple pipelines, would be required so that dynamic settings PER running pipeline would be supported.

- I think this Settings API should somehow also be exposed to **some** plugins so that plugins could change the LS runtime behaviour. This is obviously tricky and need to be properly assessed for security concerns.

I like this idea of completely decoupling the settings readers and writers and making it completely generic so that any upcoming UI/API would not need to have any specific internal class knowledge (pipeline, agent, logging, ...) and only manipulate this settings class.

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.