flydata 0.8.6 → 0.8.7
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/flydata-core/lib/flydata-core/mysql/compatibility_checker.rb +2 -2
- data/flydata.gemspec +0 -0
- data/lib/flydata/command/sync.rb +30 -9
- data/spec/flydata/api/data_entry_spec.rb +8 -8
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 86638a18d82f42ee50003d03780a5e9a62b3d82a
|
4
|
+
data.tar.gz: a6d911a12d67f294d1cb855e293a0add77f99a92
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a97793d37523ba2319529941ff8661445b64836038bfa179e453800c45b18f4a91103174e0cc479d8ea821feb42e084f6098392ce7b9667b8d9d90e41f68f466
|
7
|
+
data.tar.gz: 94c736d7dd868e197c96ea39404e04c3f466ab8bd07ae5370872d3a11a34f77be1adcf1027df83cf272789476b451089fee682d7781fcef5b5388ad8016756fe
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.8.
|
1
|
+
0.8.7
|
@@ -365,13 +365,13 @@ EOT
|
|
365
365
|
def check_result(result, option = @option)
|
366
366
|
if result.first["name"] == "binlog retention hours"
|
367
367
|
if result.first["value"].nil? ||
|
368
|
-
result.first["value"].to_i
|
368
|
+
result.first["value"].to_i < BINLOG_RETENTION_HOURS
|
369
369
|
raise FlydataCore::MysqlCompatibilityError,
|
370
370
|
"Binary log retention is too short\n" +
|
371
371
|
" We recommend setting RDS binlog retention " +
|
372
372
|
"to be at least #{BINLOG_RETENTION_HOURS} hours. To do this, " +
|
373
373
|
"run this on your RDS MySQL database:\n" +
|
374
|
-
" $> call mysql.rds_set_configuration('binlog retention hours',
|
374
|
+
" $> call mysql.rds_set_configuration('binlog retention hours', #{BINLOG_RETENTION_HOURS});"
|
375
375
|
end
|
376
376
|
end
|
377
377
|
end
|
data/flydata.gemspec
CHANGED
Binary file
|
data/lib/flydata/command/sync.rb
CHANGED
@@ -434,6 +434,8 @@ EOS
|
|
434
434
|
JSON.generate(h)
|
435
435
|
end
|
436
436
|
|
437
|
+
MAX_STOP_RETRIES = 5
|
438
|
+
STOP_RETRY_INTERVAL = 10
|
437
439
|
def _check(source_pos_context, options = {})
|
438
440
|
options[:stop_agent] ||= false
|
439
441
|
|
@@ -445,15 +447,34 @@ EOS
|
|
445
447
|
data_stuck_at = nil
|
446
448
|
abnormal_shutdown = false
|
447
449
|
begin
|
448
|
-
|
449
|
-
|
450
|
-
|
451
|
-
|
452
|
-
|
453
|
-
|
454
|
-
|
455
|
-
|
456
|
-
|
450
|
+
retry_count = 0
|
451
|
+
loop do
|
452
|
+
begin
|
453
|
+
# wait until no data gets processed for 3 minutes. This is long
|
454
|
+
# to wait, but there *are* cases where active data processing takes
|
455
|
+
# more than 3 minutes between 2 chunk processing if COPY command
|
456
|
+
# takes minutes to process.
|
457
|
+
flush_buffer_and_stop(@full_tables, force: false, timeout: 180,
|
458
|
+
dont_wait_upload: true)
|
459
|
+
rescue ServerDataProcessingTimeout => e
|
460
|
+
data_stuck_at = e.state
|
461
|
+
end
|
462
|
+
|
463
|
+
# #flush_buffer_and_stop should have stopped the agent process but
|
464
|
+
# double-check because running repair (which calls _check) while
|
465
|
+
# agent is running causes a devestating result which requires full resync.
|
466
|
+
if sender.process_exist?
|
467
|
+
if retry_count > MAX_STOP_RETRIES
|
468
|
+
raise "agent did not stop after several stop attempts. stop the agent and try again."
|
469
|
+
else
|
470
|
+
retry_count += 1
|
471
|
+
$log.warn "agent did not stop. will try again (#{retry_count})"
|
472
|
+
sleep STOP_RETRY_INTERVAL
|
473
|
+
end
|
474
|
+
else
|
475
|
+
$log.info "confirmed no agent process running. Start check"
|
476
|
+
break
|
477
|
+
end
|
457
478
|
end
|
458
479
|
|
459
480
|
# Agent is stopped but locked. There was an abnormal shutdown.
|
@@ -175,10 +175,10 @@ describe DataEntry do
|
|
175
175
|
end
|
176
176
|
end
|
177
177
|
end
|
178
|
-
context "with more than
|
179
|
-
let(:tables) {
|
180
|
-
let(:expected_tables1) { tables[0...
|
181
|
-
let(:expected_tables2) { tables[
|
178
|
+
context "with more than 20 tables" do
|
179
|
+
let(:tables) { 30.times.collect{|i| "tbl#{i}"} }
|
180
|
+
let(:expected_tables1) { tables[0...20].join(",") }
|
181
|
+
let(:expected_tables2) { tables[20..-1].join(",") }
|
182
182
|
|
183
183
|
let(:expected_message) { double('expected_message') }
|
184
184
|
|
@@ -318,10 +318,10 @@ describe DataEntry do
|
|
318
318
|
let(:status21) { double('status21') }
|
319
319
|
let(:status22) { double('status22') }
|
320
320
|
|
321
|
-
context "with more than
|
322
|
-
let(:tables) {
|
323
|
-
let(:expected_tables1) { tables[0...
|
324
|
-
let(:expected_tables2) { tables[
|
321
|
+
context "with more than 20 tables" do
|
322
|
+
let(:tables) { 30.times.collect {|i| "tbl#{i}"} }
|
323
|
+
let(:expected_tables1) { tables[0...20].join(",") }
|
324
|
+
let(:expected_tables2) { tables[20..-1].join(",") }
|
325
325
|
|
326
326
|
it do
|
327
327
|
expect(api_client).to receive(:post).
|
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.8.
|
4
|
+
version: 0.8.7
|
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: 2017-03-
|
15
|
+
date: 2017-03-24 00:00:00.000000000 Z
|
16
16
|
dependencies:
|
17
17
|
- !ruby/object:Gem::Dependency
|
18
18
|
name: rest-client
|