@@ -19,9 +19,11 @@ class LogStash::Outputs::JSONBatch < LogStash::Outputs::Base
1919  # format is `headers => ["X-My-Header", "%{host}"]` 
2020  config  :headers ,  :validate  =>  :hash 
2121
22-   config  :flush_size ,  :validate  =>  :number 
22+   config  :flush_size ,  :validate  =>  :number ,   :default   =>   50 
2323
24-   config  :idle_flush_time ,  :validate  =>  :number 
24+   config  :idle_flush_time ,  :validate  =>  :number ,  :default  =>  5 
25+ 
26+   config  :retry_individual ,  :validate  =>  :boolean ,  :default  =>  false 
2527
2628  def  register 
2729    # Handle this deprecated option. TODO: remove the option 
@@ -41,6 +43,13 @@ def register
4143      :max_interval  =>  @idle_flush_time , 
4244      :logger  =>  @logger 
4345    ) 
46+     logger . info ( "Initialized json_batch with settings" ,  
47+       :flush_size  =>  @flush_size , 
48+       :idle_flush_time  =>  @idle_flush_time , 
49+       :request_tokens  =>  @pool_max , 
50+       :url  =>  @url , 
51+       :headers  =>  request_headers , 
52+       :retry_individual  =>  @retry_individual ) 
4453
4554  end  # def register 
4655
@@ -67,6 +76,8 @@ def make_request(documents, count)
6776    # Block waiting for a token 
6877    token  =  @request_tokens . pop 
6978
79+ 
80+ 
7081    # Create an async request 
7182    begin 
7283      request  =  client . send ( :post ,  @url ,  :body  =>  body ,  :headers  =>  request_headers ,  :async  =>  true ) 
@@ -87,14 +98,22 @@ def make_request(documents, count)
8798
8899    request . on_success  do  |response |
89100      #string = "Some "+ Time.new.inspect + " " + response 
90-       #puts "%s status code returned for %s docs @ %s\n" % [response.code, documents.length, Time.new.inspect]  
101+       # 
91102      if  response . code  < 200  || response . code  > 299 
92103        log_failure ( 
93-           "Encountered non-200 HTTP code #{ 200 }  , 
94-           :response_code  =>  response . code , 
95-           :url  =>  url , 
96-           :response_body  =>  response . body , 
97-           :num_docs  =>  documents . length ) 
104+             "Encountered non-200 HTTP code #{ response . code }  , 
105+             :response_code  =>  response . code , 
106+             :url  =>  url , 
107+             :response_body  =>  response . body , 
108+             :num_docs  =>  documents . length , 
109+             :retry_individual  =>  @retry_individual ) 
110+         if  documents . length  > 1  && @retry_individual 
111+           documents . each  do  |doc | 
112+             make_request ( [ doc ] ,  0 ) 
113+           end 
114+         else  
115+           puts  "%s status code returned for %s docs @ %s\n "  % [ response . code ,  body ,  Time . new . inspect ] 
116+         end 
98117      end 
99118    end 
100119
0 commit comments