s3backup 0.7.2 → 0.7.3

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.
@@ -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