Commit graph

835 commits

Author SHA1 Message Date
Joao Duarte
e38d815ecb reload config from files
Fixes #4520
2016-02-05 12:44:52 +00:00
Andrew Cholakian
a90ed32d6d Pluggable agents
Fixes #4520
2016-02-05 12:44:52 +00:00
Suyog Rao
a3f4376f21 Make Java 8 as minimum required
Oracle marked the EOL of Java 7 in April 2015, and as of July 2015 they no longer provide downloads for Java 7.

Fixes #3877

Fixes #4626
2016-02-04 18:43:56 +00:00
Andrew Cholakian
1c79d92a99 Add specs to code around flusher initialization order
Fixes #4623
2016-02-04 16:41:33 +00:00
Andrew Cholakian
4e1338cd21 Fix flusher initialization to prevent race breaking flushing
If start_flusher is called before @running is set to true it may shut itself
down before it truly starts. This fixes that bug.

Fixes #4623
2016-02-04 16:41:33 +00:00
Pier-Hugues Pellerin
41c78372a2 Hide milestone confusing message to the user
This PR change the log level when a user load a plugin with a milestone
option to debug instead of warn.

Fixes: #4562

Fixes #4603
2016-02-03 23:52:30 +00:00
Pere Urbon-Bayes
8e89eaf208 remove unnecessary re register when doing deep clone for codecs
Fixes #4533
2016-01-21 16:33:58 +00:00
Pier-Hugues Pellerin
d6b9fae35d Rename default pipeline from base to main
Fixes: #4527

Fixes #4528
2016-01-20 19:14:32 +00:00
Guy Boertje
1a4032b436 Better method of ensuring that args are not mutated by plugin initialize
add test for subclasses of codec, filter, input and output

Register codec clone, use String clone not dup so frozen strings stay so

Fixes #4444

Fixes #4473
2016-01-14 14:15:55 +00:00
Joao Duarte
69ca10a9d2 distinguish between user set and default pipeline settings 2016-01-13 10:36:17 +00:00
Andrew Cholakian
1db1e3d4e2 Validate pipeline numeric options to ensure positive integers.
There were no specs here before, and IMHO they're a bit overkill for
this section of code, so I'm not changing that.

Fixes #4455
2016-01-11 23:15:29 +00:00
Joao Duarte
d8ba25b04b rename pipeline-worker settings to symbols
Fixes #4430
2016-01-07 18:58:39 +00:00
Andrew Cholakian
26ba7da1e8 Code cleanup per PR review in OutputDelegator
Fixes #4391
2016-01-07 17:19:08 +00:00
Andrew Cholakian
4e5d2c87ec Link to jruby issue in OutputDelegator
Fixes #4391
2016-01-07 17:19:08 +00:00
Andrew Cholakian
2d477b6677 Remove unnecessary logger line used for debugging in outputdelegator
Fixes #4391
2016-01-07 17:19:08 +00:00
Andrew Cholakian
ad48e00340 Cleanup code around warnings around outputs with no workers allowed
Fixes #4391
2016-01-07 17:19:08 +00:00
Andrew Cholakian
e492ff3aba Add debug log for determining the number of output workers for output delegator
Fixes #4391
2016-01-07 17:19:08 +00:00
Andrew Cholakian
54cd6306fc Fix jruby 1.7.x bug around define_singleton_method.
We were getting some bizzare
errors (https://github.com/elastic/logstash/pull/4391#issuecomment-169477728)
on the file output with the new OutputDelegator changes. By switching
away from method(:mymethod) to blocks with define_singleton_method they
went away.

This bug is only present with Jruby 1.7.x (tested with 1.7.22 and
1.7.23). Jruby 9.x is fine.

Fixes #4391
2016-01-07 17:19:08 +00:00
Andrew Cholakian
f6ff16eaab Improve OutputDelegator implementation and specs.
Backwards compatibility is now implemented for existing workers_not_supported uses.

This clears up a few bugs in the initial pass as well.

Fixes #4391
2016-01-07 17:19:08 +00:00
Andrew Cholakian
57f8b657ed Improved semantics for OutputDelegator This commit greatly improves the semantics for the OutputDelegator. It now: * Has an API for declaring if an output is threadsafe to avoid instance creation * By default sets the number of workers for an output to be == the number of pipeline workers * Moves the worker safe API to the class, not instance level * Strongly enforces the worker safety API * Should provide better performance for threadsafe plugins
Fixes #4391
2016-01-07 17:19:08 +00:00
Pier-Hugues Pellerin
9d876fa8b3 Replace def #{type}_func with define_singleton_method
When you run multiples pipeline and the config code get evaluated, on
every evaluation the class cached is clear, everytime you were calling a
`func` method you had the latest evaluated code. The `filter_func` and
the `output_func` need to be unique for every instance of the pipeline,
this PR replace the `def` with a `define_single_method` call ensuring
the uniqueness of the code on every instance.

This PR is based on #4254

Fixes #4298
2016-01-06 20:11:21 +00:00
Pier-Hugues Pellerin
5e76d972d0 Remove sized_queue.rb
Since Logstash 2.2, we now use Java SynchronousQueue instead of ruby
sizequeue

Fixes #4422
2016-01-06 19:22:49 +00:00
Joao Duarte
be914390f2 rename ShutdownController to ShutdownWatcher
slightly adjust the metaphor for the class that is responsible for
monitoring a pipeline's shutdown process, report on its status and
intervene if it's stalled
2016-01-05 17:34:15 +00:00
Andrew Cholakian
bb24631e4f Up default # of pipeline workers to 100% of cores
This is predicated on the fact that with the ng_pipeline it is expected that workers
will spend a significant amount of time in iowait due to outputs like the Elasticsearch
output. In benchmarks based on real-world Apache log files the best performance came out
of scenarios where pipeline_workers > num_cpu_cores. Setting this to default to the # of
cores is a defensive decision that should handle cases where users have particularly IO
heavy inputs.

For most users we should recommend setting the number of workers to be as high as possible
until performance decreases.

Previous benchmark information:
https://github.com/elastic/logstash/pull/4340

Fixes #4414
2016-01-05 17:01:23 +00:00
Pier-Hugues Pellerin
bed04ccfbf Add a WrappedSynchronousQueue#offer method
Expose the Java's `#offer` method of the `SynchronousQueue` class,
This method allow the input developper to correctly apply back pressure
to the network clients.

If you use `#push` it will block forever until the pipeline free some
space, this behavior is sufficient if the pipeline outputs are healthy.
But if the output stale the backpressure will be applied up to the input
(producers) when reading a file this scenario is fine since we will just
stop reading the file until the thread unblock again.

In the context of network clients, the story is a bit different the
clients will timeout and try to reconnect to restransmit their payload
creating multiple new connection thread block on the queue. In some case
this will lead into a OOM issues.

This PR is the first step to communicate that the queue is under
pressure.

Fixes #4408
2016-01-05 14:33:28 +00:00
Andrew Cholakian
a6147909c9 Warn on potential memory issues when a large number of inflight messages are present
Fixes #4410
2016-01-04 19:14:14 +00:00
Colin Surprenant
1cbe279d11 fix to support legacy plugins specs monkeypatching pipelines 2015-12-21 16:16:57 -05:00
Pier-Hugues Pellerin
066e778f63 Allow the Agent to define some identifier
This PR allow the user to set the name of the logstash instance with the
`-n` or `--name` option, if no name is provided the agent will fallback
to the current hostname of the machine.

This PR also add the `node_uuid` to the agent which is unique between
each new instance of the agent, it will lazy generate a UUID v4 on
invocation.

Fixes: #4353

Fixes #4356
2015-12-18 15:10:32 +00:00
Pier-Hugues Pellerin
fe667f2158 Translation missing for the --allow-unsafe-shutdown
Fix the translation missing when running the `bin/logstash --help`
command

Fixes #4357
2015-12-17 19:22:04 +00:00
Andrew Cholakian
3a1b0f200e Use a simple timer thread for flushes instead of a task
Fixes #4340
2015-12-15 18:51:45 +00:00
Andrew Cholakian
028576ba6f Next generation pipeline
Fixes #4340
2015-12-15 18:51:45 +00:00
Joao Duarte
00a99c19e5 refactor concerns of runner, agent and pipeline
* move cli argument handling from agent to runner
* add a short-help message
* add interactive shell option
* log fatal messages to terminal when logging to file
* change docs:generate task to use bundle exec

Fixes #3872
2015-11-25 12:11:36 +00:00
Joao Duarte
5db1d28742 add shutdown controller to force exit on stalled shutdown
* start logstash with --allow-unsafe-shutdown to force_exit on stalled shutdown
* by default --allow-unsafe-shutdown is disabled
* stall detection kicks in when SIGTERM/SIGINT is received
* check if inflight event count isn't going down and if there are blocked/blocking plugin threads
2015-11-19 16:09:29 +00:00
guyboertje
b51608a907 add provision for worker threads based on threadsafe workers
updates requested by code review

changes requested by colin: make workers override from -w arg

do not set workers unless user actually specified it via cmdline

fix defaults printing

add describe block to improve test output readability

Closes #4130
2015-11-17 12:15:44 +00:00
Colin Surprenant
d74d41cb30 logstash-core & logstash-core-event extraction to support logstash-core-event-java impl, relates to #4191
fixed timezone issue

extracted logstash-core and reorganized specs

extracted logstash-core-event

extract java Event into logstash-core-event-java in a proper gem

remove obsolete jruby_event bootstrapping

fix require path

add java code bootstrap

use logstash-core-event/logstash-core-event.rb

remove obsolete files

basic instructions

LogStash::Json need to be initialized from event

update jruby and gradle versions

update compile:logstash-core-event-java rake task

WIP tasks refactor

fix gem.files

skip test if class is not defined

fix gem related tasks for new structure

add gem spec dirs in core tests

bootstrap java implementation when requiring timestamp

new Cloner class and Event clone impl

fix array fields assignments, see #4140

don't rely on json implementation ordering

fix skipped last iterpolation char

remove implementation specific unnecessary check

also require ruby classes

define error class in ruby

raise exception on invalid format

remove implementation specific tests and extract and put logger related test in pending

missing bits for having all core timestamp specs pass

run all core specs

remove leftover

comment regex

missing encoding header

revert to logstash-core-event by default

finished proper gemification

useless require

dynamically pick specs depending on logstash-core-event-* implementation

logstash root package version

missing file for proper gemification

do not build java event by default

always check for root logstash lib dir

fix concurrent-ruby version confict

fix rebase conflict

re-enable specs

user vars instead of constants

move non core code in bootstrap

document version files

move version file

remove useless code

use version in logstash-core

fix gem files list

put back concurrent-ruby version constrain as in master

add dependency on logstash-core-event

remove dependency on logstash-core to avoid circular dependency

fix rebase conflict

remove circular dependency

fix specs

update README
2015-11-16 16:40:19 -05:00