myreplicator 1.1.41 → 1.1.42

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.
@@ -25,7 +25,9 @@ class CreateMyreplicatorExports < ActiveRecord::Migration
25
25
  t.datetime :transfer_finished_at, :default => nil
26
26
  t.timestamps
27
27
  t.boolean :analyze_constraints, :default => false
28
- t.boolean :night_refresh, :default => false
28
+ t.boolean :nightly_refresh, :default => false
29
+ t.integer :nightly_refresh_frequency, :default => nil
30
+ t.datetime :nightly_refresh_last_run, :default => nil
29
31
  end
30
32
  add_index :myreplicator_exports, [:source_schema, :destination_schema, :table_name], :unique => true, :name => "unique_index"
31
33
  end
data/lib/loader/loader.rb CHANGED
@@ -18,10 +18,27 @@ module Myreplicator
18
18
  # Main method provided for resque
19
19
  # Reconnection provided for resque workers
20
20
  ##
21
- def self.perform
22
- ActiveRecord::Base.verify_active_connections!
23
- ActiveRecord::Base.connection.reconnect!
24
- load # Kick off the load process
21
+ def self.perform *args
22
+ options = args.extract_options!
23
+ id = options[:id]
24
+ if id.blank?
25
+ ActiveRecord::Base.verify_active_connections!
26
+ ActiveRecord::Base.connection.reconnect!
27
+ load # Kick off the load process
28
+ else
29
+ ActiveRecord::Base.verify_active_connections!
30
+ ActiveRecord::Base.connection.reconnect!
31
+ load_id(id)
32
+ end
33
+ end
34
+
35
+ ##
36
+ # Running loader for 1 export object
37
+ ##
38
+ def load_id id
39
+
40
+ #Resque.enqueue(Myreplicator::Loader, id)
41
+ #Resque.enqueue(Myreplicator::Export,342)
25
42
  end
26
43
 
27
44
  ##
@@ -135,6 +135,7 @@ module Myreplicator
135
135
  :export_id => options[:export_id],
136
136
  :filepath => options[:filepath]
137
137
  }
138
+ exp = Myreplicator::Export.find(metadata.export_id)
138
139
  if schema_check[:new]
139
140
  create_table(ops)
140
141
  #LOAD DATA IN
@@ -148,14 +149,23 @@ module Myreplicator
148
149
  Loader.cleanup metadata #Remove incremental file
149
150
  Kernel.p "===== Remove incremental file ====="
150
151
  end
152
+ elsif exp.nightly_refresh && (exp.nightly_refresh_frequency != 0)
153
+ if (Time.now() - Time.parse(exp.nightly_refresh_last_run)) >= exp.nightly_refresh_frequency.minute
154
+ Loader.clear_older_files metadata # clear old incremental files
155
+ exp.nightly_refresh_last_run = Time.now().change(:min => 0)
156
+ exp.save!
157
+ sql = "TRUNCATE TABLE #{options[:db]}.#{options[:destination_schema]}.#{options[:table_name]};"
158
+ Myreplicator::DB.exec_sql("vertica",sql)
159
+ # run the export. The next time loader runs, it will load the file
160
+ exp.export
161
+ end
151
162
  elsif get_analyze_constraints(ops) > 0 # check for primary key/unique keys violations
152
- exp = Export.find(metadata.export_id)
153
163
  Kernel.p "===== DROP CURRENT TABLE ====="
154
164
  sql = "DROP TABLE IF EXISTS #{options[:db]}.#{options[:destination_schema]}.#{options[:table_name]} CASCADE;"
155
165
  Myreplicator::DB.exec_sql("vertica",sql)
156
166
  # run the export. The next time loader runs, it will load the file
157
167
  exp.export
158
- else
168
+ else # incremental load
159
169
  temp_table = create_temp_table ops
160
170
  options[:table] = temp_table
161
171
  Kernel.p "===== COPY TO TEMP TABLE #{temp_table} ====="
@@ -1,3 +1,3 @@
1
1
  module Myreplicator
2
- VERSION = "1.1.41"
2
+ VERSION = "1.1.42"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: myreplicator
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.41
4
+ version: 1.1.42
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: 2013-05-24 00:00:00.000000000 Z
12
+ date: 2013-05-29 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rails
@@ -298,7 +298,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
298
298
  version: '0'
299
299
  segments:
300
300
  - 0
301
- hash: 2623750824110033889
301
+ hash: -3185513387659635905
302
302
  required_rubygems_version: !ruby/object:Gem::Requirement
303
303
  none: false
304
304
  requirements:
@@ -307,7 +307,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
307
307
  version: '0'
308
308
  segments:
309
309
  - 0
310
- hash: 2623750824110033889
310
+ hash: -3185513387659635905
311
311
  requirements: []
312
312
  rubyforge_project:
313
313
  rubygems_version: 1.8.24