lib/fluent/plugin/out_mongo.rb in fluent-plugin-mongo-1.4.0 vs lib/fluent/plugin/out_mongo.rb in fluent-plugin-mongo-1.4.1
- old
+ new
@@ -47,10 +47,13 @@
config_param :tag_mapped, :bool, default: false,
deprecated: "use '${tag}' placeholder in collection parameter."
desc "Remove tag prefix"
config_param :remove_tag_prefix, :string, default: nil,
deprecated: "use @label instead for event routing."
+ # expire indexes
+ desc "Specify expire after seconds"
+ config_param :expire_after, :time, default: 0
# SSL connection
config_param :ssl, :bool, default: false
config_param :ssl_cert, :string, default: nil
config_param :ssl_key, :string, default: nil
@@ -119,14 +122,10 @@
if @connection_string.nil? && @database.nil?
raise Fluent::ConfigError, "connection_string or database parameter is required"
end
- unless @ignore_invalid_record
- log.warn "Since v0.8, invalid record detection will be removed because mongo driver v2.x and API spec don't provide it. You may lose invalid records, so you should not send such records to mongo plugin"
- end
-
if conf.has_key?('tag_mapped')
log.warn "'tag_mapped' feature is replaced with built-in config placeholder. Please consider to use 'collection ${tag}'."
@collection = '${tag}'
end
raise Fluent::ConfigError, "normal mode requires collection parameter" if !@tag_mapped and !conf.has_key?('collection')
@@ -272,9 +271,16 @@
return @client[name] if @collections[name]
unless collection_exists?(name)
log.trace "Create collection #{name} with options #{options}"
@client[name, options].create
+ if @expire_after > 0 && @inject_config
+ log.trace "Create expiring index with key: \"#{@inject_config.time_key}\" and seconds: \"#{@expire_after}\""
+ @client[name].indexes.create_one(
+ {"#{@inject_config.time_key}": 1},
+ expire_after: @expire_after
+ )
+ end
end
@collections[name] = true
@client[name]
end