flydata 0.3.5 → 0.3.6
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/VERSION +1 -1
- data/bin/flydata +1 -0
- data/flydata-core/lib/flydata-core/core_ext/module.rb +1 -1
- data/flydata-core/lib/flydata-core/core_ext/object.rb +1 -1
- data/flydata.gemspec +21 -5
- data/lib/flydata.rb +5 -8
- data/lib/flydata/api/data_entry.rb +2 -0
- data/lib/flydata/api/data_port.rb +2 -0
- data/lib/flydata/api/redshift_cluster.rb +2 -0
- data/lib/flydata/api_client.rb +3 -0
- data/lib/flydata/cli.rb +13 -2
- data/lib/flydata/command/base.rb +6 -0
- data/lib/flydata/command/conf.rb +3 -0
- data/lib/flydata/command/crontab.rb +3 -0
- data/lib/flydata/command/encrypt.rb +3 -0
- data/lib/flydata/command/kill_all.rb +3 -0
- data/lib/flydata/command/login.rb +2 -0
- data/lib/flydata/command/restart.rb +3 -0
- data/lib/flydata/command/routine.rb +3 -0
- data/lib/flydata/command/sender.rb +2 -0
- data/lib/flydata/command/setlogdel.rb +4 -1
- data/lib/flydata/command/setup.rb +7 -2
- data/lib/flydata/command/start.rb +3 -0
- data/lib/flydata/command/status.rb +3 -0
- data/lib/flydata/command/stop.rb +3 -0
- data/lib/flydata/command/sync.rb +10 -3
- data/lib/flydata/command/version.rb +2 -0
- data/lib/flydata/{command_logger.rb → command_loggable.rb} +0 -0
- data/lib/flydata/compatibility_check.rb +1 -1
- data/lib/flydata/credentials.rb +2 -0
- data/lib/flydata/fluent-plugins/in_mysql_binlog_flydata.rb +8 -9
- data/lib/flydata/fluent-plugins/mysql/alter_table_query_handler.rb +1 -1
- data/lib/flydata/fluent-plugins/mysql/binlog_query_dispatcher.rb +1 -1
- data/lib/flydata/fluent-plugins/mysql/binlog_query_handler.rb +1 -1
- data/lib/flydata/fluent-plugins/mysql/binlog_record_dispatcher.rb +2 -2
- data/lib/flydata/fluent-plugins/mysql/binlog_record_handler.rb +1 -1
- data/lib/flydata/fluent-plugins/mysql/ddl_query_handler.rb +1 -1
- data/lib/flydata/fluent-plugins/mysql/dml_record_handler.rb +1 -1
- data/lib/flydata/helpers.rb +0 -10
- data/lib/flydata/heroku.rb +3 -0
- data/lib/flydata/output/forwarder.rb +1 -1
- data/lib/flydata/parser/mysql/dump_parser.rb +29 -31
- data/lib/flydata/sync_file_manager.rb +230 -232
- data/spec/fly_data_model_spec.rb +1 -0
- data/spec/flydata/api/data_entry_spec.rb +1 -0
- data/spec/flydata/api_client_spec.rb +18 -0
- data/spec/flydata/cli_spec.rb +1 -0
- data/spec/flydata/command/base_spec.rb +44 -0
- data/spec/flydata/command/conf_spec.rb +21 -0
- data/spec/flydata/command/crontab_spec.rb +17 -0
- data/spec/flydata/command/encrypt_spec.rb +28 -0
- data/spec/flydata/command/kill_all_spec.rb +17 -0
- data/spec/flydata/command/login_spec.rb +21 -0
- data/spec/flydata/command/restart_spec.rb +17 -0
- data/spec/flydata/command/routine_spec.rb +29 -0
- data/spec/flydata/command/sender_spec.rb +7 -2
- data/spec/flydata/command/setlogdel_spec.rb +18 -0
- data/spec/flydata/command/setup_spec.rb +44 -0
- data/spec/flydata/command/start_spec.rb +17 -0
- data/spec/flydata/command/status_spec.rb +17 -0
- data/spec/flydata/command/stop_spec.rb +17 -0
- data/spec/flydata/command/sync_spec.rb +1 -0
- data/spec/flydata/command/version_spec.rb +14 -0
- data/spec/flydata/fluent-plugins/in_mysql_binlog_flydata_spec.rb +1 -1
- data/spec/flydata/parser/mysql/dump_parser_spec.rb +23 -73
- data/spec/flydata/sync_file_manager_spec.rb +150 -152
- metadata +19 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2f947592ebedab5272b94129436953e9fac61c46
|
4
|
+
data.tar.gz: b676c7dd72b765244ef0b99d9cd44c584c0126c1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9ed77e0b82c8d0c2dbe3e2be510a0fe0b9f3d9bfef08788443b26085989cfaa566348e7537c393786b8d451a5d687dc3f5c9b32c7d8a9c45508f0f7d014099b3
|
7
|
+
data.tar.gz: d3073aba50dff2fbf45a613c5e64c15297bc65f380c284511acddd3af775cd33f8dbaf7acdaed023b2426c9459922b321482a2121968a53afb43ed060d680f57
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.3.
|
1
|
+
0.3.6
|
data/bin/flydata
CHANGED
@@ -1 +1 @@
|
|
1
|
-
|
1
|
+
require 'flydata-core/core_ext/module/include'
|
@@ -1 +1 @@
|
|
1
|
-
|
1
|
+
require 'flydata-core/core_ext/object/prepend'
|
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.3.6 ruby lib
|
5
6
|
|
6
7
|
Gem::Specification.new do |s|
|
7
8
|
s.name = "flydata"
|
8
|
-
s.version = "0.3.
|
9
|
+
s.version = "0.3.6"
|
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 = "2015-
|
14
|
+
s.date = "2015-03-04"
|
13
15
|
s.description = "FlyData Agent"
|
14
16
|
s.email = "sysadmin@flydata.com"
|
15
17
|
s.executables = ["fdmysqldump", "flydata", "serverinfo"]
|
@@ -89,7 +91,7 @@ Gem::Specification.new do |s|
|
|
89
91
|
"lib/flydata/command/stop.rb",
|
90
92
|
"lib/flydata/command/sync.rb",
|
91
93
|
"lib/flydata/command/version.rb",
|
92
|
-
"lib/flydata/
|
94
|
+
"lib/flydata/command_loggable.rb",
|
93
95
|
"lib/flydata/compatibility_check.rb",
|
94
96
|
"lib/flydata/credentials.rb",
|
95
97
|
"lib/flydata/cron.rb",
|
@@ -127,9 +129,24 @@ Gem::Specification.new do |s|
|
|
127
129
|
"spec/fluent_plugins_spec_helper.rb",
|
128
130
|
"spec/fly_data_model_spec.rb",
|
129
131
|
"spec/flydata/api/data_entry_spec.rb",
|
132
|
+
"spec/flydata/api_client_spec.rb",
|
130
133
|
"spec/flydata/cli_spec.rb",
|
134
|
+
"spec/flydata/command/base_spec.rb",
|
135
|
+
"spec/flydata/command/conf_spec.rb",
|
136
|
+
"spec/flydata/command/crontab_spec.rb",
|
137
|
+
"spec/flydata/command/encrypt_spec.rb",
|
138
|
+
"spec/flydata/command/kill_all_spec.rb",
|
139
|
+
"spec/flydata/command/login_spec.rb",
|
140
|
+
"spec/flydata/command/restart_spec.rb",
|
141
|
+
"spec/flydata/command/routine_spec.rb",
|
131
142
|
"spec/flydata/command/sender_spec.rb",
|
143
|
+
"spec/flydata/command/setlogdel_spec.rb",
|
144
|
+
"spec/flydata/command/setup_spec.rb",
|
145
|
+
"spec/flydata/command/start_spec.rb",
|
146
|
+
"spec/flydata/command/status_spec.rb",
|
147
|
+
"spec/flydata/command/stop_spec.rb",
|
132
148
|
"spec/flydata/command/sync_spec.rb",
|
149
|
+
"spec/flydata/command/version_spec.rb",
|
133
150
|
"spec/flydata/compatibility_check_spec.rb",
|
134
151
|
"spec/flydata/fluent-plugins/idle_event_detector_spec.rb",
|
135
152
|
"spec/flydata/fluent-plugins/in_mysql_binlog_flydata_spec.rb",
|
@@ -150,8 +167,7 @@ Gem::Specification.new do |s|
|
|
150
167
|
]
|
151
168
|
s.homepage = "http://flydata.com/"
|
152
169
|
s.licenses = ["All right reserved."]
|
153
|
-
s.
|
154
|
-
s.rubygems_version = "2.0.14"
|
170
|
+
s.rubygems_version = "2.4.3"
|
155
171
|
s.summary = "FlyData Agent"
|
156
172
|
|
157
173
|
if s.respond_to? :specification_version then
|
data/lib/flydata.rb
CHANGED
@@ -1,25 +1,22 @@
|
|
1
1
|
# load_path settings
|
2
2
|
def append_load_path_if_not_exist(new_lib_path)
|
3
|
-
|
4
|
-
$LOAD_PATH.unshift
|
3
|
+
expanded_path = File.expand_path(new_lib_path)
|
4
|
+
$LOAD_PATH.unshift expanded_path unless $LOAD_PATH.include? expanded_path
|
5
5
|
end
|
6
|
-
flydata_top_dir = File.
|
6
|
+
flydata_top_dir = File.expand_path('../../', __FILE__)
|
7
7
|
flydata_core_dir = File.join(flydata_top_dir, 'flydata-core')
|
8
|
-
flydata_core_lib_dir = File.
|
8
|
+
flydata_core_lib_dir = File.expand_path('lib', flydata_core_dir)
|
9
9
|
append_load_path_if_not_exist(flydata_core_lib_dir)
|
10
10
|
|
11
11
|
# require common libs
|
12
12
|
require 'active_support/core_ext/string'
|
13
|
-
require 'active_support/dependencies'
|
14
13
|
require 'active_support/time'
|
15
14
|
require 'highline/import'
|
16
15
|
require 'readline'
|
17
16
|
require 'json'
|
18
17
|
require 'pp'
|
19
18
|
|
20
|
-
|
21
|
-
lib_dir = File.absolute_path(File.dirname(__FILE__))
|
22
|
-
ActiveSupport::Dependencies.autoload_paths << lib_dir
|
19
|
+
require 'flydata/heroku'
|
23
20
|
|
24
21
|
module Flydata
|
25
22
|
FLYDATA_DEBUG = !!(ENV['FLYDATA_DEBUG'])
|
data/lib/flydata/api_client.rb
CHANGED
@@ -1,5 +1,7 @@
|
|
1
1
|
require 'rest_client'
|
2
2
|
require 'singleton'
|
3
|
+
require 'flydata/credentials'
|
4
|
+
require 'flydata/helpers'
|
3
5
|
|
4
6
|
module Flydata
|
5
7
|
FLYDATA_API_HOST = ENV['FLYDATA_API_HOST'] || 'https://flydata.co'
|
@@ -39,6 +41,7 @@ module Flydata
|
|
39
41
|
# high level api
|
40
42
|
def method_missing(cls_name, *args, &block)
|
41
43
|
method_name = args.shift.to_s
|
44
|
+
require File.join("flydata/api", cls_name.to_s)
|
42
45
|
api_cls = "Flydata::Api::#{cls_name.to_s.camelize}".constantize
|
43
46
|
api_cls.new(self)
|
44
47
|
end
|
data/lib/flydata/cli.rb
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
require 'slop'
|
2
|
-
|
3
|
-
|
2
|
+
require 'flydata/command_loggable'
|
3
|
+
require 'flydata/errors'
|
4
|
+
require 'flydata/helpers'
|
4
5
|
|
5
6
|
module Flydata
|
6
7
|
class Cli
|
@@ -29,6 +30,7 @@ module Flydata
|
|
29
30
|
first_arg = @args.shift
|
30
31
|
cmd, sub_cmd = parse_command(first_arg)
|
31
32
|
begin
|
33
|
+
require_command_source(cmd)
|
32
34
|
cmd_cls = "Flydata::Command::#{cmd.capitalize}".constantize
|
33
35
|
rescue NameError
|
34
36
|
# NameError is raised when the constant is not defined in its target
|
@@ -66,5 +68,14 @@ module Flydata
|
|
66
68
|
def parse_command(cmd)
|
67
69
|
cmd.split(':')
|
68
70
|
end
|
71
|
+
COMMAND_DIR = 'flydata/command'
|
72
|
+
def require_command_source(cmd)
|
73
|
+
source_path = File.join(COMMAND_DIR, cmd)
|
74
|
+
begin
|
75
|
+
require source_path
|
76
|
+
rescue LoadError
|
77
|
+
# ignore
|
78
|
+
end
|
79
|
+
end
|
69
80
|
end
|
70
81
|
end
|
data/lib/flydata/command/base.rb
CHANGED
@@ -1,5 +1,8 @@
|
|
1
1
|
require 'slop'
|
2
2
|
require 'flydata/api_client'
|
3
|
+
require 'flydata/command_loggable'
|
4
|
+
require 'flydata/preference/data_entry_preference'
|
5
|
+
|
3
6
|
|
4
7
|
module Flydata
|
5
8
|
module Command
|
@@ -22,6 +25,7 @@ module Flydata
|
|
22
25
|
if Flydata::Preference::DataEntryPreference.conf_exists?(de)
|
23
26
|
Flydata::Preference::DataEntryPreference.load_conf(de)
|
24
27
|
else
|
28
|
+
Flydata::Preference::DataEntryPreference.filter_data_entry(de)
|
25
29
|
de
|
26
30
|
end
|
27
31
|
end
|
@@ -29,6 +33,8 @@ module Flydata
|
|
29
33
|
def register_crontab
|
30
34
|
data_entries = retrieve_data_entries
|
31
35
|
if data_entries.any?{|e| e['log_deletion']}
|
36
|
+
# require on demand to avoid mutual require issue
|
37
|
+
require 'flydata/command/crontab'
|
32
38
|
Flydata::Command::Crontab.new.run
|
33
39
|
end
|
34
40
|
end
|
data/lib/flydata/command/conf.rb
CHANGED
@@ -1,3 +1,6 @@
|
|
1
|
+
require 'flydata/command/base'
|
2
|
+
require 'flydata/command/login'
|
3
|
+
|
1
4
|
module Flydata
|
2
5
|
module Command
|
3
6
|
class Setlogdel < Base
|
@@ -16,7 +19,7 @@ module Flydata
|
|
16
19
|
data_entries = retrieve_data_entries
|
17
20
|
if data_entries.size < 1
|
18
21
|
puts("There are no registered entries.")
|
19
|
-
puts("You need to create a data entry
|
22
|
+
puts("You need to create a data entry with flydata setup command.")
|
20
23
|
return nil
|
21
24
|
end
|
22
25
|
choices = data_entries.map {|e|
|
@@ -1,4 +1,9 @@
|
|
1
|
-
|
1
|
+
require 'flydata/command/base'
|
2
|
+
require 'flydata/command/conf'
|
3
|
+
require 'flydata/command/login'
|
4
|
+
require 'flydata/command/sender'
|
5
|
+
require 'flydata/helpers'
|
6
|
+
require 'flydata/sync_file_manager'
|
2
7
|
|
3
8
|
module Flydata
|
4
9
|
module Command
|
@@ -92,7 +97,7 @@ What's next?
|
|
92
97
|
true
|
93
98
|
elsif has_registered_redshift_mysql_data_entries?
|
94
99
|
de = retrieve_data_entries.first
|
95
|
-
if File.exists?(Flydata::
|
100
|
+
if File.exists?(Flydata::SyncFileManager.new(de).binlog_path)
|
96
101
|
sender = Flydata::Command::Sender.new
|
97
102
|
if sender.process_exist?
|
98
103
|
sender.stop(quiet: true)
|
data/lib/flydata/command/stop.rb
CHANGED
data/lib/flydata/command/sync.rb
CHANGED
@@ -2,11 +2,18 @@ require 'fiber'
|
|
2
2
|
require 'msgpack'
|
3
3
|
require 'open3'
|
4
4
|
require 'mysql2'
|
5
|
+
require 'rest_client'
|
5
6
|
require 'sys/filesystem'
|
6
|
-
require 'flydata/
|
7
|
+
require 'flydata/command/base'
|
8
|
+
require 'flydata/command/conf'
|
9
|
+
require 'flydata/command/sender'
|
7
10
|
require 'flydata/compatibility_check'
|
11
|
+
require 'flydata/errors'
|
12
|
+
require 'flydata/helpers'
|
8
13
|
require 'flydata/output/forwarder'
|
9
14
|
require 'flydata/parser/mysql/dump_parser'
|
15
|
+
require 'flydata/preference/data_entry_preference'
|
16
|
+
require 'flydata/sync_file_manager'
|
10
17
|
require 'flydata/util/mysql_util'
|
11
18
|
require 'flydata-core/table_def'
|
12
19
|
#require 'ruby-prof'
|
@@ -603,7 +610,7 @@ EOM
|
|
603
610
|
start_time = Time.now
|
604
611
|
log_info_stdout("Waiting for the server buffer to get empty.")
|
605
612
|
prev_message =nil
|
606
|
-
while (status = check_server_status(tables)) && (status['state'] == 'processing')
|
613
|
+
while (status = check_server_status(tables)) && (status['state'].nil? || status['state'] == 'processing')
|
607
614
|
prev_message = status['message']
|
608
615
|
if timeout > 0 && Time.now - start_time > timeout
|
609
616
|
raise ServerDataProcessingTimeout.new
|
@@ -815,7 +822,7 @@ Thank you for using FlyData!
|
|
815
822
|
end
|
816
823
|
|
817
824
|
def create_sync_file_manager(de = data_entry)
|
818
|
-
|
825
|
+
SyncFileManager.new(de)
|
819
826
|
end
|
820
827
|
|
821
828
|
def verify_input_tables(input_tables, all_tables)
|
File without changes
|
data/lib/flydata/credentials.rb
CHANGED
@@ -5,18 +5,17 @@ require 'binlog'
|
|
5
5
|
require 'kodama'
|
6
6
|
|
7
7
|
# Load client library(flydata/cli/lib)
|
8
|
-
lib = File.
|
8
|
+
lib = File.expand_path(File.dirname(__FILE__), '/../..')
|
9
9
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
10
10
|
require 'flydata'
|
11
11
|
require 'flydata/sync_file_manager'
|
12
12
|
require 'flydata/util/mysql_util'
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
require_relative 'mysql/table_meta'
|
13
|
+
require 'flydata/fluent-plugins/preference'
|
14
|
+
require 'flydata/fluent-plugins/mysql/binlog_position_file'
|
15
|
+
require 'flydata/fluent-plugins/mysql/binlog_record_dispatcher'
|
16
|
+
require 'flydata/fluent-plugins/mysql/context'
|
17
|
+
require 'flydata/fluent-plugins/idle_event_detector'
|
18
|
+
require 'flydata/fluent-plugins/mysql/table_meta'
|
20
19
|
|
21
20
|
#Monkey-patch fluentd class (EngineClass) to support shutdown for input plugin.
|
22
21
|
#This will be called when USR1 signal is received
|
@@ -73,7 +72,7 @@ class MysqlBinlogFlydataInput < MysqlBinlogInput
|
|
73
72
|
@tables << table unless @tables.include?(table)
|
74
73
|
@omit_events[table] = [:delete]
|
75
74
|
end
|
76
|
-
@sync_fm = Flydata::
|
75
|
+
@sync_fm = Flydata::SyncFileManager.new(nil) # Passing nil for data_entry as this class does not use methods which require data_entry
|
77
76
|
|
78
77
|
#Remove tables that do not have pos files
|
79
78
|
new_tables = @sync_fm.get_new_table_list(@tables, "pos")
|