myreplicator 1.0.5 → 1.0.6

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,7 @@ module Myreplicator
25
25
  :pid => Process.pid,
26
26
  :hostname => Socket.gethostname,
27
27
  :guid => SecureRandom.hex(5),
28
- :thread_state => Thread.current.status,
28
+ :thread_state => Thread.current.to_s,
29
29
  :state => "new")
30
30
 
31
31
  log = Log.create options
@@ -45,7 +45,6 @@ module Myreplicator
45
45
 
46
46
  ensure
47
47
  log.finished_at = Time.now
48
- log.thread_state = Thread.current.status
49
48
  log.save!
50
49
  end
51
50
  end
@@ -1,3 +1,3 @@
1
1
  module Myreplicator
2
- VERSION = "1.0.5"
2
+ VERSION = "1.0.6"
3
3
  end
@@ -34,8 +34,10 @@ module Myreplicator
34
34
  while @queue.size > 0
35
35
  if @threads.size <= @max_threads
36
36
  @threads << Thread.new(@queue.pop) do |proc|
37
+ Thread.current[:thread_state] = "running"
37
38
  @klass.new.instance_exec(proc[:params], &proc[:block])
38
- end
39
+ Thread.current[:thread_state] = "done"
40
+ end
39
41
  else
40
42
  unless @manager_running
41
43
  reaper = manage_threads
@@ -63,7 +65,9 @@ module Myreplicator
63
65
  while(@threads.size > 0)
64
66
  done = []
65
67
  @threads.each do |t|
66
- done << t if t.stop?
68
+ done << t if t[:thread_state] == "done" || !t.status
69
+ # puts t.object_id.to_s + "--" + t.status.to_s + "--" + t.to_s
70
+ # raise "Nil Thread State" if t[:thread_state].nil?
67
71
  end
68
72
  done.each{|d| @threads.delete(d)} # Clear dead threads
69
73
 
@@ -72,6 +76,7 @@ module Myreplicator
72
76
  if done?
73
77
  @done = true
74
78
  else
79
+ puts "Sleeping for 2"
75
80
  sleep 2 # Wait for more threads to spawn
76
81
  end
77
82
 
@@ -51,20 +51,19 @@ module Myreplicator
51
51
  # Kicks off parallel download
52
52
  ##
53
53
  def self.download export
54
- ssh = export.ssh_to_source
55
- parallel_download(export, ssh, completed_files(ssh, export))
54
+ parallel_download(export, completed_files(export))
56
55
  end
57
56
 
58
57
  ##
59
58
  # Gathers all files that need to be downloaded
60
59
  # Gives the queue to parallelizer library to download in parallel
61
60
  ##
62
- def self.parallel_download export, ssh, files
61
+ def self.parallel_download export, files
63
62
  p = Parallelizer.new(:klass => "Myreplicator::Transporter")
64
63
 
65
64
  files.each do |filename|
66
65
  puts filename
67
- p.queue << {:params =>[ssh, export, filename], :block => download_file}
66
+ p.queue << {:params =>[export, filename], :block => download_file}
68
67
  end
69
68
 
70
69
  p.run
@@ -80,15 +79,14 @@ module Myreplicator
80
79
  ##
81
80
  def self.download_file
82
81
  proc = Proc.new { |params|
83
- ssh = params[0]
84
- export = params[1]
85
- filename = params[2]
82
+ export = params[0]
83
+ filename = params[1]
86
84
 
87
85
  ActiveRecord::Base.verify_active_connections!
88
86
  ActiveRecord::Base.connection.reconnect!
89
87
 
90
88
  Log.run(:job_type => "transporter", :name => "metadata_file",
91
- :file => filename, :export_id => export.id) do |log|
89
+ :file => filename, :export_id => export.id ) do |log|
92
90
 
93
91
  sftp = export.sftp_to_source
94
92
  json_file = Transporter.remote_path(export, filename)
@@ -103,12 +101,10 @@ module Myreplicator
103
101
  :file => dump_file, :export_id => export.id) do |log|
104
102
  puts "Downloading #{dump_file}"
105
103
  sftp.download!(dump_file, File.join(tmp_dir, dump_file.split("/").last))
106
- Transporter.remove!(ssh, json_file, dump_file)
104
+ Transporter.remove!(export, json_file, dump_file)
107
105
  end
108
- elsif Transporter.junk_file?(metadata)
109
- Transporter.remove!(ssh, json_file, dump_file)
110
106
  end #if
111
-
107
+ puts "#{Thread.current.to_s}___Exiting download..."
112
108
  end
113
109
  }
114
110
  end
@@ -126,15 +122,17 @@ module Myreplicator
126
122
  return false
127
123
  end
128
124
 
129
- def self.remove! ssh, json_file, dump_file
130
- ssh.exec!("rm #{json_file}")
131
- ssh.exec!("rm #{dump_file}")
125
+ def self.remove! export, json_file, dump_file
126
+ ssh = export.ssh_to_source
127
+ puts "rm #{json_file} #{dump_file}"
128
+ ssh.exec!("rm #{json_file} #{dump_file}")
132
129
  end
133
130
 
134
131
  ##
135
132
  # Gets all files ready to be exported from server
136
133
  ##
137
- def self.completed_files ssh, export
134
+ def self.completed_files export
135
+ ssh = export.ssh_to_source
138
136
  done_files = ssh.exec!(get_done_files(export))
139
137
 
140
138
  unless done_files.blank?
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.0.5
4
+ version: 1.0.6
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-01-18 00:00:00.000000000 Z
12
+ date: 2013-01-22 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rails
@@ -347,7 +347,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
347
347
  version: '0'
348
348
  segments:
349
349
  - 0
350
- hash: -4098853574664925897
350
+ hash: 1776546656484896019
351
351
  required_rubygems_version: !ruby/object:Gem::Requirement
352
352
  none: false
353
353
  requirements:
@@ -356,7 +356,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
356
356
  version: '0'
357
357
  segments:
358
358
  - 0
359
- hash: -4098853574664925897
359
+ hash: 1776546656484896019
360
360
  requirements: []
361
361
  rubyforge_project:
362
362
  rubygems_version: 1.8.23