fluent-plugin-mysql-replicator 0.5.0 → 0.5.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,7 +1,7 @@
1
1
  # -*- encoding: utf-8 -*-
2
2
  Gem::Specification.new do |s|
3
3
  s.name = "fluent-plugin-mysql-replicator"
4
- s.version = "0.5.0"
4
+ s.version = "0.5.1"
5
5
  s.authors = ["Kentaro Yoshida"]
6
6
  s.email = ["y.ken.studio@gmail.com"]
7
7
  s.homepage = "https://github.com/y-ken/fluent-plugin-mysql-replicator"
@@ -58,27 +58,31 @@ module Fluent
58
58
  def poll
59
59
  table_hash = Hash.new
60
60
  ids = Array.new
61
+ con = get_connection()
62
+ prepared_con = get_connection()
61
63
  loop do
62
64
  rows_count = 0
63
65
  start_time = Time.now
64
66
  previous_ids = ids
65
67
  current_ids = Array.new
66
- prepared_con = get_connection()
67
68
  if !@prepared_query.nil?
68
69
  @prepared_query.split(/;/).each do |query|
69
70
  prepared_con.query(query)
70
71
  end
71
72
  end
72
- query(@query).each do |row|
73
+ rows, con = query(@query, con)
74
+ rows.each do |row|
73
75
  current_ids << row[@primary_key]
74
76
  current_hash = Digest::SHA1.hexdigest(row.flatten.join)
75
77
  row.each {|k, v| row[k] = v.to_s if v.is_a?(Time) || v.is_a?(Date) || v.is_a?(BigDecimal)}
76
78
  row.select {|k, v| v.to_s.strip.match(/^SELECT/i) }.each do |k, v|
77
79
  row[k] = [] unless row[k].is_a?(Array)
78
- prepared_con.query(v.gsub(/\$\{([^\}]+)\}/, row[$1].to_s)).each do |nest_row|
80
+ nest_rows, prepared_con = query(v.gsub(/\$\{([^\}]+)\}/, row[$1].to_s), prepared_con)
81
+ nest_rows.each do |nest_row|
79
82
  nest_row.each {|k, v| nest_row[k] = v.to_s if v.is_a?(Time) || v.is_a?(Date) || v.is_a?(BigDecimal)}
80
83
  row[k] << nest_row
81
84
  end
85
+ prepared_con.close
82
86
  end
83
87
  if row[@primary_key].nil?
84
88
  $log.error "mysql_replicator: missing primary_key. :tag=>#{tag} :primary_key=>#{primary_key}"
@@ -94,6 +98,7 @@ module Fluent
94
98
  table_hash[row[@primary_key]] = current_hash
95
99
  rows_count += 1
96
100
  end
101
+ con.close
97
102
  ids = current_ids
98
103
  if @enable_delete
99
104
  if previous_ids.empty?
@@ -133,8 +138,9 @@ module Fluent
133
138
 
134
139
  def query(query, con = nil)
135
140
  begin
136
- mysql = get_connection if con.nil?
137
- return mysql.query(query)
141
+ con = con.nil? ? get_connection : con
142
+ con = con.ping ? con : get_connection
143
+ return con.query(query), con
138
144
  rescue Exception => e
139
145
  $log.warn "mysql_replicator: #{e}"
140
146
  sleep @interval
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fluent-plugin-mysql-replicator
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.0
4
+ version: 0.5.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2015-09-16 00:00:00.000000000 Z
12
+ date: 2015-11-09 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rake