Class: LogStash::PipelineAction::Create
- Includes:
- Util::Loggable
- Defined in:
- lib/logstash/pipeline_action/create.rb
Instance Method Summary collapse
-
#execute(agent, pipelines_registry) ⇒ Object
The execute assume that the thread safety access of the pipeline is managed by the caller.
-
#execution_priority ⇒ Object
Make sure we execution system pipeline like the monitoring before any user defined pipelines, system pipeline register hooks into the system that will be triggered by the user defined pipeline.
-
#initialize(pipeline_config, metric) ⇒ Create
constructor
We currently pass around the metric object again this is needed to correctly create a pipeline, in a future PR we could pass a factory to create the pipeline so we pass the logic to create the pipeline instead.
- #pipeline_id ⇒ Object
- #to_s ⇒ Object
Methods inherited from Base
Constructor Details
#initialize(pipeline_config, metric) ⇒ Create
We currently pass around the metric object again this is needed to correctly create a pipeline, in a future PR we could pass a factory to create the pipeline so we pass the logic to create the pipeline instead.
15 16 17 18 |
# File 'lib/logstash/pipeline_action/create.rb', line 15 def initialize(pipeline_config, metric) @pipeline_config = pipeline_config @metric = metric end |
Instance Method Details
#execute(agent, pipelines_registry) ⇒ Object
The execute assume that the thread safety access of the pipeline is managed by the caller.
34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
# File 'lib/logstash/pipeline_action/create.rb', line 34 def execute(agent, pipelines_registry) new_pipeline = if @pipeline_config.settings.get_value("pipeline.java_execution") LogStash::JavaPipeline.new(@pipeline_config, @metric, agent) else agent.exclusive do # The Ruby pipeline initialization is not thread safe because of the module level # shared state in LogsStash::Config::AST. When using multiple pipelines this gets # executed simultaneously in different threads and we need to synchronize this initialization. LogStash::Pipeline.new(@pipeline_config, @metric, agent) end end success = pipelines_registry.create_pipeline(pipeline_id, new_pipeline) do new_pipeline.start # block until the pipeline is correctly started or crashed end LogStash::ConvergeResult::ActionResult.create(self, success) end |
#execution_priority ⇒ Object
Make sure we execution system pipeline like the monitoring before any user defined pipelines, system pipeline register hooks into the system that will be triggered by the user defined pipeline.
27 28 29 30 |
# File 'lib/logstash/pipeline_action/create.rb', line 27 def execution_priority default_priority = super @pipeline_config.system? ? default_priority * -1 : default_priority end |
#pipeline_id ⇒ Object
20 21 22 |
# File 'lib/logstash/pipeline_action/create.rb', line 20 def pipeline_id @pipeline_config.pipeline_id end |
#to_s ⇒ Object
54 55 56 |
# File 'lib/logstash/pipeline_action/create.rb', line 54 def to_s "PipelineAction::Create<#{pipeline_id}>" end |