flydata 0.2.24 → 0.2.25

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
  SHA1:
3
- metadata.gz: c6418100e744a1d2e8b56aa267859c01fd27b320
4
- data.tar.gz: 49d47ce3f12d3a0128cb2facb1d6a1da96dcd0c7
3
+ metadata.gz: 950ac222e77c45b7dfb9a65f2921d612d78d0a56
4
+ data.tar.gz: 50e414cced803f9a3ebf279ebef5c5b0409607b6
5
5
  SHA512:
6
- metadata.gz: 1a63f2132dd06a44904d4ddacf305466466f498c2823da2ff5b84b2054ee28745f4627be3484bd82c723304f0ccf5408b16ba6da0d0841b34691287ab7d2e2b1
7
- data.tar.gz: 604b769fda44673787567480d1075bb4913886389bb8a641642de37d0de16d7e17ae58b98f8058f786dbc33ad099d2b81f04e65af4e2b29a4d18828db3954a6c
6
+ metadata.gz: c9ead00fb45d5f022632e7e59d9b128e9c44b7878e85c6a9796aae0b77e9f5d41bcb83812ef5c32058a1372d5c87be5dc6e9febe4d6416d7e81e2ba8564c2dc3
7
+ data.tar.gz: f1f36e0bb8354c5580e8be6df19f7f2bf4c23714420b28d9a0a74cd84d9d83dbc692c371503db66376dd42825d9ddab9ff505490f63169d11af818cb59f3b613
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.2.24
1
+ 0.2.25
data/flydata.gemspec CHANGED
@@ -2,14 +2,16 @@
2
2
  # DO NOT EDIT THIS FILE DIRECTLY
3
3
  # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
4
  # -*- encoding: utf-8 -*-
5
+ # stub: flydata 0.2.25 ruby lib
5
6
 
6
7
  Gem::Specification.new do |s|
7
8
  s.name = "flydata"
8
- s.version = "0.2.24"
9
+ s.version = "0.2.25"
9
10
 
10
11
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
12
+ s.require_paths = ["lib"]
11
13
  s.authors = ["Koichi Fujikawa", "Masashi Miyazaki", "Matthew Luu", "Mak Inada", "Sriram NS"]
12
- s.date = "2014-12-18"
14
+ s.date = "2014-12-21"
13
15
  s.description = "FlyData Agent"
14
16
  s.email = "sysadmin@flydata.com"
15
17
  s.executables = ["fdmysqldump", "flydata", "serverinfo"]
@@ -143,8 +145,7 @@ Gem::Specification.new do |s|
143
145
  ]
144
146
  s.homepage = "http://flydata.com/"
145
147
  s.licenses = ["All right reserved."]
146
- s.require_paths = ["lib"]
147
- s.rubygems_version = "2.0.14"
148
+ s.rubygems_version = "2.2.2"
148
149
  s.summary = "FlyData Agent"
149
150
 
150
151
  if s.respond_to? :specification_version then
@@ -92,6 +92,7 @@ module Flydata
92
92
  delete_files.flatten.each do |path|
93
93
  FileUtils.rm(path) if File.exists?(path)
94
94
  end
95
+ sync_fm.close
95
96
  log_info_stdout("Reset completed successfully.")
96
97
  end
97
98
 
@@ -142,6 +143,7 @@ module Flydata
142
143
  de = retrieve_data_entry
143
144
  sync_fm = Flydata::FileUtil::SyncFileManager.new(de)
144
145
  binlog_path = sync_fm.binlog_path
146
+ sync_fm.close
145
147
  `touch #{binlog_path}`
146
148
  log_info_stdout("Created an empty binlog position file.")
147
149
  log_info_stdout("-> #{binlog_path}")
@@ -169,6 +171,7 @@ module Flydata
169
171
  sync_fm = Flydata::FileUtil::SyncFileManager.new(de)
170
172
  dump_pos_info = sync_fm.load_dump_pos
171
173
  fp = sync_fm.dump_file_path
174
+ sync_fm.close
172
175
 
173
176
  # status is parsing but dumpfile doesn't exist due to streaming -> raise error
174
177
  if dump_pos_info[:status] == STATUS_PARSING && !File.exists?(fp)
@@ -297,6 +300,7 @@ module Flydata
297
300
  parse_mysqldump_and_send(mysqldump_io, dp, de, sync_fm, db_bytesize)
298
301
  end
299
302
  wait_for_mysqldump_processed(dp, de, sync_fm)
303
+ sync_fm.close
300
304
  complete
301
305
  end
302
306
 
@@ -553,6 +557,7 @@ Thank you for using FlyData!
553
557
  else
554
558
  raise "Initial sync status is not complete. Try running 'flydata sync'."
555
559
  end
560
+ sync_fm.close
556
561
  end
557
562
 
558
563
  def generate_json(mysql_table, values)
@@ -578,6 +583,7 @@ Thank you for using FlyData!
578
583
  mp['initial_sync'] = rs[:initial_sync]
579
584
  mp['tables'] = rs[:tables]
580
585
  end
586
+ sync_fm.close
581
587
  de
582
588
  end
583
589
 
@@ -72,7 +72,7 @@ class MysqlBinlogFlydataInput < MysqlBinlogInput
72
72
  @tables << table unless @tables.include?(table)
73
73
  @omit_events[table] = [:delete]
74
74
  end
75
- sync_fm = Flydata::FileUtil::SyncFileManager.new(nil) # Passing nil for data_entry as this class does not use methods which require data_entry
75
+ @sync_fm = Flydata::FileUtil::SyncFileManager.new(nil) # Passing nil for data_entry as this class does not use methods which require data_entry
76
76
 
77
77
  table_meta = Mysql::TableMeta.new(
78
78
  mysql_url: mysql_url, database: @database, tables: @tables)
@@ -80,7 +80,7 @@ class MysqlBinlogFlydataInput < MysqlBinlogInput
80
80
 
81
81
  @context = Mysql::Context.new(
82
82
  database: @database, tables: @tables,
83
- tag: @tag, sync_fm: sync_fm, omit_events: @omit_events,
83
+ tag: @tag, sync_fm: @sync_fm, omit_events: @omit_events,
84
84
  table_meta: table_meta,
85
85
  )
86
86
  @record_dispatcher = Mysql::FlydataBinlogRecordDispatcher.new(@context)
@@ -169,6 +169,7 @@ EOS
169
169
  $log.error "Unable to stop Kodama"
170
170
  end
171
171
  end
172
+ @sync_fm.close
172
173
  end
173
174
 
174
175
  def wait_till_safe_to_stop
@@ -6,6 +6,12 @@ module Flydata
6
6
  TABLE_POSITIONS_DIR = ENV['FLYDATA_TABLE_POSITIONS'] || File.join(FLYDATA_HOME, 'positions')
7
7
  def initialize(data_entry)
8
8
  @data_entry = data_entry
9
+ @table_position_files = {} # File objects keyed by table name
10
+ end
11
+
12
+ def close
13
+ @table_position_files.values.each {|f| f.close }
14
+ @table_position_files = {}
9
15
  end
10
16
 
11
17
  def dump_file_path
@@ -81,14 +87,7 @@ module Flydata
81
87
  file = File.join(table_positions_dir_path, table_name + ".pos")
82
88
  retry_count = 0
83
89
  begin
84
- File.open(file, "r+") do |f|
85
- seq = f.read
86
- seq = seq.to_i + 1
87
- yield(seq)
88
- f.rewind
89
- f.truncate(0)
90
- f.write(seq)
91
- end
90
+ @table_position_files[table_name] ||= File.open(file, "r+")
92
91
  rescue Errno::ENOENT
93
92
  raise if retry_count > 0 # Already retried. Must be a differentfile causing the error
94
93
  # File not exist. Create one with initial value of '0'
@@ -96,6 +95,15 @@ module Flydata
96
95
  retry_count += 1
97
96
  retry
98
97
  end
98
+ f = @table_position_files[table_name]
99
+ seq = f.read
100
+ seq = seq.to_i + 1
101
+ yield(seq)
102
+ f.rewind
103
+ f.truncate(0)
104
+ f.write(seq)
105
+ f.flush
106
+ f.rewind
99
107
  end
100
108
 
101
109
  def sync_info_file
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: flydata
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.24
4
+ version: 0.2.25
5
5
  platform: ruby
6
6
  authors:
7
7
  - Koichi Fujikawa
@@ -12,7 +12,7 @@ authors:
12
12
  autorequire:
13
13
  bindir: bin
14
14
  cert_chain: []
15
- date: 2014-12-18 00:00:00.000000000 Z
15
+ date: 2014-12-21 00:00:00.000000000 Z
16
16
  dependencies:
17
17
  - !ruby/object:Gem::Dependency
18
18
  name: rest-client
@@ -565,7 +565,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
565
565
  version: '0'
566
566
  requirements: []
567
567
  rubyforge_project:
568
- rubygems_version: 2.0.14
568
+ rubygems_version: 2.2.2
569
569
  signing_key:
570
570
  specification_version: 4
571
571
  summary: FlyData Agent