fluent-plugin-mysql-appender 0.4.0 → 0.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: b9ddfe2a87e411ef8fa452336cee72c661081f86
4
- data.tar.gz: 0eec5b99563117150a8a320d551abfe65335d994
3
+ metadata.gz: 05ca7cbe8c0b8975c51ba14c2e9f34dcb5e8125c
4
+ data.tar.gz: 2bff063d49ccb630916f3d515410e93307eec2e3
5
5
  SHA512:
6
- metadata.gz: 1bb26d2dca219aa6993d71810aa8efcbe1abd285c24b75a57bbff0424c33c6883b9b1822a388d6382d6cef2a2dfa4d7e6802e5b0525dd545a2df68b1d54a832f
7
- data.tar.gz: 6e7f1b8b446786df1941ca8eb435c3e26ec4c23d8f3c5179416fcb7080c9327c3b2e7fb880863be34207326eeb6b4f43214b8cfdfeb41ed5c2e95e8c52098872
6
+ metadata.gz: 05c5048cd4aed2b09bea444c224dc92e5816ff611d4f5d335c6573e08599d4186ee762043f4a1db0d33096b2335a6f2903c53d29977933e170e264f798c538ae
7
+ data.tar.gz: 72f2b0388fa398595de8463626fbd67c6058e0522c1d8b437a0f92f3a27aa22e56cb9b7c684f91e3efb267a6bb5747e1f63fc131106670a6115670efea97a104
@@ -1,7 +1,7 @@
1
1
  # coding: utf-8
2
2
  Gem::Specification.new do |spec|
3
3
  spec.name = "fluent-plugin-mysql-appender"
4
- spec.version = "0.4.0"
4
+ spec.version = "0.4.1"
5
5
  spec.authors = ["TERASAKI Tsuyoshi"]
6
6
  spec.email = ["tsuyoshi_terasaki@realworld.jp"]
7
7
 
@@ -17,6 +17,8 @@ Gem::Specification.new do |spec|
17
17
 
18
18
  spec.add_runtime_dependency "fluentd"
19
19
  spec.add_runtime_dependency "mysql2"
20
+ spec.add_runtime_dependency "td"
21
+ spec.add_runtime_dependency "td-client"
20
22
 
21
23
  spec.add_development_dependency "rake"
22
24
  spec.add_development_dependency "test-unit"
@@ -11,6 +11,8 @@ module Fluent
11
11
  require 'mysql2'
12
12
  require 'time'
13
13
  require 'yaml'
14
+ require 'td'
15
+ require 'td-client'
14
16
  super
15
17
  end
16
18
 
@@ -71,7 +73,7 @@ module Fluent
71
73
  $log.info "mysql_replicator_multi: polling start. :tag=>#{tag} :delay=>#{delay}"
72
74
  }
73
75
  con = get_connection()
74
- last_id = config['last_id']
76
+ last_id = get_lastid(config)
75
77
  loop do
76
78
  rows_count = 0
77
79
  start_time = Time.now
@@ -107,6 +109,44 @@ module Fluent
107
109
  end
108
110
  end
109
111
 
112
+ def get_lastid(config)
113
+ begin
114
+ if !ENV.key?('TD_APIKEY') || !ENV.key?('TD_ENDPOINT') then
115
+ return -1
116
+ end
117
+ cln = TreasureData::Client.new(ENV['TD_APIKEY'],{:endpoint => "https://" + ENV['TD_ENDPOINT']})
118
+ table_exists = false
119
+ cln.databases.each { |db|
120
+ db.tables.each { |tbl|
121
+ if tbl.db_name == config['td_database'] && tbl.table_name == config['table_name'] then
122
+ table_exists = true
123
+ break
124
+ end
125
+ }
126
+ }
127
+ if table_exists then
128
+ query = "SELECT MAX(#{config['primary_key']}) FROM #{config['table_name']}"
129
+ job = cln.query(config['td_database'], query, nil, nil, nil , {:type => :presto})
130
+ until job.finished?
131
+ sleep 2
132
+ job.update_progress!
133
+ end
134
+ job.update_status! # get latest info
135
+ job.result_each { |row|
136
+ $log.info "mysql_replicator_multi: #{config['td_database']}.#{config['table_name']}'s last_id is #{row.first} "
137
+ return row.first
138
+ }
139
+ else
140
+ $log.info "mysql_replicator_multi: #{config['td_database']}.#{config['table_name']} is not found. "
141
+ return -1
142
+ end
143
+ rescue => e
144
+ $log.warn "mysql_appender_multi: failed to get lastid. #{config}"
145
+ $log.error "error: #{e.message}"
146
+ $log.error e.backtrace.join("\n")
147
+ end
148
+ end
149
+
110
150
  def get_query(config, last_id)
111
151
  "SELECT #{config['columns'].join(",")} FROM #{config['table_name']} where #{config['primary_key']} > #{last_id} order by #{config['primary_key']} asc limit #{config['limit']}"
112
152
  end
@@ -141,7 +181,7 @@ module Fluent
141
181
  :stream => true,
142
182
  :cache_rows => false
143
183
  })
144
- rescue Exception => e
184
+ rescue Mysql2::Error => e
145
185
  $log.warn "mysql_appender_multi: #{e}"
146
186
  sleep @interval
147
187
  retry
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fluent-plugin-mysql-appender
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.0
4
+ version: 0.4.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - TERASAKI Tsuyoshi
@@ -38,6 +38,34 @@ dependencies:
38
38
  - - ">="
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: td
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: td-client
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
41
69
  - !ruby/object:Gem::Dependency
42
70
  name: rake
43
71
  requirement: !ruby/object:Gem::Requirement