s3backup 0.7.2 → 0.7.3

Sign up to get free protection for your applications and to get access to all the features.
@@ -192,9 +192,6 @@ module S3backup
192
192
  #前回と今回のファイル・ツリーを比較
193
193
  diff_info = tree_info.diff(old_tree)
194
194
  S3log.debug("diff_info=#{diff_info.inspect}")
195
- tmp = Tempfile.open("tree_info.yml")
196
- tmp.write(tree_info.dump_yaml)
197
- tmp.close
198
195
  dir_map = nil
199
196
  if @resume
200
197
  new_dir_map = tree_info.make_dir_map
@@ -203,8 +200,6 @@ module S3backup
203
200
  #メモリ節約のため開放
204
201
  old_tree = nil
205
202
  end
206
- #メモリ節約のため開放
207
- tree_info = nil
208
203
  update_dir = diff_info[:directory][:add] + diff_info[:directory][:modify]
209
204
  #更新されたディレクトリをアップロード
210
205
  update_dir.each do |udir|
@@ -220,10 +215,8 @@ module S3backup
220
215
  diff_info[:directory][:remove].each do |rm_dir|
221
216
  delete_direcory(rm_dir)
222
217
  end
223
- tmp.open
224
218
  #今回のファイル・ツリーをAWS S3に登録
225
- @target.post(target_tree_name,tmp.read)
226
- tmp.close(true)
219
+ @target.post(target_tree_name,tree_info.dump_yaml)
227
220
  end
228
221
  def get_target_tree(dir)
229
222
  base_dir = dir
@@ -44,13 +44,43 @@ module S3backup
44
44
  end
45
45
  def exists?(key)
46
46
  key=CGI.escape(key)
47
- ret = AWS::S3::S3Object.exists? key,@bucket_name
47
+ count = 0;
48
+ while true do
49
+ begin
50
+ ret = AWS::S3::S3Object.exists? key,@bucket_name
51
+ break;
52
+ rescue => ex
53
+ count+=1;
54
+ S3log.info("exists? #{count} times failed. #{key}\n")
55
+ if count >= @max_retry_count
56
+ S3log.error("post #{count} times failed #{key_name} #{ex.class}:#{ex.message}\n")
57
+ exit(-1)
58
+ end
59
+ sleep(count*30)
60
+ AWS::S3::Base.establish_connection!(@args)
61
+ end
62
+ end
48
63
  end
49
64
  def get(key)
50
65
  key_name = CGI.escape(key)
66
+ count = 0;
51
67
  data = nil
52
- if AWS::S3::S3Object.exists? key_name,@bucket_name
53
- data = AWS::S3::S3Object.value(key_name,@bucket_name)
68
+ while true do
69
+ begin
70
+ if AWS::S3::S3Object.exists? key_name,@bucket_name
71
+ data = AWS::S3::S3Object.value(key_name,@bucket_name)
72
+ end
73
+ break;
74
+ rescue => ex
75
+ count+=1;
76
+ S3log.info("get #{count} times failed. #{key_name}\n")
77
+ if count >= @max_retry_count
78
+ S3log.error("get #{count} times failed #{key_name} #{ex.class}:#{ex.message}\n")
79
+ exit(-1)
80
+ end
81
+ sleep(count*30)
82
+ AWS::S3::Base.establish_connection!(@args)
83
+ end
54
84
  end
55
85
  return data
56
86
  end
@@ -110,7 +140,22 @@ module S3backup
110
140
  def delete(key)
111
141
  if exists? key
112
142
  S3log.info("S3Object.delete(#{CGI.escape(key)})")
113
- AWS::S3::S3Object.delete(CGI.escape(key),@bucket_name)
143
+ count = 0;
144
+ while true do
145
+ begin
146
+ AWS::S3::S3Object.delete(CGI.escape(key),@bucket_name)
147
+ break
148
+ rescue => ex
149
+ count+=1;
150
+ S3log.info("delete #{count} times failed. #{key}\n")
151
+ if count >= @max_retry_count
152
+ S3log.error("delete #{count} times failed #{key} #{ex.class}:#{ex.message}\n")
153
+ exit(-1)
154
+ end
155
+ sleep(count*30)
156
+ AWS::S3::Base.establish_connection!(@args)
157
+ end
158
+ end
114
159
  return true
115
160
  end
116
161
  return false
data/lib/s3backup.rb CHANGED
@@ -2,5 +2,5 @@ $:.unshift(File.dirname(__FILE__)) unless
2
2
  $:.include?(File.dirname(__FILE__)) || $:.include?(File.expand_path(File.dirname(__FILE__)))
3
3
 
4
4
  module S3backup
5
- VERSION = '0.7.2'
5
+ VERSION = '0.7.3'
6
6
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: s3backup
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.2
4
+ version: 0.7.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Takeshi Morita
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2010-01-29 00:00:00 +09:00
12
+ date: 2010-01-31 00:00:00 +09:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency