if force shutdown uses `with_pipelines` then it will never acquire the
`@pipelines_lock` from `shutdown_pipelines` until it terminates.
This PR makes force shutdown use `@pipelines` directly, fixing it.
Fixes#7918
Currently generated Vertex IDs are unwieldy concatenations of two sha256 hashes. This is just a pain to deal with.
This patch hashes that concatenation instead, yielding something far easier to deal with.
Fixes#7931
This changes the following:
* DRY Gauge metrics
* Remove Namespace from metrics API (never used, not needed)
* Introduce a 'dirty' flag. This will be used to assist with serialization (in a later commit).
* Change getKey to getName in the API
* Deprecate (only from Java) the future non-supported Guage types.
* Remove NumericGauge and replace with LongGuage and DoubleGuage.
* Bring code coverage back to 100%
Note this change is internally non-passive, however the Java metrics API (recently introduced in 6.0) has not been advertised as a re-usable asset.
Changes in support of #7788Fixes#7872
The last event in a block was being incorrectly handled in such a way that caused unexpected
behavior depending on the contents of the final event, it could cause plugins to fail, or
Logstash to fail with an OutOfMemoryError
Fixes#7871
Fix bug where reloading a pipeline would close the DLQWriter, but
leave the closed version cached in the factory object, stopping
the reloaded pipeline from being able to write to the dead letter
queue.
Fixes#7840
- allow empty config.string
- move all config autocompletion logic to the ConfigStringLoader
- gracefully handle absense of files in path.config
- ensure original_settings are restored in multi_local source after PipelineConfig creation
Fixes#7866
The existing implementation uses the RubyArray as the key for the fast lookup Map. Under the covers the Map implementation is comparing equal operators (many times per event), and JRuby Array equals operator is VERY expensive since it literally walks each value of array for each equality. Based on profiling via YourKit, the JRuby Array equals operator is a very hot method consuming upto 60% of sampled CPU cycles while under high load (and no other CPU dominators).
This change is to use the .hash value of the JRuby Array as the key of the fast lookup Map. This implementation still calls .hash for each and every call, which is also expensive, since it also walks the arrays to compute the hash. However, the equality check of the hash value is very fast, and net gain is significant. Upto a 15% increase of throughput.
Fixes#7772Fixes#7798
This change requires setting the and retrieving the value with different types. The Gauge interface has been update to allow for setting / getting using different types.
Fixes#7719Fixes#7720
Fix Windows build issue where .lock file cannot be deleted due to
underling channel associated with lock not being closed. This
will stop the file from being deleted until the JVM exits, despite
reporting through Java that the file *has* been deleted and does not
exist. It also blocks new files from being created with the same
filename, which caused the test failure here.
Fixes#7822