fluent-plugin-mongo 0.6.6 → 0.6.7

Sign up to get free protection for your applications and to get access to all the features.
data/ChangeLog ADDED
@@ -0,0 +1,108 @@
1
+
2
+ Release 0.6.6 - 2012/03/01
3
+
4
+ * Update mongo gem 1.5.2 -> 1.6.0 or later
5
+ * Move buffer_chunk_limit checking from configure to start
6
+
7
+
8
+ Release 0.6.5 - 2012/02/27
9
+
10
+ * fix "mongo_replset unexpectedly requires 'host' in configuration"
11
+ https://github.com/fluent/fluent-plugin-mongo/issues/9
12
+
13
+
14
+ Release 0.6.4 - 2012/02/16
15
+
16
+ * Add 'disable_collection_check' parameter
17
+ * Fix mongod_version bug
18
+
19
+
20
+ Release 0.6.3 - 2012/02/08
21
+
22
+ * Add authentication support to input / output plugins
23
+ https://github.com/fluent/fluent-plugin-mongo/pull/8
24
+
25
+
26
+ Release 0.6.2 - 2012/01/23
27
+
28
+ * Add :safe to Connection#new options
29
+ https://github.com/fluent/fluent-plugin-mongo/issues/7
30
+ * out_mongo_tag_collection renamed to out_mongo_tag_mapped
31
+
32
+
33
+ Release 0.6.1 - 2012/01/17
34
+
35
+ * Add mongo_replset explanation to README
36
+
37
+
38
+ Release 0.6.0 - 2012/01/16
39
+
40
+ * Add mongo_replset for Replica Set
41
+ * out_mongo_tag_collection merged into out_mongo.
42
+ Please use tag_mapped mode.
43
+ * Support invalid documets handling
44
+
45
+
46
+ Release 0.5.3 - 2011/12/20
47
+
48
+ * Fix "use format time argument when record to mongodb"
49
+ https://github.com/fluent/fluent-plugin-mongo/pull/6
50
+
51
+
52
+ Release 0.5.2 - 2011/11/29
53
+
54
+ * Fix mongod_version
55
+ * Fix "configure of ouput plugins raises an exception when mongod is down"
56
+ https://github.com/fluent/fluent-plugin-mongo/issues/4
57
+
58
+
59
+ Release 0.5.1 - 2011/11/26
60
+
61
+ * Fix typo
62
+
63
+
64
+ Release 0.5.0 - 2011/11/26
65
+
66
+ * Jeweler to Bundler
67
+ * Add in_mongo_tail
68
+ * Add out_mongo_tag_collection
69
+ * Add default 'collection' configuration to mongo_tag_collection
70
+ * Update the version of dependency modules
71
+ * Fix "MongoDB and Ruby-Driver have a size limit of insert operation."
72
+ https://github.com/fluent/fluent-plugin-mongo/issues/3
73
+
74
+
75
+ Release 0.4.0 - 2011/10/16
76
+
77
+ * Support fluentd 0.10.1
78
+ * Add out_mongo.rb test
79
+
80
+
81
+ Release 0.3.1 - 2011/10/05
82
+
83
+ * Add mongo-tail tool
84
+ https://github.com/fluent/fluent-plugin-mongo/issues/1
85
+
86
+
87
+ Release 0.3.0 - 2011/10/03
88
+
89
+ * Add mongo_backup
90
+
91
+
92
+ Release 0.2.1 - 2011/10/02
93
+
94
+ * Fix mongo dependency
95
+ * Fix typo
96
+ * Fix configuration parsing
97
+ * Replace MongoBuffer with MongoOutput's <store>
98
+ * Fix duplicated insert to backup
99
+
100
+
101
+ Release 0.2.0 - 2011/09/28
102
+
103
+ * MongoOutput becomes BufferedOutput
104
+
105
+
106
+ Release 0.1.0 - 2011/09/28
107
+
108
+ * Add out_mongo
data/README.rdoc CHANGED
@@ -146,7 +146,7 @@ Use _mongo_tail_ type in source.
146
146
 
147
147
  Fluentd event sometimes has an invalid record as a BSON.
148
148
  In such case, Mongo plugin marshals an invalid record using Marshal.dump
149
- and re-inserts its to same collection.
149
+ and re-inserts its to same collection as a binary.
150
150
 
151
151
  If passed following invalid record:
152
152
 
@@ -154,11 +154,18 @@ If passed following invalid record:
154
154
 
155
155
  then Mongo plugin converts this record to following format:
156
156
 
157
- {"__broken_data": Marshal.dump result of {"key1": "invalid value", "key2": "valid value"}, "time": ISODate("2012-01-15T21:09:53Z") }
157
+ {"__broken_data": BinData(0, Marshal.dump result of {"key1": "invalid value", "key2": "valid value"}), "time": ISODate("2012-01-15T21:09:53Z") }
158
158
 
159
159
  Mongo-Ruby-Driver cannot detect an invalid attribute,
160
160
  so Mongo plugin marshals all attributes excluding Fluentd keys("tag_key" and "time_key").
161
161
 
162
+ You can deserialize broken data using Mongo and Marshal.load. Sample code is below:
163
+
164
+ # _collection_ is an instance of Mongo::Collection
165
+ collection.find({'__broken_data' => {'$exists' => true}}).each do |doc|
166
+ p Marshal.load(doc['__broken_data'].to_s) #=> {"key1": "invalid value", "key2": "valid value"}
167
+ end
168
+
162
169
  If you want to ignore an invalid record, set _true_ to _ignore_invalid_record_ parameter in match.
163
170
 
164
171
  <match forward.*>
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.6.6
1
+ 0.6.7
@@ -18,7 +18,7 @@ class MongoOutput < BufferedOutput
18
18
  config_param :host, :string, :default => 'localhost'
19
19
  config_param :port, :integer, :default => 27017
20
20
  config_param :ignore_invalid_record, :bool, :default => false
21
- config_param :disable_collection_check, :bool, :default => false
21
+ config_param :disable_collection_check, :bool, :default => nil
22
22
  config_param :safe, :bool, :default => true
23
23
 
24
24
  # tag mapping mode
@@ -40,7 +40,12 @@ class MongoOutput < BufferedOutput
40
40
  def configure(conf)
41
41
  super
42
42
 
43
- @tag_mapped = true if conf.has_key?('tag_mapped')
43
+ if conf.has_key?('tag_mapped')
44
+ @tag_mapped = true
45
+ @disable_collection_check = true if @disable_collection_check.nil?
46
+ else
47
+ @disable_collection_check = false if @disable_collection_check.nil?
48
+ end
44
49
  raise ConfigError, "normal mode requires collection parameter" if !@tag_mapped and !conf.has_key?('collection')
45
50
 
46
51
  if remove_tag_prefix = conf['remove_tag_prefix']
@@ -128,7 +133,7 @@ class MongoOutput < BufferedOutput
128
133
  new_record = {}
129
134
  new_record[@tag_key] = record.delete(@tag_key) if @include_tag_key
130
135
  new_record[@time_key] = record.delete(@time_key)
131
- new_record[BROKEN_DATA_KEY] = Marshal.dump(record) # Should use BSON::ByteBuffer
136
+ new_record[BROKEN_DATA_KEY] = BSON::Binary.new(Marshal.dump(record))
132
137
  new_record
133
138
  }
134
139
  collection.insert(converted_records) # Should create another collection like name_broken?
@@ -158,11 +163,12 @@ class MongoOutput < BufferedOutput
158
163
  return @clients[collection_name] if @clients[collection_name]
159
164
 
160
165
  @db ||= get_connection
161
- if @db.collection_names.include?(collection_name) and !@disable_collection_check
166
+ if @db.collection_names.include?(collection_name)
162
167
  collection = @db.collection(collection_name)
163
- unless @collection_options[:capped] == collection.capped? # TODO: Verify capped configuration
164
- # raise Exception if old collection does not match lastest configuration
165
- raise ConfigError, "New configuration is different from existing collection"
168
+ unless @disable_collection_check
169
+ unless @collection_options[:capped] == collection.capped? # TODO: Verify capped configuration
170
+ raise ConfigError, "New configuration is different from existing collection"
171
+ end
166
172
  end
167
173
  else
168
174
  collection = @db.create_collection(collection_name, @collection_options)
@@ -54,7 +54,10 @@ class MongoOutputTest < Test::Unit::TestCase
54
54
  assert_equal('fluenter', d.instance.host)
55
55
  assert_equal(27018, d.instance.port)
56
56
  assert_equal({:capped => true, :size => 100}, d.instance.collection_options)
57
- assert_equal(Fluent::MongoOutput::LIMIT_BEFORE_v1_8, d.instance.instance_variable_get(:@buffer).buffer_chunk_limit)
57
+ assert_equal(33554432, d.instance.instance_variable_get(:@buffer).buffer_chunk_limit)
58
+ # buffer_chunk_limit moved from configure to start
59
+ # I will move this test to correct space after BufferedOutputTestDriver supports start method invoking
60
+ # assert_equal(Fluent::MongoOutput::LIMIT_BEFORE_v1_8, d.instance.instance_variable_get(:@buffer).buffer_chunk_limit)
58
61
  end
59
62
 
60
63
  def test_format
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fluent-plugin-mongo
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.6
4
+ version: 0.6.7
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-03-01 00:00:00.000000000Z
12
+ date: 2012-03-30 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: fluentd
16
- requirement: &2152542640 !ruby/object:Gem::Requirement
16
+ requirement: &2153123160 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: 0.10.7
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *2152542640
24
+ version_requirements: *2153123160
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: mongo
27
- requirement: &2152542020 !ruby/object:Gem::Requirement
27
+ requirement: &2153105660 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: 1.6.0
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *2152542020
35
+ version_requirements: *2153105660
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: rake
38
- requirement: &2152541400 !ruby/object:Gem::Requirement
38
+ requirement: &2153104360 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: 0.9.2
44
44
  type: :development
45
45
  prerelease: false
46
- version_requirements: *2152541400
46
+ version_requirements: *2153104360
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: simplecov
49
- requirement: &2152540780 !ruby/object:Gem::Requirement
49
+ requirement: &2153103260 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ! '>='
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: 0.5.4
55
55
  type: :development
56
56
  prerelease: false
57
- version_requirements: *2152540780
57
+ version_requirements: *2153103260
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: rr
60
- requirement: &2152539800 !ruby/object:Gem::Requirement
60
+ requirement: &2153102160 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ! '>='
@@ -65,7 +65,7 @@ dependencies:
65
65
  version: 1.0.0
66
66
  type: :development
67
67
  prerelease: false
68
- version_requirements: *2152539800
68
+ version_requirements: *2153102160
69
69
  description: MongoDB plugin for Fluent event collector
70
70
  email: repeatedly@gmail.com
71
71
  executables:
@@ -77,6 +77,7 @@ files:
77
77
  - .gitmodules
78
78
  - .travis.yml
79
79
  - AUTHORS
80
+ - ChangeLog
80
81
  - Gemfile
81
82
  - README.rdoc
82
83
  - Rakefile
@@ -107,7 +108,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
107
108
  version: '0'
108
109
  segments:
109
110
  - 0
110
- hash: -1733988723759885390
111
+ hash: 3355529483381375280
111
112
  required_rubygems_version: !ruby/object:Gem::Requirement
112
113
  none: false
113
114
  requirements:
@@ -116,7 +117,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
116
117
  version: '0'
117
118
  segments:
118
119
  - 0
119
- hash: -1733988723759885390
120
+ hash: 3355529483381375280
120
121
  requirements: []
121
122
  rubyforge_project:
122
123
  rubygems_version: 1.8.10