flydata 0.8.6 → 0.8.7
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 +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
|