logstash-output-scalyr 0.1.21.beta → 0.1.25.beta
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +7 -0
- data/Gemfile +2 -2
- data/README.md +1 -1
- data/lib/logstash/outputs/scalyr.rb +103 -63
- data/lib/scalyr/constants.rb +1 -1
- data/logstash-output-scalyr.gemspec +1 -1
- data/spec/logstash/outputs/scalyr_integration_spec.rb +8 -2
- data/spec/logstash/outputs/scalyr_spec.rb +126 -2
- data/vendor/bundle/jruby/2.5.0/bin/htmldiff +1 -1
- data/vendor/bundle/jruby/2.5.0/bin/ldiff +1 -1
- data/vendor/bundle/jruby/2.5.0/cache/manticore-0.7.1-java.gem +0 -0
- data/vendor/bundle/jruby/2.5.0/gems/{manticore-0.6.4-java → manticore-0.7.1-java}/APACHE-LICENSE-2.0.txt +0 -0
- data/vendor/bundle/jruby/2.5.0/gems/{manticore-0.6.4-java → manticore-0.7.1-java}/CHANGELOG.md +12 -3
- data/vendor/bundle/jruby/2.5.0/gems/{manticore-0.6.4-java → manticore-0.7.1-java}/Gemfile +2 -1
- data/vendor/bundle/jruby/2.5.0/gems/{manticore-0.6.4-java → manticore-0.7.1-java}/LICENSE.txt +0 -0
- data/vendor/bundle/jruby/2.5.0/gems/{manticore-0.6.4-java → manticore-0.7.1-java}/README.md +17 -4
- data/vendor/bundle/jruby/2.5.0/gems/{manticore-0.6.4-java → manticore-0.7.1-java}/Rakefile +0 -0
- data/vendor/bundle/jruby/2.5.0/gems/{manticore-0.6.4-java → manticore-0.7.1-java}/ext/manticore/org/manticore/HttpDeleteWithEntity.java +0 -0
- data/vendor/bundle/jruby/2.5.0/gems/{manticore-0.6.4-java → manticore-0.7.1-java}/ext/manticore/org/manticore/HttpGetWithEntity.java +0 -0
- data/vendor/bundle/jruby/2.5.0/gems/{manticore-0.6.4-java → manticore-0.7.1-java}/ext/manticore/org/manticore/Manticore.java +0 -0
- data/vendor/bundle/jruby/2.5.0/gems/{manticore-0.6.4-java → manticore-0.7.1-java}/gem-public_cert.pem +0 -0
- data/vendor/bundle/jruby/2.5.0/gems/{manticore-0.6.4-java → manticore-0.7.1-java}/lib/commons-codec/commons-codec/1.10/commons-codec-1.10.jar +0 -0
- data/vendor/bundle/jruby/2.5.0/gems/{manticore-0.6.4-java → manticore-0.7.1-java}/lib/commons-logging/commons-logging/1.2/commons-logging-1.2.jar +0 -0
- data/vendor/bundle/jruby/2.5.0/gems/{manticore-0.6.4-java → manticore-0.7.1-java}/lib/faraday/adapter/manticore.rb +1 -6
- data/vendor/bundle/jruby/2.5.0/gems/{manticore-0.6.4-java → manticore-0.7.1-java}/lib/manticore/client/proxies.rb +0 -0
- data/vendor/bundle/jruby/2.5.0/gems/{manticore-0.6.4-java → manticore-0.7.1-java}/lib/manticore/client.rb +24 -16
- data/vendor/bundle/jruby/2.5.0/gems/{manticore-0.6.4-java → manticore-0.7.1-java}/lib/manticore/cookie.rb +0 -0
- data/vendor/bundle/jruby/2.5.0/gems/{manticore-0.6.4-java → manticore-0.7.1-java}/lib/manticore/facade.rb +0 -0
- data/vendor/bundle/jruby/2.5.0/gems/{manticore-0.6.4-java → manticore-0.7.1-java}/lib/manticore/java_extensions.rb +0 -0
- data/vendor/bundle/jruby/2.5.0/gems/{manticore-0.6.4-java → manticore-0.7.1-java}/lib/manticore/response.rb +12 -12
- data/vendor/bundle/jruby/2.5.0/gems/{manticore-0.6.4-java → manticore-0.7.1-java}/lib/manticore/stubbed_response.rb +0 -0
- data/vendor/bundle/jruby/2.5.0/gems/{manticore-0.6.4-java → manticore-0.7.1-java}/lib/manticore/version.rb +1 -1
- data/vendor/bundle/jruby/2.5.0/gems/{manticore-0.6.4-java → manticore-0.7.1-java}/lib/manticore.rb +26 -2
- data/vendor/bundle/jruby/2.5.0/gems/{manticore-0.6.4-java → manticore-0.7.1-java}/lib/manticore_jars.rb +0 -0
- data/vendor/bundle/jruby/2.5.0/gems/{manticore-0.6.4-java → manticore-0.7.1-java}/lib/org/apache/httpcomponents/httpclient/4.5.2/httpclient-4.5.2.jar +0 -0
- data/vendor/bundle/jruby/2.5.0/gems/{manticore-0.6.4-java → manticore-0.7.1-java}/lib/org/apache/httpcomponents/httpcore/4.4.4/httpcore-4.4.4.jar +0 -0
- data/vendor/bundle/jruby/2.5.0/gems/{manticore-0.6.4-java → manticore-0.7.1-java}/lib/org/apache/httpcomponents/httpmime/4.5.2/httpmime-4.5.2.jar +0 -0
- data/vendor/bundle/jruby/2.5.0/gems/{manticore-0.6.4-java → manticore-0.7.1-java}/lib/org/manticore/manticore-ext.jar +0 -0
- data/vendor/bundle/jruby/2.5.0/gems/{manticore-0.6.4-java → manticore-0.7.1-java}/manticore.gemspec +4 -2
- data/vendor/bundle/jruby/2.5.0/gems/{manticore-0.6.4-java → manticore-0.7.1-java}/spec/manticore/client_proxy_spec.rb +0 -0
- data/vendor/bundle/jruby/2.5.0/gems/{manticore-0.6.4-java → manticore-0.7.1-java}/spec/manticore/client_spec.rb +15 -3
- data/vendor/bundle/jruby/2.5.0/gems/{manticore-0.6.4-java → manticore-0.7.1-java}/spec/manticore/cookie_spec.rb +0 -0
- data/vendor/bundle/jruby/2.5.0/gems/{manticore-0.6.4-java → manticore-0.7.1-java}/spec/manticore/facade_spec.rb +0 -0
- data/vendor/bundle/jruby/2.5.0/gems/{manticore-0.6.4-java → manticore-0.7.1-java}/spec/manticore/response_spec.rb +1 -1
- data/vendor/bundle/jruby/2.5.0/gems/{manticore-0.6.4-java → manticore-0.7.1-java}/spec/manticore/stubbed_response_spec.rb +0 -0
- data/vendor/bundle/jruby/2.5.0/gems/{manticore-0.6.4-java → manticore-0.7.1-java}/spec/spec_helper.rb +0 -0
- data/vendor/bundle/jruby/2.5.0/specifications/{manticore-0.6.4-java.gemspec → manticore-0.7.1-java.gemspec} +10 -9
- metadata +39 -39
- data/vendor/bundle/jruby/2.5.0/cache/manticore-0.6.4-java.gem +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5d84626fc9f17fb9cc549552722612e2620c10ead3700689cb5625715a5441bc
|
4
|
+
data.tar.gz: a49c2c03b3f97678df4a20f66ceec0ec2fdcf4fedcac732a130abe642a469057
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 015e7216df91f4bcc696038ea305936275194d87eb68f5fe5d067e704932663ab5a0cdbb8440810682964c6bfa7a9f052774065ed9fb498fc175900b77eaf161
|
7
|
+
data.tar.gz: e08e06532da18aaf597937482fdee0561ea816b09f3b77c3eee259aeaaaaececcdded5e4dbd2101aacf02018167764c8e98faa7db1c9abe76e4f1094d7fc68ca
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,12 @@
|
|
1
1
|
# Beta
|
2
2
|
|
3
|
+
## 0.1.23.beta
|
4
|
+
- Add testing support for disabling estimation of serialized event size for each event in the batch.
|
5
|
+
|
6
|
+
## 0.1.22.beta
|
7
|
+
- Add new plugin metric for tracking the duration of ``build_multi_event_request_array`` method.
|
8
|
+
- Update internal dependencies (``manticore``) to latest stable version.
|
9
|
+
|
3
10
|
## 0.1.21.beta
|
4
11
|
- Fix issue with iterative flattening function when dealing with empty collections.
|
5
12
|
|
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -10,7 +10,7 @@ You can view documentation for this plugin [on the Scalyr website](https://app.s
|
|
10
10
|
# Quick start
|
11
11
|
|
12
12
|
1. Build the gem, run `gem build logstash-output-scalyr.gemspec`
|
13
|
-
2. Install the gem into a Logstash installation, run `/usr/share/logstash/bin/logstash-plugin install logstash-output-scalyr-0.1.
|
13
|
+
2. Install the gem into a Logstash installation, run `/usr/share/logstash/bin/logstash-plugin install logstash-output-scalyr-0.1.22.beta.gem` or follow the latest official instructions on working with plugins from Logstash.
|
14
14
|
3. Configure the output plugin (e.g. add it to a pipeline .conf)
|
15
15
|
4. Restart Logstash
|
16
16
|
|
@@ -140,11 +140,17 @@ class LogStash::Outputs::Scalyr < LogStash::Outputs::Base
|
|
140
140
|
# Whether or not to create fresh quantile estimators after a status send. Depending on what you want to gather from
|
141
141
|
# these stas this might be wanted or not.
|
142
142
|
config :flush_quantile_estimates_on_status_send, :validate => :boolean, :default => false
|
143
|
-
|
143
|
+
|
144
144
|
# Causes this plugin to act as if it successfully uploaded the logs, while actually returning as quickly as possible
|
145
145
|
# after no work being done.
|
146
146
|
config :noop_mode, :validate => :boolean, :default => false
|
147
147
|
|
148
|
+
# Set to true to disable estimiating the size of each serialized event to make sure we don't go over the max request
|
149
|
+
# size (5.5) and split batch into multiple Scalyr requests, if needed. Since this estimation is not "free", especially
|
150
|
+
# for large batches, it may make sense to disable this option when logstash batch size is configured in a way that
|
151
|
+
# Scalyr single request limit won't be reached.
|
152
|
+
config :estimate_each_event_size, :validate => :boolean, :default => true
|
153
|
+
|
148
154
|
# Manticore related options
|
149
155
|
config :http_connect_timeout, :validate => :number, :default => 10
|
150
156
|
config :http_socket_timeout, :validate => :number, :default => 10
|
@@ -184,6 +190,10 @@ class LogStash::Outputs::Scalyr < LogStash::Outputs::Base
|
|
184
190
|
@logger.warn "Maximum request buffer > 6 MB. This may result in requests being rejected by Scalyr."
|
185
191
|
end
|
186
192
|
|
193
|
+
if not @estimate_each_event_size
|
194
|
+
@logger.warn("estimate_each_event_size config option is false, this means very large batches may be rejected or partially processed by the server")
|
195
|
+
end
|
196
|
+
|
187
197
|
@dlq_writer = dlq_enabled? ? execution_context.dlq_writer : nil
|
188
198
|
|
189
199
|
@message_encoding = nil
|
@@ -289,6 +299,7 @@ class LogStash::Outputs::Scalyr < LogStash::Outputs::Base
|
|
289
299
|
# Convenience method to create a fresh quantile estimator
|
290
300
|
def get_new_metrics
|
291
301
|
return {
|
302
|
+
:build_multi_duration_secs => Quantile::Estimator.new,
|
292
303
|
:multi_receive_duration_secs => Quantile::Estimator.new,
|
293
304
|
:multi_receive_event_count => Quantile::Estimator.new,
|
294
305
|
:event_attributes_count => Quantile::Estimator.new,
|
@@ -313,17 +324,21 @@ class LogStash::Outputs::Scalyr < LogStash::Outputs::Base
|
|
313
324
|
return events if @noop_mode
|
314
325
|
|
315
326
|
begin
|
327
|
+
records_count = events.to_a.length
|
328
|
+
|
329
|
+
# We also time the duration of the build_multi_event_request_array method. To avoid locking twice,
|
330
|
+
# we store the duration value here and record metric at the end.
|
316
331
|
start_time = Time.now.to_f
|
317
332
|
|
318
333
|
multi_event_request_array = build_multi_event_request_array(events)
|
319
|
-
|
334
|
+
build_multi_duration_secs = Time.now.to_f - start_time
|
320
335
|
|
336
|
+
# Loop over all array of multi-event requests, sending each multi-event to Scalyr
|
321
337
|
sleep_interval = @retry_initial_interval
|
322
338
|
batch_num = 1
|
323
339
|
total_batches = multi_event_request_array.length unless multi_event_request_array.nil?
|
324
340
|
|
325
341
|
result = []
|
326
|
-
records_count = events.to_a.length
|
327
342
|
|
328
343
|
while !multi_event_request_array.to_a.empty?
|
329
344
|
multi_event_request = multi_event_request_array.pop
|
@@ -430,6 +445,7 @@ class LogStash::Outputs::Scalyr < LogStash::Outputs::Base
|
|
430
445
|
if records_count > 0
|
431
446
|
@stats_lock.synchronize do
|
432
447
|
@multi_receive_statistics[:total_multi_receive_secs] += (Time.now.to_f - start_time)
|
448
|
+
@plugin_metrics[:build_multi_duration_secs].observe(build_multi_duration_secs)
|
433
449
|
@plugin_metrics[:multi_receive_duration_secs].observe(Time.now.to_f - start_time)
|
434
450
|
@plugin_metrics[:multi_receive_event_count].observe(records_count)
|
435
451
|
@plugin_metrics[:batches_per_multi_receive].observe(total_batches)
|
@@ -666,67 +682,75 @@ class LogStash::Outputs::Scalyr < LogStash::Outputs::Base
|
|
666
682
|
scalyr_event[:log] = logs_ids[log_identifier]
|
667
683
|
end
|
668
684
|
|
669
|
-
|
670
|
-
|
671
|
-
|
672
|
-
|
673
|
-
|
674
|
-
|
675
|
-
|
676
|
-
|
677
|
-
|
678
|
-
|
679
|
-
|
680
|
-
|
681
|
-
|
682
|
-
|
683
|
-
|
684
|
-
|
685
|
-
|
686
|
-
|
687
|
-
|
688
|
-
|
689
|
-
|
690
|
-
|
691
|
-
|
692
|
-
|
693
|
-
|
694
|
-
|
695
|
-
|
696
|
-
|
697
|
-
|
698
|
-
@
|
685
|
+
if @estimate_each_event_size
|
686
|
+
# get json string of event to keep track of how many bytes we are sending
|
687
|
+
begin
|
688
|
+
event_json = scalyr_event.to_json
|
689
|
+
log_json = nil
|
690
|
+
if add_log
|
691
|
+
log_json = logs[log_identifier].to_json
|
692
|
+
end
|
693
|
+
rescue JSON::GeneratorError, Encoding::UndefinedConversionError => e
|
694
|
+
@logger.warn "#{e.class}: #{e.message}"
|
695
|
+
|
696
|
+
# Send the faulty event to a label @ERROR block and allow to handle it there (output to exceptions file for ex)
|
697
|
+
# TODO
|
698
|
+
# atime = Fluent::EventTime.new( sec, nsec )
|
699
|
+
# router.emit_error_event(serverHost, time, record, e)
|
700
|
+
|
701
|
+
scalyr_event[:attrs].each do |key, value|
|
702
|
+
@logger.debug "\t#{key} (#{value.encoding.name}): '#{value}'"
|
703
|
+
scalyr_event[:attrs][key] = value.encode(
|
704
|
+
"UTF-8", :invalid => :replace, :undef => :replace, :replace => "<?>"
|
705
|
+
).force_encoding('UTF-8')
|
706
|
+
end
|
707
|
+
event_json = scalyr_event.to_json
|
708
|
+
rescue Java::JavaLang::ClassCastException => e
|
709
|
+
# Most likely we ran into the issue described here: https://github.com/flori/json/issues/336
|
710
|
+
# Because of the version of jruby logstash works with we don't have the option to just update this away,
|
711
|
+
# so if we run into it we convert bignums into strings so we can get the data in at least.
|
712
|
+
# This is fixed in JRuby 9.2.7, which includes json 2.2.0
|
713
|
+
@logger.warn("Error serializing events to JSON, likely due to the presence of Bignum values. Converting Bignum values to strings.")
|
714
|
+
@stats_lock.synchronize do
|
715
|
+
@multi_receive_statistics[:total_java_class_cast_errors] += 1
|
716
|
+
end
|
717
|
+
Scalyr::Common::Util.convert_bignums(scalyr_event)
|
718
|
+
event_json = scalyr_event.to_json
|
719
|
+
log_json = nil
|
720
|
+
if add_log
|
721
|
+
log_json = logs[log_identifier].to_json
|
722
|
+
end
|
699
723
|
end
|
700
|
-
|
701
|
-
|
702
|
-
|
703
|
-
|
704
|
-
|
724
|
+
|
725
|
+
# generate new request if json size of events in the array exceed maximum request buffer size
|
726
|
+
append_event = true
|
727
|
+
add_bytes = event_json.bytesize
|
728
|
+
if log_json
|
729
|
+
add_bytes = add_bytes + log_json.bytesize
|
705
730
|
end
|
706
|
-
end
|
707
731
|
|
708
|
-
|
709
|
-
|
710
|
-
|
711
|
-
|
712
|
-
|
713
|
-
|
714
|
-
|
715
|
-
|
716
|
-
|
717
|
-
|
718
|
-
|
719
|
-
|
732
|
+
if total_bytes + add_bytes > @max_request_buffer
|
733
|
+
# make sure we always have at least one event
|
734
|
+
if scalyr_events.size == 0
|
735
|
+
scalyr_events << scalyr_event
|
736
|
+
l_events << l_event
|
737
|
+
append_event = false
|
738
|
+
end
|
739
|
+
|
740
|
+
multi_event_request = self.create_multi_event_request(scalyr_events, l_events, current_threads, logs)
|
741
|
+
multi_event_request_array << multi_event_request
|
742
|
+
|
743
|
+
total_bytes = 0
|
744
|
+
current_threads = Hash.new
|
745
|
+
logs = Hash.new
|
746
|
+
logs_ids = Hash.new
|
747
|
+
scalyr_events = Array.new
|
748
|
+
l_events = Array.new
|
720
749
|
end
|
721
|
-
|
722
|
-
|
723
|
-
|
724
|
-
|
725
|
-
current_threads = Hash.new
|
726
|
-
logs = Hash.new
|
727
|
-
logs_ids = Hash.new
|
728
|
-
scalyr_events = Array.new
|
729
|
-
l_events = Array.new
|
750
|
+
else
|
751
|
+
# If size estimation is disabled we simply append the event and handle splitting later on (if needed)
|
752
|
+
append_event = true
|
753
|
+
add_bytes = 0
|
730
754
|
end
|
731
755
|
|
732
756
|
# if we haven't consumed the current event already
|
@@ -739,9 +763,12 @@ class LogStash::Outputs::Scalyr < LogStash::Outputs::Base
|
|
739
763
|
|
740
764
|
}
|
741
765
|
|
742
|
-
# create a final request with any left over events
|
743
|
-
|
744
|
-
|
766
|
+
# create a final request with any left over events (and make sure there is at least one event)
|
767
|
+
if scalyr_events.size >= 1
|
768
|
+
multi_event_request = self.create_multi_event_request(scalyr_events, l_events, current_threads, logs)
|
769
|
+
multi_event_request_array << multi_event_request
|
770
|
+
end
|
771
|
+
|
745
772
|
multi_event_request_array
|
746
773
|
end
|
747
774
|
|
@@ -803,6 +830,15 @@ class LogStash::Outputs::Scalyr < LogStash::Outputs::Base
|
|
803
830
|
end
|
804
831
|
end_time = Time.now.to_f
|
805
832
|
serialization_duration = end_time - start_time
|
833
|
+
|
834
|
+
serialized_request_size = serialized_body.bytesize
|
835
|
+
|
836
|
+
# We give it "buffer" since the splitting code allows for some slack and doesn't take into account top-level non-event attributes
|
837
|
+
if not @estimate_each_event_size and serialized_request_size >= @max_request_buffer + 5000
|
838
|
+
# TODO: If we end up here is estimate config opsion is false, split the request here into multiple ones
|
839
|
+
@logger.warn("Serialized request size (#{serialized_request_size}) is larger than max_request_buffer (#{max_request_buffer})!")
|
840
|
+
end
|
841
|
+
|
806
842
|
{
|
807
843
|
:body => serialized_body, :record_count => scalyr_events.size, :serialization_duration => serialization_duration,
|
808
844
|
:logstash_events => logstash_events
|
@@ -816,6 +852,10 @@ class LogStash::Outputs::Scalyr < LogStash::Outputs::Base
|
|
816
852
|
@stats_lock.synchronize do
|
817
853
|
current_stats = @multi_receive_statistics.clone
|
818
854
|
|
855
|
+
current_stats[:build_multi_duration_secs_p50] = @plugin_metrics[:build_multi_duration_secs].query(0.5)
|
856
|
+
current_stats[:build_multi_duration_secs_p90] = @plugin_metrics[:build_multi_duration_secs].query(0.9)
|
857
|
+
current_stats[:build_multi_duration_secs_p99] = @plugin_metrics[:build_multi_duration_secs].query(0.99)
|
858
|
+
|
819
859
|
current_stats[:multi_receive_duration_p50] = @plugin_metrics[:multi_receive_duration_secs].query(0.5)
|
820
860
|
current_stats[:multi_receive_duration_p90] = @plugin_metrics[:multi_receive_duration_secs].query(0.9)
|
821
861
|
current_stats[:multi_receive_duration_p99] = @plugin_metrics[:multi_receive_duration_secs].query(0.99)
|
data/lib/scalyr/constants.rb
CHANGED
@@ -1,2 +1,2 @@
|
|
1
1
|
# encoding: utf-8
|
2
|
-
PLUGIN_VERSION = "v0.1.
|
2
|
+
PLUGIN_VERSION = "v0.1.25.beta"
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Gem::Specification.new do |s|
|
2
2
|
s.name = 'logstash-output-scalyr'
|
3
|
-
s.version = '0.1.
|
3
|
+
s.version = '0.1.25.beta'
|
4
4
|
s.licenses = ['Apache-2.0']
|
5
5
|
s.summary = "Scalyr output plugin for Logstash"
|
6
6
|
s.description = "Sends log data collected by Logstash to Scalyr (https://www.scalyr.com)"
|
@@ -7,6 +7,12 @@ require "json"
|
|
7
7
|
require 'webmock/rspec'
|
8
8
|
WebMock.allow_net_connect!
|
9
9
|
|
10
|
+
RSpec.configure do |rspec|
|
11
|
+
rspec.expect_with :rspec do |c|
|
12
|
+
c.max_formatted_output_length = nil
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
10
16
|
describe LogStash::Outputs::Scalyr do
|
11
17
|
let(:sample_events) {
|
12
18
|
events = []
|
@@ -58,7 +64,7 @@ describe LogStash::Outputs::Scalyr do
|
|
58
64
|
{
|
59
65
|
:error_class=>"Manticore::UnknownException",
|
60
66
|
:batch_num=>1,
|
61
|
-
:message=>"Unexpected error: java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty",
|
67
|
+
:message=>"java.lang.RuntimeException: Unexpected error: java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty",
|
62
68
|
:payload_size=>781,
|
63
69
|
:record_count=>3,
|
64
70
|
:total_batches=>1,
|
@@ -84,7 +90,7 @@ describe LogStash::Outputs::Scalyr do
|
|
84
90
|
{
|
85
91
|
:error_class=>"Manticore::UnknownException",
|
86
92
|
:batch_num=>1,
|
87
|
-
:message=>"Unexpected error: java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty",
|
93
|
+
:message=>"java.lang.RuntimeException: Unexpected error: java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty",
|
88
94
|
:payload_size=>781,
|
89
95
|
:record_count=>3,
|
90
96
|
:total_batches=>1,
|
@@ -80,6 +80,7 @@ describe LogStash::Outputs::Scalyr do
|
|
80
80
|
plugin1.instance_variable_set(:@client_session, mock_client_session)
|
81
81
|
plugin1.instance_variable_set(:@session_id, "some_session_id")
|
82
82
|
plugin1.instance_variable_set(:@plugin_metrics, {
|
83
|
+
:build_multi_duration_secs => Quantile::Estimator.new,
|
83
84
|
:multi_receive_duration_secs => Quantile::Estimator.new,
|
84
85
|
:multi_receive_event_count => Quantile::Estimator.new,
|
85
86
|
:event_attributes_count => Quantile::Estimator.new,
|
@@ -87,10 +88,11 @@ describe LogStash::Outputs::Scalyr do
|
|
87
88
|
:batches_per_multi_receive => Quantile::Estimator.new
|
88
89
|
})
|
89
90
|
plugin1.instance_variable_get(:@plugin_metrics)[:multi_receive_duration_secs].observe(1)
|
91
|
+
plugin1.instance_variable_get(:@plugin_metrics)[:build_multi_duration_secs].observe(1)
|
90
92
|
plugin1.instance_variable_set(:@multi_receive_statistics, {:total_multi_receive_secs => 0})
|
91
93
|
|
92
94
|
status_event = plugin1.send_status
|
93
|
-
expect(status_event[:attrs]["message"]).to eq("plugin_status: total_requests_sent=20 total_requests_failed=10 total_request_bytes_sent=100 total_compressed_request_bytes_sent=50 total_response_bytes_received=100 total_request_latency_secs=100 total_serialization_duration_secs=100.5000 total_compression_duration_secs=10.2000 compression_type=deflate compression_level=9 total_multi_receive_secs=0 multi_receive_duration_p50=1 multi_receive_duration_p90=1 multi_receive_duration_p99=1 multi_receive_event_count_p50=0 multi_receive_event_count_p90=0 multi_receive_event_count_p99=0 event_attributes_count_p50=0 event_attributes_count_p90=0 event_attributes_count_p99=0 batches_per_multi_receive_p50=0 batches_per_multi_receive_p90=0 batches_per_multi_receive_p99=0")
|
95
|
+
expect(status_event[:attrs]["message"]).to eq("plugin_status: total_requests_sent=20 total_requests_failed=10 total_request_bytes_sent=100 total_compressed_request_bytes_sent=50 total_response_bytes_received=100 total_request_latency_secs=100 total_serialization_duration_secs=100.5000 total_compression_duration_secs=10.2000 compression_type=deflate compression_level=9 total_multi_receive_secs=0 build_multi_duration_secs_p50=1 build_multi_duration_secs_p90=1 build_multi_duration_secs_p99=1 multi_receive_duration_p50=1 multi_receive_duration_p90=1 multi_receive_duration_p99=1 multi_receive_event_count_p50=0 multi_receive_event_count_p90=0 multi_receive_event_count_p99=0 event_attributes_count_p50=0 event_attributes_count_p90=0 event_attributes_count_p99=0 batches_per_multi_receive_p50=0 batches_per_multi_receive_p90=0 batches_per_multi_receive_p99=0")
|
94
96
|
end
|
95
97
|
|
96
98
|
it "returns and sends correct status event on send_stats on initial and subsequent send" do
|
@@ -106,6 +108,7 @@ describe LogStash::Outputs::Scalyr do
|
|
106
108
|
plugin.instance_variable_set(:@client_session, mock_client_session)
|
107
109
|
# Setup one quantile calculation to make sure at least one of them calculates as expected
|
108
110
|
plugin.instance_variable_set(:@plugin_metrics, {
|
111
|
+
:build_multi_duration_secs => Quantile::Estimator.new,
|
109
112
|
:multi_receive_duration_secs => Quantile::Estimator.new,
|
110
113
|
:multi_receive_event_count => Quantile::Estimator.new,
|
111
114
|
:event_attributes_count => Quantile::Estimator.new,
|
@@ -119,12 +122,13 @@ describe LogStash::Outputs::Scalyr do
|
|
119
122
|
|
120
123
|
plugin.instance_variable_set(:@multi_receive_statistics, {:total_multi_receive_secs => 0})
|
121
124
|
status_event = plugin.send_status
|
122
|
-
expect(status_event[:attrs]["message"]).to eq("plugin_status: total_requests_sent=20 total_requests_failed=10 total_request_bytes_sent=100 total_compressed_request_bytes_sent=50 total_response_bytes_received=100 total_request_latency_secs=100 total_serialization_duration_secs=100.5000 total_compression_duration_secs=10.2000 compression_type=deflate compression_level=9 total_multi_receive_secs=0 multi_receive_duration_p50=10 multi_receive_duration_p90=18 multi_receive_duration_p99=19 multi_receive_event_count_p50=0 multi_receive_event_count_p90=0 multi_receive_event_count_p99=0 event_attributes_count_p50=0 event_attributes_count_p90=0 event_attributes_count_p99=0 batches_per_multi_receive_p50=0 batches_per_multi_receive_p90=0 batches_per_multi_receive_p99=0 flatten_values_duration_secs_p50=0 flatten_values_duration_secs_p90=0 flatten_values_duration_secs_p99=0")
|
125
|
+
expect(status_event[:attrs]["message"]).to eq("plugin_status: total_requests_sent=20 total_requests_failed=10 total_request_bytes_sent=100 total_compressed_request_bytes_sent=50 total_response_bytes_received=100 total_request_latency_secs=100 total_serialization_duration_secs=100.5000 total_compression_duration_secs=10.2000 compression_type=deflate compression_level=9 total_multi_receive_secs=0 build_multi_duration_secs_p50=0 build_multi_duration_secs_p90=0 build_multi_duration_secs_p99=0 multi_receive_duration_p50=10 multi_receive_duration_p90=18 multi_receive_duration_p99=19 multi_receive_event_count_p50=0 multi_receive_event_count_p90=0 multi_receive_event_count_p99=0 event_attributes_count_p50=0 event_attributes_count_p90=0 event_attributes_count_p99=0 batches_per_multi_receive_p50=0 batches_per_multi_receive_p90=0 batches_per_multi_receive_p99=0 flatten_values_duration_secs_p50=0 flatten_values_duration_secs_p90=0 flatten_values_duration_secs_p99=0")
|
123
126
|
end
|
124
127
|
|
125
128
|
it "send_stats is called when events list is empty, but otherwise is noop" do
|
126
129
|
quantile_estimator = Quantile::Estimator.new
|
127
130
|
plugin.instance_variable_set(:@plugin_metrics, {
|
131
|
+
:build_multi_duration_secs => Quantile::Estimator.new,
|
128
132
|
:multi_receive_duration_secs => Quantile::Estimator.new,
|
129
133
|
:multi_receive_event_count => Quantile::Estimator.new,
|
130
134
|
:event_attributes_count => Quantile::Estimator.new,
|
@@ -149,6 +153,7 @@ describe LogStash::Outputs::Scalyr do
|
|
149
153
|
mock_client_session = MockClientSession.new
|
150
154
|
quantile_estimator = Quantile::Estimator.new
|
151
155
|
plugin2.instance_variable_set(:@plugin_metrics, {
|
156
|
+
:build_multi_duration_secs => Quantile::Estimator.new,
|
152
157
|
:multi_receive_duration_secs => Quantile::Estimator.new,
|
153
158
|
:multi_receive_event_count => Quantile::Estimator.new,
|
154
159
|
:event_attributes_count => Quantile::Estimator.new,
|
@@ -174,6 +179,7 @@ describe LogStash::Outputs::Scalyr do
|
|
174
179
|
plugin.instance_variable_set(:@last_status_transmit_time, 100)
|
175
180
|
plugin.instance_variable_set(:@client_session, mock_client_session)
|
176
181
|
plugin.instance_variable_set(:@plugin_metrics, {
|
182
|
+
:build_multi_duration_secs => Quantile::Estimator.new,
|
177
183
|
:multi_receive_duration_secs => Quantile::Estimator.new,
|
178
184
|
:multi_receive_event_count => Quantile::Estimator.new,
|
179
185
|
:event_attributes_count => Quantile::Estimator.new,
|
@@ -386,6 +392,124 @@ describe LogStash::Outputs::Scalyr do
|
|
386
392
|
end
|
387
393
|
end
|
388
394
|
|
395
|
+
context "split large batches into multiple scalyr requests" do
|
396
|
+
it "estimate_each_event_size is true explicit (default) batch split into 3 scalyr requests" do
|
397
|
+
config = {
|
398
|
+
'api_write_token' => '1234',
|
399
|
+
'flatten_tags' => true,
|
400
|
+
'flat_tag_value' => 'true',
|
401
|
+
'flat_tag_prefix' => 'tag_prefix_',
|
402
|
+
'flatten_nested_values' => true, # this converts into string 'true'
|
403
|
+
'max_request_buffer' => 10,
|
404
|
+
'estimate_each_event_size' => true
|
405
|
+
}
|
406
|
+
plugin = LogStash::Outputs::Scalyr.new(config)
|
407
|
+
|
408
|
+
allow(plugin).to receive(:send_status).and_return(nil)
|
409
|
+
plugin.register
|
410
|
+
result = plugin.build_multi_event_request_array(sample_events)
|
411
|
+
expect(result.size).to eq(3)
|
412
|
+
|
413
|
+
body = JSON.parse(result[0][:body])
|
414
|
+
expect(body['events'].size).to eq(1)
|
415
|
+
|
416
|
+
body = JSON.parse(result[1][:body])
|
417
|
+
expect(body['events'].size).to eq(1)
|
418
|
+
|
419
|
+
body = JSON.parse(result[2][:body])
|
420
|
+
expect(body['events'].size).to eq(1)
|
421
|
+
expect(body['events'][0]['attrs']).to eq({
|
422
|
+
"nested_a" => 1,
|
423
|
+
"nested_b_0" => 3,
|
424
|
+
"nested_b_1" => 4,
|
425
|
+
"nested_b_2" => 5,
|
426
|
+
'seq' => 3,
|
427
|
+
'source_file' => 'my file 3',
|
428
|
+
'source_host' => 'my host 3',
|
429
|
+
'serverHost' => 'Logstash',
|
430
|
+
"tag_prefix_t1" => "true",
|
431
|
+
"tag_prefix_t2" => "true",
|
432
|
+
"tag_prefix_t3" => "true",
|
433
|
+
"parser" => "logstashParser",
|
434
|
+
})
|
435
|
+
end
|
436
|
+
|
437
|
+
it "estimate_each_event_size is true implicit (default) batch split into 3 scalyr requests" do
|
438
|
+
config = {
|
439
|
+
'api_write_token' => '1234',
|
440
|
+
'flatten_tags' => true,
|
441
|
+
'flat_tag_value' => 'true',
|
442
|
+
'flat_tag_prefix' => 'tag_prefix_',
|
443
|
+
'flatten_nested_values' => true, # this converts into string 'true'
|
444
|
+
'max_request_buffer' => 10,
|
445
|
+
}
|
446
|
+
plugin = LogStash::Outputs::Scalyr.new(config)
|
447
|
+
|
448
|
+
allow(plugin).to receive(:send_status).and_return(nil)
|
449
|
+
plugin.register
|
450
|
+
result = plugin.build_multi_event_request_array(sample_events)
|
451
|
+
expect(result.size).to eq(3)
|
452
|
+
|
453
|
+
body = JSON.parse(result[0][:body])
|
454
|
+
expect(body['events'].size).to eq(1)
|
455
|
+
|
456
|
+
body = JSON.parse(result[1][:body])
|
457
|
+
expect(body['events'].size).to eq(1)
|
458
|
+
|
459
|
+
body = JSON.parse(result[2][:body])
|
460
|
+
expect(body['events'].size).to eq(1)
|
461
|
+
expect(body['events'][0]['attrs']).to eq({
|
462
|
+
"nested_a" => 1,
|
463
|
+
"nested_b_0" => 3,
|
464
|
+
"nested_b_1" => 4,
|
465
|
+
"nested_b_2" => 5,
|
466
|
+
'seq' => 3,
|
467
|
+
'source_file' => 'my file 3',
|
468
|
+
'source_host' => 'my host 3',
|
469
|
+
'serverHost' => 'Logstash',
|
470
|
+
"tag_prefix_t1" => "true",
|
471
|
+
"tag_prefix_t2" => "true",
|
472
|
+
"tag_prefix_t3" => "true",
|
473
|
+
"parser" => "logstashParser",
|
474
|
+
})
|
475
|
+
end
|
476
|
+
|
477
|
+
it "estimate_each_event_size is false batch not split into multiple scalyr requests" do
|
478
|
+
config = {
|
479
|
+
'api_write_token' => '1234',
|
480
|
+
'flatten_tags' => true,
|
481
|
+
'flat_tag_value' => 'true',
|
482
|
+
'flat_tag_prefix' => 'tag_prefix_',
|
483
|
+
'flatten_nested_values' => true, # this converts into string 'true'
|
484
|
+
'max_request_buffer' => 10,
|
485
|
+
'estimate_each_event_size' => false
|
486
|
+
}
|
487
|
+
plugin = LogStash::Outputs::Scalyr.new(config)
|
488
|
+
|
489
|
+
allow(plugin).to receive(:send_status).and_return(nil)
|
490
|
+
plugin.register
|
491
|
+
result = plugin.build_multi_event_request_array(sample_events)
|
492
|
+
expect(result.size).to eq(1)
|
493
|
+
|
494
|
+
body = JSON.parse(result[0][:body])
|
495
|
+
expect(body['events'].size).to eq(3)
|
496
|
+
expect(body['events'][2]['attrs']).to eq({
|
497
|
+
"nested_a" => 1,
|
498
|
+
"nested_b_0" => 3,
|
499
|
+
"nested_b_1" => 4,
|
500
|
+
"nested_b_2" => 5,
|
501
|
+
'seq' => 3,
|
502
|
+
'source_file' => 'my file 3',
|
503
|
+
'source_host' => 'my host 3',
|
504
|
+
'serverHost' => 'Logstash',
|
505
|
+
"tag_prefix_t1" => "true",
|
506
|
+
"tag_prefix_t2" => "true",
|
507
|
+
"tag_prefix_t3" => "true",
|
508
|
+
"parser" => "logstashParser",
|
509
|
+
})
|
510
|
+
end
|
511
|
+
end
|
512
|
+
|
389
513
|
context "when not configured to flatten values and tags" do
|
390
514
|
config = {
|
391
515
|
'api_write_token' => '1234',
|
Binary file
|
File without changes
|
data/vendor/bundle/jruby/2.5.0/gems/{manticore-0.6.4-java → manticore-0.7.1-java}/CHANGELOG.md
RENAMED
@@ -1,8 +1,17 @@
|
|
1
|
-
## v0.
|
1
|
+
## v0.7
|
2
|
+
|
3
|
+
### v0.7.1
|
4
|
+
|
5
|
+
* Don't override certificates with same Subject (#93)
|
6
|
+
* Set Java cause for ManticoreException types (#96)
|
7
|
+
* Fix SSL handshake hang indefinitely (#98)
|
2
8
|
|
3
|
-
### v0.
|
9
|
+
### v0.7.0
|
4
10
|
|
5
|
-
|
11
|
+
* Drop support for JRuby 1.7. It probably still works, but we don't test against it anymore
|
12
|
+
* Fix a thread safety issue with regards to adding requests to the parallel execution queue while the client is already processing a queue (#80)
|
13
|
+
|
14
|
+
## v0.6
|
6
15
|
|
7
16
|
### v0.6.4
|
8
17
|
|
data/vendor/bundle/jruby/2.5.0/gems/{manticore-0.6.4-java → manticore-0.7.1-java}/LICENSE.txt
RENAMED
File without changes
|
@@ -90,7 +90,11 @@ For detailed documentation, see the [full Manticore::Client documentation](http:
|
|
90
90
|
Rather than using the Facade, you can create your own standalone Client instances. When you create a `Client`, you will pass various parameters that it will use to set up the pool.
|
91
91
|
|
92
92
|
```ruby
|
93
|
-
client = Manticore::Client.new(request_timeout: 5,
|
93
|
+
client = Manticore::Client.new(request_timeout: 5,
|
94
|
+
connect_timeout: 5,
|
95
|
+
socket_timeout: 5,
|
96
|
+
pool_max: 10,
|
97
|
+
pool_max_per_route: 2)
|
94
98
|
```
|
95
99
|
|
96
100
|
Then, you can make requests from the client. Pooling and route maximum constraints are automatically managed:
|
@@ -122,11 +126,20 @@ per-route concurrency limits, and other neat things. In general, you should crea
|
|
122
126
|
To set this up, you might create 2 pools, each configured for the task:
|
123
127
|
|
124
128
|
```ruby
|
125
|
-
general_http_client = Manticore::Client.new
|
129
|
+
general_http_client = Manticore::Client.new(connect_timeout: 10,
|
130
|
+
socket_timeout: 10,
|
131
|
+
request_timeout: 10,
|
132
|
+
follow_redirects: true,
|
133
|
+
max_per_route: 2)
|
126
134
|
# With an OpenSSL CA store
|
127
|
-
proxied_backend_client = Manticore::Client.new
|
135
|
+
proxied_backend_client = Manticore::Client.new(proxy: "https://backend.internal:4242",
|
136
|
+
ssl: { ca_file: "my_certs.pem" })
|
128
137
|
# Or with a .jks truststore
|
129
|
-
|
138
|
+
proxied_backend_client = Manticore::Client.new(proxy: "https://backend.internal:4242",
|
139
|
+
ssl: {
|
140
|
+
truststore: "./truststore.jks",
|
141
|
+
truststore_password: "s3cr3t"
|
142
|
+
})
|
130
143
|
```
|
131
144
|
|
132
145
|
This would create 2 separate request pools; the first would be configured with generous timeouts and redirect following, and would use the system
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
@@ -20,17 +20,12 @@ module Faraday
|
|
20
20
|
ParallelManager.new
|
21
21
|
end
|
22
22
|
|
23
|
-
def initialize(app, connection_options = {})
|
24
|
-
@connection_options = connection_options
|
25
|
-
super(app)
|
26
|
-
end
|
27
|
-
|
28
23
|
def client(env)
|
29
24
|
@client ||= begin
|
30
25
|
opts = {}
|
31
26
|
if ssl = env[:ssl].to_hash
|
32
27
|
opts[:ssl] = {}
|
33
|
-
opts[:ssl][:verify] = :
|
28
|
+
opts[:ssl][:verify] = ssl[:verify] unless ssl[:verify].nil?
|
34
29
|
opts[:ssl][:ca_file] = ssl[:ca_file]
|
35
30
|
opts[:ssl][:client_cert] = ssl[:client_cert]
|
36
31
|
opts[:ssl][:client_key] = ssl[:client_key]
|
File without changes
|
@@ -69,10 +69,8 @@ module Manticore
|
|
69
69
|
include_package "org.apache.http.client.config"
|
70
70
|
include_package "org.apache.http.config"
|
71
71
|
include_package "org.apache.http.conn.socket"
|
72
|
-
include_package "org.apache.http.impl"
|
73
72
|
include_package "org.apache.http.impl.client"
|
74
73
|
include_package "org.apache.http.impl.conn"
|
75
|
-
include_package "org.apache.http.impl.auth"
|
76
74
|
include_package "org.apache.http.entity"
|
77
75
|
include_package "org.apache.http.message"
|
78
76
|
include_package "org.apache.http.params"
|
@@ -80,16 +78,20 @@ module Manticore
|
|
80
78
|
include_package "org.apache.http.auth"
|
81
79
|
include_package "java.util.concurrent"
|
82
80
|
include_package "org.apache.http.client.protocol"
|
83
|
-
include_package "org.apache.http.conn.ssl"
|
84
81
|
include_package "java.security.cert"
|
85
82
|
include_package "java.security.spec"
|
86
83
|
include_package "java.security"
|
87
|
-
include_package "org.apache.http.client.utils"
|
88
84
|
java_import "org.apache.http.HttpHost"
|
89
85
|
java_import "javax.net.ssl.SSLContext"
|
90
86
|
java_import "org.manticore.HttpGetWithEntity"
|
91
87
|
java_import "org.manticore.HttpDeleteWithEntity"
|
92
88
|
java_import "org.apache.http.auth.UsernamePasswordCredentials"
|
89
|
+
java_import "org.apache.http.conn.ssl.SSLConnectionSocketFactory"
|
90
|
+
java_import "org.apache.http.conn.ssl.SSLContextBuilder"
|
91
|
+
java_import "org.apache.http.conn.ssl.TrustSelfSignedStrategy"
|
92
|
+
java_import "org.apache.http.client.utils.URIBuilder"
|
93
|
+
java_import "org.apache.http.impl.DefaultConnectionReuseStrategy"
|
94
|
+
java_import "org.apache.http.impl.auth.BasicScheme"
|
93
95
|
|
94
96
|
# This is a class rather than a proc because the proc holds a closure around
|
95
97
|
# the instance of the Client that creates it.
|
@@ -201,11 +203,7 @@ module Manticore
|
|
201
203
|
builder.set_connection_reuse_strategy DefaultConnectionReuseStrategy.new
|
202
204
|
end
|
203
205
|
|
204
|
-
|
205
|
-
socket_config_builder.set_so_timeout(options.fetch(:socket_timeout, DEFAULT_SOCKET_TIMEOUT) * 1000)
|
206
|
-
socket_config_builder.set_tcp_no_delay(options.fetch(:tcp_no_delay, true))
|
207
|
-
builder.set_default_socket_config socket_config_builder.build
|
208
|
-
|
206
|
+
builder.set_default_socket_config socket_config_from_options(options)
|
209
207
|
builder.set_connection_manager pool(options)
|
210
208
|
|
211
209
|
request_config = RequestConfig.custom
|
@@ -223,7 +221,7 @@ module Manticore
|
|
223
221
|
@client = builder.build
|
224
222
|
finalize @client, :close
|
225
223
|
@options = options
|
226
|
-
@async_requests =
|
224
|
+
@async_requests = Queue.new
|
227
225
|
@stubs = {}
|
228
226
|
end
|
229
227
|
|
@@ -334,8 +332,9 @@ module Manticore
|
|
334
332
|
# @return [Array] An array of the responses from the requests executed.
|
335
333
|
def execute!
|
336
334
|
method = executor.java_method(:submit, [java.util.concurrent.Callable.java_class])
|
337
|
-
|
338
|
-
|
335
|
+
|
336
|
+
result = []
|
337
|
+
result << method.call(@async_requests.pop) until @async_requests.empty?
|
339
338
|
result.map do |future|
|
340
339
|
begin
|
341
340
|
future.get
|
@@ -406,10 +405,19 @@ module Manticore
|
|
406
405
|
cm.set_validate_after_inactivity options.fetch(:check_connection_timeout, 2_000)
|
407
406
|
cm.set_default_max_per_route options.fetch(:pool_max_per_route, @max_pool_size)
|
408
407
|
cm.set_max_total @max_pool_size
|
408
|
+
cm.set_default_socket_config socket_config_from_options(options)
|
409
|
+
|
409
410
|
finalize cm, :shutdown
|
410
411
|
end
|
411
412
|
end
|
412
413
|
end
|
414
|
+
|
415
|
+
def socket_config_from_options(options)
|
416
|
+
socket_config_builder = SocketConfig.custom
|
417
|
+
socket_config_builder.set_so_timeout(options.fetch(:socket_timeout, DEFAULT_SOCKET_TIMEOUT) * 1000)
|
418
|
+
socket_config_builder.set_tcp_no_delay(options.fetch(:tcp_no_delay, true))
|
419
|
+
socket_config_builder.build
|
420
|
+
end
|
413
421
|
|
414
422
|
def create_executor_if_needed
|
415
423
|
return @executor if @executor
|
@@ -509,7 +517,7 @@ module Manticore
|
|
509
517
|
|
510
518
|
if @use_cookies == :per_request
|
511
519
|
store = BasicCookieStore.new
|
512
|
-
context.setAttribute(ClientContext
|
520
|
+
context.setAttribute(ClientContext::COOKIE_STORE, store)
|
513
521
|
end
|
514
522
|
|
515
523
|
return req, context
|
@@ -617,7 +625,7 @@ module Manticore
|
|
617
625
|
raise "Invalid value for :verify. Valid values are (:all, :browser, :default)"
|
618
626
|
end
|
619
627
|
|
620
|
-
context =
|
628
|
+
context = SSLContextBuilder.new
|
621
629
|
setup_trust_store ssl_options, context, trust_strategy
|
622
630
|
setup_key_store ssl_options, context
|
623
631
|
|
@@ -632,8 +640,8 @@ module Manticore
|
|
632
640
|
trust_store ||= blank_keystore
|
633
641
|
open(ssl_options[:ca_file]) do |fp|
|
634
642
|
cert_collection = CertificateFactory.get_instance("X509").generate_certificates(fp.to_inputstream).to_a
|
635
|
-
cert_collection.
|
636
|
-
trust_store.set_certificate_entry(cert.getSubjectX500Principal.name, cert)
|
643
|
+
cert_collection.each_with_index do |cert, i|
|
644
|
+
trust_store.set_certificate_entry("#{i}#" + cert.getSubjectX500Principal.name, cert)
|
637
645
|
end
|
638
646
|
end
|
639
647
|
end
|
File without changes
|
File without changes
|
File without changes
|
@@ -11,14 +11,13 @@ module Manticore
|
|
11
11
|
# @!attribute [r] callback_result
|
12
12
|
# @return Value returned from any given on_success/response block
|
13
13
|
class Response
|
14
|
-
|
15
|
-
|
16
|
-
include_package "org.apache.http.protocol"
|
14
|
+
|
15
|
+
java_import "org.apache.http.client.ResponseHandler"
|
17
16
|
java_import "org.apache.http.client.protocol.HttpClientContext"
|
18
|
-
java_import "
|
17
|
+
java_import "org.apache.http.protocol.ExecutionContext"
|
19
18
|
|
20
|
-
include ResponseHandler
|
21
|
-
include Callable
|
19
|
+
include org.apache.http.client.ResponseHandler
|
20
|
+
include java.util.concurrent.Callable
|
22
21
|
|
23
22
|
attr_accessor :background
|
24
23
|
attr_reader :context, :request, :callback_result, :called, :future
|
@@ -54,15 +53,16 @@ module Manticore
|
|
54
53
|
ex = Manticore::ConnectTimeout
|
55
54
|
rescue Java::JavaNet::SocketException => e
|
56
55
|
ex = Manticore::SocketException
|
57
|
-
rescue Java::OrgApacheHttpClient::ClientProtocolException, Java::JavaxNetSsl::SSLHandshakeException,
|
58
|
-
Java::
|
56
|
+
rescue Java::OrgApacheHttpClient::ClientProtocolException, Java::JavaxNetSsl::SSLHandshakeException,
|
57
|
+
Java::OrgApacheHttpConn::HttpHostConnectException, Java::OrgApacheHttp::NoHttpResponseException,
|
58
|
+
Java::OrgApacheHttp::ConnectionClosedException => e
|
59
59
|
ex = Manticore::ClientProtocolException
|
60
60
|
rescue Java::JavaNet::UnknownHostException => e
|
61
61
|
ex = Manticore::ResolutionFailure
|
62
62
|
rescue Java::JavaLang::IllegalArgumentException => e
|
63
63
|
ex = Manticore::InvalidArgumentException
|
64
64
|
rescue Java::JavaLang::IllegalStateException => e
|
65
|
-
if e.message.
|
65
|
+
if (e.message || '').index('Connection pool shut down')
|
66
66
|
ex = Manticore::ClientStoppedException
|
67
67
|
else
|
68
68
|
@exception = e
|
@@ -75,7 +75,7 @@ module Manticore
|
|
75
75
|
|
76
76
|
# TODO: If calling async, execute_complete may fail and then silently swallow exceptions. How do we fix that?
|
77
77
|
if ex || @exception
|
78
|
-
@exception ||= ex.new(e
|
78
|
+
@exception ||= ex.new(e)
|
79
79
|
@handlers[:failure].call @exception
|
80
80
|
execute_complete
|
81
81
|
nil
|
@@ -90,8 +90,8 @@ module Manticore
|
|
90
90
|
# @return [String]
|
91
91
|
def final_url
|
92
92
|
call_once
|
93
|
-
last_request = context.get_attribute ExecutionContext
|
94
|
-
last_host = context.get_attribute ExecutionContext
|
93
|
+
last_request = context.get_attribute ExecutionContext::HTTP_REQUEST
|
94
|
+
last_host = context.get_attribute ExecutionContext::HTTP_TARGET_HOST
|
95
95
|
host = last_host.to_uri
|
96
96
|
url = last_request.get_uri
|
97
97
|
URI.join(host, url.to_s)
|
File without changes
|
data/vendor/bundle/jruby/2.5.0/gems/{manticore-0.6.4-java → manticore-0.7.1-java}/lib/manticore.rb
RENAMED
@@ -5,7 +5,11 @@ require "cgi"
|
|
5
5
|
require_relative "./manticore_jars.rb"
|
6
6
|
require_relative "./org/manticore/manticore-ext"
|
7
7
|
|
8
|
-
|
8
|
+
if defined? JRuby::Util.load_ext
|
9
|
+
JRuby::Util.load_ext 'org.manticore.Manticore'
|
10
|
+
else
|
11
|
+
org.manticore.Manticore.new.load(JRuby.runtime, false)
|
12
|
+
end
|
9
13
|
|
10
14
|
require_relative "./manticore/version"
|
11
15
|
|
@@ -13,7 +17,27 @@ require_relative "./manticore/version"
|
|
13
17
|
# with the beauty of Ruby.
|
14
18
|
module Manticore
|
15
19
|
# General base class for all Manticore exceptions
|
16
|
-
class ManticoreException < StandardError
|
20
|
+
class ManticoreException < StandardError
|
21
|
+
def initialize(arg = nil)
|
22
|
+
case arg
|
23
|
+
when nil
|
24
|
+
@_cause = nil
|
25
|
+
super()
|
26
|
+
when java.lang.Throwable
|
27
|
+
@_cause = arg
|
28
|
+
super(arg.message)
|
29
|
+
else
|
30
|
+
@_cause = nil
|
31
|
+
super(arg)
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
# @return cause which is likely to be a Java exception
|
36
|
+
# @overload Exception#cause
|
37
|
+
def cause
|
38
|
+
@_cause || super
|
39
|
+
end
|
40
|
+
end
|
17
41
|
|
18
42
|
# Exception thrown if you attempt to read from a closed Response stream
|
19
43
|
class StreamClosedException < ManticoreException; end
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
data/vendor/bundle/jruby/2.5.0/gems/{manticore-0.6.4-java → manticore-0.7.1-java}/manticore.gemspec
RENAMED
@@ -19,6 +19,8 @@ Gem::Specification.new do |spec|
|
|
19
19
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
20
20
|
spec.require_paths = ["lib"]
|
21
21
|
|
22
|
+
spec.required_ruby_version = '>= 2.3' # JRuby >= 9.1
|
23
|
+
|
22
24
|
private_key = File.expand_path("~/.gemcert/gem-private_key.pem")
|
23
25
|
if File.exists? private_key
|
24
26
|
spec.signing_key = private_key
|
@@ -27,9 +29,9 @@ Gem::Specification.new do |spec|
|
|
27
29
|
|
28
30
|
spec.add_dependency "openssl_pkcs8_pure"
|
29
31
|
|
30
|
-
spec.add_development_dependency "bundler"
|
32
|
+
spec.add_development_dependency "bundler"
|
31
33
|
spec.add_development_dependency "rake"
|
32
|
-
spec.add_development_dependency "jar-dependencies"
|
34
|
+
spec.add_development_dependency "jar-dependencies", "~> 0.4.1"
|
33
35
|
|
34
36
|
spec.requirements << "jar org.apache.httpcomponents:httpclient, '~> 4.5.0'"
|
35
37
|
spec.requirements << "jar org.apache.httpcomponents:httpmime, '~> 4.5.0'"
|
File without changes
|
@@ -130,7 +130,13 @@ describe Manticore::Client do
|
|
130
130
|
let(:client) { Manticore::Client.new :ssl => {:verify => :strict} }
|
131
131
|
|
132
132
|
it "breaks on SSL validation errors" do
|
133
|
-
|
133
|
+
begin
|
134
|
+
client.get("https://localhost:55445/").body
|
135
|
+
rescue Manticore::ClientProtocolException => e
|
136
|
+
expect( e.cause ).to be_a javax.net.ssl.SSLHandshakeException
|
137
|
+
else
|
138
|
+
fail "exception not raised"
|
139
|
+
end
|
134
140
|
end
|
135
141
|
end
|
136
142
|
|
@@ -563,7 +569,7 @@ describe Manticore::Client do
|
|
563
569
|
describe "#head" do
|
564
570
|
it "works" do
|
565
571
|
response = client.head(local_server)
|
566
|
-
expect(
|
572
|
+
expect(response.body).to be_nil
|
567
573
|
end
|
568
574
|
end
|
569
575
|
|
@@ -830,7 +836,13 @@ describe Manticore::Client do
|
|
830
836
|
let(:client) { Manticore::Client.new request_timeout: 1, connect_timeout: 1, socket_timeout: 1 }
|
831
837
|
|
832
838
|
it "times out" do
|
833
|
-
|
839
|
+
begin
|
840
|
+
client.get(local_server "/?sleep=2").body
|
841
|
+
rescue Manticore::SocketTimeout => e
|
842
|
+
expect( e.cause ).to be_a java.net.SocketTimeoutException
|
843
|
+
else
|
844
|
+
fail "exception not raised"
|
845
|
+
end
|
834
846
|
end
|
835
847
|
|
836
848
|
it "times out when custom request options are passed" do
|
File without changes
|
File without changes
|
@@ -6,7 +6,7 @@ describe Manticore::Response do
|
|
6
6
|
|
7
7
|
its(:headers) { is_expected.to be_a Hash }
|
8
8
|
its(:body) { is_expected.to be_a String }
|
9
|
-
its(:length) { is_expected.to be_a
|
9
|
+
its(:length) { is_expected.to be_a Integer }
|
10
10
|
|
11
11
|
it "provides response header lookup via #[]" do
|
12
12
|
expect(subject["Content-Type"]).to eq "application/json"
|
File without changes
|
File without changes
|
@@ -1,19 +1,20 @@
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
2
|
-
# stub: manticore 0.
|
2
|
+
# stub: manticore 0.7.1 java lib
|
3
3
|
|
4
4
|
Gem::Specification.new do |s|
|
5
5
|
s.name = "manticore".freeze
|
6
|
-
s.version = "0.
|
6
|
+
s.version = "0.7.1"
|
7
7
|
s.platform = "java".freeze
|
8
8
|
|
9
9
|
s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if s.respond_to? :required_rubygems_version=
|
10
10
|
s.require_paths = ["lib".freeze]
|
11
11
|
s.authors = ["Chris Heald".freeze]
|
12
|
-
s.date = "
|
12
|
+
s.date = "2021-08-18"
|
13
13
|
s.description = "Manticore is an HTTP client built on the Apache HttpCore components".freeze
|
14
14
|
s.email = ["cheald@mashable.com".freeze]
|
15
15
|
s.homepage = "https://github.com/cheald/manticore".freeze
|
16
16
|
s.licenses = ["MIT".freeze]
|
17
|
+
s.required_ruby_version = Gem::Requirement.new(">= 2.3".freeze)
|
17
18
|
s.requirements = ["jar org.apache.httpcomponents:httpclient, '~> 4.5.0'".freeze, "jar org.apache.httpcomponents:httpmime, '~> 4.5.0'".freeze, "jar commons-logging:commons-logging, '~> 1.2'".freeze, "jar commons-codec:commons-codec, '~> 1.9'".freeze, "jar org.apache.httpcomponents:httpcore, '~> 4.4.4'".freeze]
|
18
19
|
s.rubygems_version = "2.7.10".freeze
|
19
20
|
s.summary = "Manticore is an HTTP client built on the Apache HttpCore components".freeze
|
@@ -25,19 +26,19 @@ Gem::Specification.new do |s|
|
|
25
26
|
|
26
27
|
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
27
28
|
s.add_runtime_dependency(%q<openssl_pkcs8_pure>.freeze, [">= 0"])
|
28
|
-
s.add_development_dependency(%q<bundler>.freeze, ["
|
29
|
+
s.add_development_dependency(%q<bundler>.freeze, [">= 0"])
|
29
30
|
s.add_development_dependency(%q<rake>.freeze, [">= 0"])
|
30
|
-
s.add_development_dependency(%q<jar-dependencies>.freeze, ["
|
31
|
+
s.add_development_dependency(%q<jar-dependencies>.freeze, ["~> 0.4.1"])
|
31
32
|
else
|
32
33
|
s.add_dependency(%q<openssl_pkcs8_pure>.freeze, [">= 0"])
|
33
|
-
s.add_dependency(%q<bundler>.freeze, ["
|
34
|
+
s.add_dependency(%q<bundler>.freeze, [">= 0"])
|
34
35
|
s.add_dependency(%q<rake>.freeze, [">= 0"])
|
35
|
-
s.add_dependency(%q<jar-dependencies>.freeze, ["
|
36
|
+
s.add_dependency(%q<jar-dependencies>.freeze, ["~> 0.4.1"])
|
36
37
|
end
|
37
38
|
else
|
38
39
|
s.add_dependency(%q<openssl_pkcs8_pure>.freeze, [">= 0"])
|
39
|
-
s.add_dependency(%q<bundler>.freeze, ["
|
40
|
+
s.add_dependency(%q<bundler>.freeze, [">= 0"])
|
40
41
|
s.add_dependency(%q<rake>.freeze, [">= 0"])
|
41
|
-
s.add_dependency(%q<jar-dependencies>.freeze, ["
|
42
|
+
s.add_dependency(%q<jar-dependencies>.freeze, ["~> 0.4.1"])
|
42
43
|
end
|
43
44
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: logstash-output-scalyr
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.25.beta
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Edward Chee
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-08-
|
11
|
+
date: 2021-08-30 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
requirement: !ruby/object:Gem::Requirement
|
@@ -179,7 +179,7 @@ files:
|
|
179
179
|
- vendor/bundle/jruby/2.5.0/cache/logstash-core-5.6.4-java.gem
|
180
180
|
- vendor/bundle/jruby/2.5.0/cache/logstash-core-plugin-api-2.1.28-java.gem
|
181
181
|
- vendor/bundle/jruby/2.5.0/cache/logstash-devutils-1.3.6-java.gem
|
182
|
-
- vendor/bundle/jruby/2.5.0/cache/manticore-0.
|
182
|
+
- vendor/bundle/jruby/2.5.0/cache/manticore-0.7.1-java.gem
|
183
183
|
- vendor/bundle/jruby/2.5.0/cache/method_source-0.8.2.gem
|
184
184
|
- vendor/bundle/jruby/2.5.0/cache/minitar-0.5.4.gem
|
185
185
|
- vendor/bundle/jruby/2.5.0/cache/multi_json-1.13.1.gem
|
@@ -2202,41 +2202,41 @@ files:
|
|
2202
2202
|
- vendor/bundle/jruby/2.5.0/gems/logstash-devutils-1.3.6-java/lib/logstash/devutils/rspec/shared_examples.rb
|
2203
2203
|
- vendor/bundle/jruby/2.5.0/gems/logstash-devutils-1.3.6-java/lib/logstash/devutils/rspec/spec_helper.rb
|
2204
2204
|
- vendor/bundle/jruby/2.5.0/gems/logstash-devutils-1.3.6-java/logstash-devutils.gemspec
|
2205
|
-
- vendor/bundle/jruby/2.5.0/gems/manticore-0.
|
2206
|
-
- vendor/bundle/jruby/2.5.0/gems/manticore-0.
|
2207
|
-
- vendor/bundle/jruby/2.5.0/gems/manticore-0.
|
2208
|
-
- vendor/bundle/jruby/2.5.0/gems/manticore-0.
|
2209
|
-
- vendor/bundle/jruby/2.5.0/gems/manticore-0.
|
2210
|
-
- vendor/bundle/jruby/2.5.0/gems/manticore-0.
|
2211
|
-
- vendor/bundle/jruby/2.5.0/gems/manticore-0.
|
2212
|
-
- vendor/bundle/jruby/2.5.0/gems/manticore-0.
|
2213
|
-
- vendor/bundle/jruby/2.5.0/gems/manticore-0.
|
2214
|
-
- vendor/bundle/jruby/2.5.0/gems/manticore-0.
|
2215
|
-
- vendor/bundle/jruby/2.5.0/gems/manticore-0.
|
2216
|
-
- vendor/bundle/jruby/2.5.0/gems/manticore-0.
|
2217
|
-
- vendor/bundle/jruby/2.5.0/gems/manticore-0.
|
2218
|
-
- vendor/bundle/jruby/2.5.0/gems/manticore-0.
|
2219
|
-
- vendor/bundle/jruby/2.5.0/gems/manticore-0.
|
2220
|
-
- vendor/bundle/jruby/2.5.0/gems/manticore-0.
|
2221
|
-
- vendor/bundle/jruby/2.5.0/gems/manticore-0.
|
2222
|
-
- vendor/bundle/jruby/2.5.0/gems/manticore-0.
|
2223
|
-
- vendor/bundle/jruby/2.5.0/gems/manticore-0.
|
2224
|
-
- vendor/bundle/jruby/2.5.0/gems/manticore-0.
|
2225
|
-
- vendor/bundle/jruby/2.5.0/gems/manticore-0.
|
2226
|
-
- vendor/bundle/jruby/2.5.0/gems/manticore-0.
|
2227
|
-
- vendor/bundle/jruby/2.5.0/gems/manticore-0.
|
2228
|
-
- vendor/bundle/jruby/2.5.0/gems/manticore-0.
|
2229
|
-
- vendor/bundle/jruby/2.5.0/gems/manticore-0.
|
2230
|
-
- vendor/bundle/jruby/2.5.0/gems/manticore-0.
|
2231
|
-
- vendor/bundle/jruby/2.5.0/gems/manticore-0.
|
2232
|
-
- vendor/bundle/jruby/2.5.0/gems/manticore-0.
|
2233
|
-
- vendor/bundle/jruby/2.5.0/gems/manticore-0.
|
2234
|
-
- vendor/bundle/jruby/2.5.0/gems/manticore-0.
|
2235
|
-
- vendor/bundle/jruby/2.5.0/gems/manticore-0.
|
2236
|
-
- vendor/bundle/jruby/2.5.0/gems/manticore-0.
|
2237
|
-
- vendor/bundle/jruby/2.5.0/gems/manticore-0.
|
2238
|
-
- vendor/bundle/jruby/2.5.0/gems/manticore-0.
|
2239
|
-
- vendor/bundle/jruby/2.5.0/gems/manticore-0.
|
2205
|
+
- vendor/bundle/jruby/2.5.0/gems/manticore-0.7.1-java/APACHE-LICENSE-2.0.txt
|
2206
|
+
- vendor/bundle/jruby/2.5.0/gems/manticore-0.7.1-java/CHANGELOG.md
|
2207
|
+
- vendor/bundle/jruby/2.5.0/gems/manticore-0.7.1-java/Gemfile
|
2208
|
+
- vendor/bundle/jruby/2.5.0/gems/manticore-0.7.1-java/LICENSE.txt
|
2209
|
+
- vendor/bundle/jruby/2.5.0/gems/manticore-0.7.1-java/README.md
|
2210
|
+
- vendor/bundle/jruby/2.5.0/gems/manticore-0.7.1-java/Rakefile
|
2211
|
+
- vendor/bundle/jruby/2.5.0/gems/manticore-0.7.1-java/ext/manticore/org/manticore/HttpDeleteWithEntity.java
|
2212
|
+
- vendor/bundle/jruby/2.5.0/gems/manticore-0.7.1-java/ext/manticore/org/manticore/HttpGetWithEntity.java
|
2213
|
+
- vendor/bundle/jruby/2.5.0/gems/manticore-0.7.1-java/ext/manticore/org/manticore/Manticore.java
|
2214
|
+
- vendor/bundle/jruby/2.5.0/gems/manticore-0.7.1-java/gem-public_cert.pem
|
2215
|
+
- vendor/bundle/jruby/2.5.0/gems/manticore-0.7.1-java/lib/commons-codec/commons-codec/1.10/commons-codec-1.10.jar
|
2216
|
+
- vendor/bundle/jruby/2.5.0/gems/manticore-0.7.1-java/lib/commons-logging/commons-logging/1.2/commons-logging-1.2.jar
|
2217
|
+
- vendor/bundle/jruby/2.5.0/gems/manticore-0.7.1-java/lib/faraday/adapter/manticore.rb
|
2218
|
+
- vendor/bundle/jruby/2.5.0/gems/manticore-0.7.1-java/lib/manticore.rb
|
2219
|
+
- vendor/bundle/jruby/2.5.0/gems/manticore-0.7.1-java/lib/manticore/client.rb
|
2220
|
+
- vendor/bundle/jruby/2.5.0/gems/manticore-0.7.1-java/lib/manticore/client/proxies.rb
|
2221
|
+
- vendor/bundle/jruby/2.5.0/gems/manticore-0.7.1-java/lib/manticore/cookie.rb
|
2222
|
+
- vendor/bundle/jruby/2.5.0/gems/manticore-0.7.1-java/lib/manticore/facade.rb
|
2223
|
+
- vendor/bundle/jruby/2.5.0/gems/manticore-0.7.1-java/lib/manticore/java_extensions.rb
|
2224
|
+
- vendor/bundle/jruby/2.5.0/gems/manticore-0.7.1-java/lib/manticore/response.rb
|
2225
|
+
- vendor/bundle/jruby/2.5.0/gems/manticore-0.7.1-java/lib/manticore/stubbed_response.rb
|
2226
|
+
- vendor/bundle/jruby/2.5.0/gems/manticore-0.7.1-java/lib/manticore/version.rb
|
2227
|
+
- vendor/bundle/jruby/2.5.0/gems/manticore-0.7.1-java/lib/manticore_jars.rb
|
2228
|
+
- vendor/bundle/jruby/2.5.0/gems/manticore-0.7.1-java/lib/org/apache/httpcomponents/httpclient/4.5.2/httpclient-4.5.2.jar
|
2229
|
+
- vendor/bundle/jruby/2.5.0/gems/manticore-0.7.1-java/lib/org/apache/httpcomponents/httpcore/4.4.4/httpcore-4.4.4.jar
|
2230
|
+
- vendor/bundle/jruby/2.5.0/gems/manticore-0.7.1-java/lib/org/apache/httpcomponents/httpmime/4.5.2/httpmime-4.5.2.jar
|
2231
|
+
- vendor/bundle/jruby/2.5.0/gems/manticore-0.7.1-java/lib/org/manticore/manticore-ext.jar
|
2232
|
+
- vendor/bundle/jruby/2.5.0/gems/manticore-0.7.1-java/manticore.gemspec
|
2233
|
+
- vendor/bundle/jruby/2.5.0/gems/manticore-0.7.1-java/spec/manticore/client_proxy_spec.rb
|
2234
|
+
- vendor/bundle/jruby/2.5.0/gems/manticore-0.7.1-java/spec/manticore/client_spec.rb
|
2235
|
+
- vendor/bundle/jruby/2.5.0/gems/manticore-0.7.1-java/spec/manticore/cookie_spec.rb
|
2236
|
+
- vendor/bundle/jruby/2.5.0/gems/manticore-0.7.1-java/spec/manticore/facade_spec.rb
|
2237
|
+
- vendor/bundle/jruby/2.5.0/gems/manticore-0.7.1-java/spec/manticore/response_spec.rb
|
2238
|
+
- vendor/bundle/jruby/2.5.0/gems/manticore-0.7.1-java/spec/manticore/stubbed_response_spec.rb
|
2239
|
+
- vendor/bundle/jruby/2.5.0/gems/manticore-0.7.1-java/spec/spec_helper.rb
|
2240
2240
|
- vendor/bundle/jruby/2.5.0/gems/method_source-0.8.2/Gemfile
|
2241
2241
|
- vendor/bundle/jruby/2.5.0/gems/method_source-0.8.2/LICENSE
|
2242
2242
|
- vendor/bundle/jruby/2.5.0/gems/method_source-0.8.2/README.markdown
|
@@ -4000,7 +4000,7 @@ files:
|
|
4000
4000
|
- vendor/bundle/jruby/2.5.0/specifications/logstash-core-5.6.4-java.gemspec
|
4001
4001
|
- vendor/bundle/jruby/2.5.0/specifications/logstash-core-plugin-api-2.1.28-java.gemspec
|
4002
4002
|
- vendor/bundle/jruby/2.5.0/specifications/logstash-devutils-1.3.6-java.gemspec
|
4003
|
-
- vendor/bundle/jruby/2.5.0/specifications/manticore-0.
|
4003
|
+
- vendor/bundle/jruby/2.5.0/specifications/manticore-0.7.1-java.gemspec
|
4004
4004
|
- vendor/bundle/jruby/2.5.0/specifications/method_source-0.8.2.gemspec
|
4005
4005
|
- vendor/bundle/jruby/2.5.0/specifications/minitar-0.5.4.gemspec
|
4006
4006
|
- vendor/bundle/jruby/2.5.0/specifications/multi_json-1.13.1.gemspec
|
Binary file
|