Skip to content

Commit cb332d2

Browse files
andrewvcjordansissel
authored andcommitted
Implement plugin stop behavior
Fixes #4
1 parent 2e35b63 commit cb332d2

File tree

3 files changed

+16
-2
lines changed

3 files changed

+16
-2
lines changed

lib/logstash/inputs/sqlite.rb

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22
require "logstash/inputs/base"
33
require "logstash/namespace"
44
require "socket"
5+
require "stud/interval"
6+
require "concurrent"
57

68

79
# Read rows from an sqlite database.
@@ -146,7 +148,7 @@ def run(queue)
146148

147149
begin
148150
@logger.debug("Tailing sqlite db", :path => @path)
149-
loop do
151+
until stop?
150152
count = 0
151153
@table_data.each do |k, table|
152154
table_name = table[:name]
@@ -174,7 +176,8 @@ def run(queue)
174176
# sleep a bit
175177
@logger.debug("No new rows. Sleeping.", :time => sleeptime)
176178
sleeptime = [sleeptime * 2, sleep_max].min
177-
sleep(sleeptime)
179+
180+
Stud.stoppable_sleep(sleeptime) { stop? }
178181
else
179182
sleeptime = sleep_min
180183
end

logstash-input-sqlite.gemspec

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,5 +26,6 @@ Gem::Specification.new do |s|
2626
s.add_runtime_dependency 'jdbc-sqlite3'
2727

2828
s.add_development_dependency 'logstash-devutils'
29+
s.add_development_dependency 'logstash-codec-plain'
2930
end
3031

spec/inputs/sqlite_spec.rb

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,11 @@
1+
# encoding: utf-8
12
require "logstash/devutils/rspec/spec_helper"
3+
require "logstash/inputs/sqlite"
4+
require "logstash/codecs/plain"
5+
6+
describe LogStash::Inputs::Sqlite do
7+
describe "stopping" do
8+
let(:config) { {"path" => "testdb.sqlite3"} }
9+
it_behaves_like "an interruptible input plugin"
10+
end
11+
end

0 commit comments

Comments
 (0)