logstash-output-s3 4.1.6 → 4.1.7

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 665d6f24ed0b60daf348fd01d8c14c73202d29c5157ac6573f2e25a09b5d399f
4
- data.tar.gz: 333762370a25d28b0d1d462bd694fd085fd4f9f4d0eb1210515614fd4cb1f436
3
+ metadata.gz: 2d0273662b68bd9801f7320aa01736ad40539ca29a4d5f895a6245f4cf7b9542
4
+ data.tar.gz: 676f7a10a587bc64fe4e2229f3ab79e60f807636ce9bcf2c80ecb2b91ff97ded
5
5
  SHA512:
6
- metadata.gz: 4df3d4272c7804e0028db46017c00d1f126301f39351897c86ed4a269bc072fc511c897949bfed39eaa1afc2a1ff37f2c66d62407644cbc872f6427e41972a23
7
- data.tar.gz: 5c6945f1bea2feb1411b4ee9a7e5b20892c035ae3b77d7ea7891d956d11c4e664910b5bfa9ea4d20cf1d379b968ef91cc75b0b13b513c7660542fddb3e1de5a0
6
+ metadata.gz: 010f9bd2d079f32077df912cfc0d333208d8a2f76ba4ee0ac341c0f3b84c94aabe3faa9ca76eca3f9998a50e1c772fbfead9ce9b453caa511901817ca89332e0
7
+ data.tar.gz: 8cd6b94465ba40e5b771ffaf33abf052fcac3da1ba82614e73cd8fb74292c07b53497b2b607d849fbbf7590225f36f43972e5ad98c9a8d93217c0480d7bc7db2
@@ -1,3 +1,6 @@
1
+ ## 4.1.7
2
+ - Fixed issue where on restart, 0 byte files could erroneously be uploaded to s3 [#195](https://github.com/logstash-plugins/logstash-output-s3/issues/195)
3
+
1
4
  ## 4.1.6
2
5
  - Fixed leak of file handles that prevented temporary files from being cleaned up before pipeline restart [#190](https://github.com/logstash-plugins/logstash-output-s3/issues/190)
3
6
 
data/Gemfile CHANGED
@@ -9,3 +9,7 @@ if Dir.exist?(logstash_path) && use_logstash_source
9
9
  gem 'logstash-core', :path => "#{logstash_path}/logstash-core"
10
10
  gem 'logstash-core-plugin-api', :path => "#{logstash_path}/logstash-core-plugin-api"
11
11
  end
12
+
13
+ if RUBY_VERSION == "1.9.3"
14
+ gem 'rake', '12.2.1'
15
+ end
@@ -385,8 +385,12 @@ class LogStash::Outputs::S3 < LogStash::Outputs::Base
385
385
  .select { |file| ::File.file?(file) }
386
386
  .each do |file|
387
387
  temp_file = TemporaryFile.create_from_existing_file(file, temp_folder_path)
388
- @logger.debug("Recovering from crash and uploading", :file => temp_file.path)
389
- @crash_uploader.upload_async(temp_file, :on_complete => method(:clean_temporary_file), :upload_options => upload_options)
388
+ if temp_file.size > 0
389
+ @logger.debug("Recovering from crash and uploading", :file => temp_file.path)
390
+ @crash_uploader.upload_async(temp_file, :on_complete => method(:clean_temporary_file), :upload_options => upload_options)
391
+ else
392
+ clean_temporary_file(temp_file)
393
+ end
390
394
  end
391
395
  end
392
396
  end
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = 'logstash-output-s3'
3
- s.version = '4.1.6'
3
+ s.version = '4.1.7'
4
4
  s.licenses = ['Apache-2.0']
5
5
  s.summary = "Sends Logstash events to the Amazon Simple Storage Service"
6
6
  s.description = "This gem is a Logstash plugin required to be installed on top of the Logstash core pipeline using $LS_HOME/bin/logstash-plugin install gemname. This gem is not a stand-alone program"
@@ -11,29 +11,56 @@ describe "Restore from crash", :integration => true do
11
11
 
12
12
  let(:number_of_files) { 5 }
13
13
  let(:dummy_content) { "foobar\n" * 100 }
14
+ let(:factory) { LogStash::Outputs::S3::TemporaryFileFactory.new(prefix, tags, "none", temporary_directory)}
14
15
 
15
16
  before do
16
17
  clean_remote_files(prefix)
17
- # Use the S3 factory to create mutliples files with dummy content
18
- factory = LogStash::Outputs::S3::TemporaryFileFactory.new(prefix, tags, "none", temporary_directory)
18
+ end
19
19
 
20
- # Creating a factory always create a file
21
- factory.current.write(dummy_content)
22
- factory.current.fsync
23
20
 
24
- (number_of_files - 1).times do
25
- factory.rotate!
21
+ context 'with a non-empty tempfile' do
22
+ before do
23
+ # Creating a factory always create a file
26
24
  factory.current.write(dummy_content)
27
25
  factory.current.fsync
26
+
27
+ (number_of_files - 1).times do
28
+ factory.rotate!
29
+ factory.current.write(dummy_content)
30
+ factory.current.fsync
31
+ end
32
+ end
33
+ it "uploads the file to the bucket" do
34
+ subject.register
35
+ try(20) do
36
+ expect(bucket_resource.objects(:prefix => prefix).count).to eq(number_of_files)
37
+ expect(Dir.glob(File.join(temporary_directory, "*")).size).to eq(0)
38
+ expect(bucket_resource.objects(:prefix => prefix).first.acl.grants.collect(&:permission)).to include("READ", "WRITE")
39
+ end
28
40
  end
29
41
  end
30
42
 
31
- it "uploads the file to the bucket" do
32
- subject.register
33
- try(20) do
34
- expect(bucket_resource.objects(:prefix => prefix).count).to eq(number_of_files)
35
- expect(Dir.glob(File.join(temporary_directory, "*")).size).to eq(0)
36
- expect(bucket_resource.objects(:prefix => prefix).first.acl.grants.collect(&:permission)).to include("READ", "WRITE")
43
+ context 'with an empty tempfile' do
44
+ before do
45
+ factory.current
46
+ factory.rotate!
47
+ end
48
+
49
+ it "should remove the temporary file" do
50
+ expect(Dir.glob(::File.join(temporary_directory, "**", "*")).size).to be > 0
51
+ subject.register
52
+ puts Dir.glob(::File.join(temporary_directory, "**", "*"))
53
+ expect(Dir.glob(::File.join(temporary_directory, "**", "*")).size).to eq(0)
54
+ end
55
+
56
+ it "should not upload the file to the bucket" do
57
+ expect(bucket_resource.objects(:prefix => prefix).count).to eq(0)
58
+ expect(Dir.glob(::File.join(temporary_directory, "**", "*")).size).to be > 0
59
+ subject.register
60
+
61
+ # Sleep to give enough time for plugin upload to s3 if it attempts to upload empty temporary file to S3
62
+ sleep 5
63
+ expect(bucket_resource.objects(:prefix => prefix).count).to eq(0)
37
64
  end
38
65
  end
39
66
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: logstash-output-s3
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.1.6
4
+ version: 4.1.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Elastic
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-09-25 00:00:00.000000000 Z
11
+ date: 2018-10-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  requirement: !ruby/object:Gem::Requirement