filecluster 0.2.4 → 0.2.5
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/daemon/global_daemon_thread.rb +4 -0
- data/lib/daemon/run_tasks_thread.rb +1 -1
- data/lib/fc/item.rb +4 -2
- data/lib/fc/version.rb +1 -1
- data/test/daemon_test.rb +3 -3
- metadata +4 -4
@@ -80,12 +80,16 @@ class GlobalDaemonThread < BaseThread
|
|
80
80
|
def make_deleted_error_items_storages
|
81
81
|
$log.debug("GlobalDaemonThread: make_deleted_error_items_storages")
|
82
82
|
ttl = FC::Var.get('daemon_global_error_items_storages_ttl', 86400).to_i
|
83
|
+
cnt = FC::DB.query("SELECT count(*) as cnt FROM #{FC::ItemStorage.table_name} WHERE status IN ('error', 'copy') AND time < #{Time.new.to_i - ttl}").first['cnt']
|
84
|
+
$log.debug("GlobalDaemonThread: mark deleted #{cnt} items storages")
|
83
85
|
FC::DB.query("UPDATE #{FC::ItemStorage.table_name} SET status = 'delete' WHERE status IN ('error', 'copy') AND time < #{Time.new.to_i - ttl}")
|
84
86
|
end
|
85
87
|
|
86
88
|
def make_deleted_error_items
|
87
89
|
$log.debug("GlobalDaemonThread: make_deleted_error_items")
|
88
90
|
ttl = FC::Var.get('daemon_global_error_items_ttl', 86400).to_i
|
91
|
+
cnt = FC::DB.query("SELECT count(*) as cnt FROM #{FC::Item.table_name} WHERE status = 'error' AND time < #{Time.new.to_i - ttl}").first['cnt']
|
92
|
+
$log.debug("GlobalDaemonThread: mark deleted #{cnt} items")
|
89
93
|
FC::DB.query("UPDATE #{FC::Item.table_name} SET status = 'delete' WHERE status = 'error' AND time < #{Time.new.to_i - ttl}")
|
90
94
|
end
|
91
95
|
end
|
@@ -1,6 +1,6 @@
|
|
1
1
|
class RunTasksThread < BaseThread
|
2
2
|
def go
|
3
|
-
$log.debug(
|
3
|
+
$log.debug("Run tasks (copy_count: #{$copy_count})")
|
4
4
|
$storages.each do |storage|
|
5
5
|
$tasks_threads[storage.name] = [] unless $tasks_threads[storage.name]
|
6
6
|
$tasks_threads[storage.name].delete_if {|thread| !thread.alive?}
|
data/lib/fc/item.rb
CHANGED
@@ -33,8 +33,6 @@ module FC
|
|
33
33
|
item = FC::Item.where('name=? AND policy_id=?', item_params[:name], policy.id).first
|
34
34
|
if item
|
35
35
|
if options[:replace] || storage
|
36
|
-
# mark delete item_storages on replace
|
37
|
-
FC::DB.query("UPDATE #{FC::ItemStorage.table_name} SET status='delete' WHERE item_id = #{item.id}") if options[:replace] && !storage
|
38
36
|
# replace all fields
|
39
37
|
item_params.each{|key, val| item.send("#{key}=", val)}
|
40
38
|
else
|
@@ -51,6 +49,10 @@ module FC
|
|
51
49
|
else
|
52
50
|
storage = policy.get_proper_storage_for_create(item.size)
|
53
51
|
FC::Error.raise 'No available storage', :item_id => item.id unless storage
|
52
|
+
|
53
|
+
# mark delete item_storages on replace
|
54
|
+
FC::DB.query("UPDATE #{FC::ItemStorage.table_name} SET status='delete' WHERE item_id = #{item.id} AND storage_name <> '#{storage.name}'") if options[:replace]
|
55
|
+
|
54
56
|
item_storage = item.make_item_storage(storage)
|
55
57
|
item.copy_item_storage(local_path, storage, item_storage)
|
56
58
|
end
|
data/lib/fc/version.rb
CHANGED
data/test/daemon_test.rb
CHANGED
@@ -19,8 +19,8 @@ class DaemonTest < Test::Unit::TestCase
|
|
19
19
|
|
20
20
|
FC::Var.set('daemon_cycle_time', 1)
|
21
21
|
FC::Var.set('daemon_global_wait_time', 1)
|
22
|
-
FC::Var.set('daemon_global_error_items_storages_ttl',
|
23
|
-
FC::Var.set('daemon_global_error_items_ttl',
|
22
|
+
FC::Var.set('daemon_global_error_items_storages_ttl', 2)
|
23
|
+
FC::Var.set('daemon_global_error_items_ttl', 2)
|
24
24
|
@stotage_checks = 0
|
25
25
|
Thread.new do
|
26
26
|
Open3.popen2e("#{daemon_bin} -c #{db_config_file} -l debug -h host1") do |stdin, stdout, t|
|
@@ -113,7 +113,7 @@ class DaemonTest < Test::Unit::TestCase
|
|
113
113
|
@item3.status = 'error'
|
114
114
|
@item3.save
|
115
115
|
|
116
|
-
sleep
|
116
|
+
sleep 6
|
117
117
|
assert_raise(RuntimeError, "Item not deleted after mark_deleted") {@item1.reload}
|
118
118
|
assert_equal 0, FC::ItemStorage.where('item_id = ?', @item2.id).count, "ItemStorages not deleted after status='error'"
|
119
119
|
@item3.reload
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: filecluster
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.5
|
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-07-
|
12
|
+
date: 2013-07-24 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rb-readline
|
@@ -192,7 +192,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
192
192
|
version: '0'
|
193
193
|
segments:
|
194
194
|
- 0
|
195
|
-
hash: -
|
195
|
+
hash: -2450197837742993053
|
196
196
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
197
197
|
none: false
|
198
198
|
requirements:
|
@@ -201,7 +201,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
201
201
|
version: '0'
|
202
202
|
segments:
|
203
203
|
- 0
|
204
|
-
hash: -
|
204
|
+
hash: -2450197837742993053
|
205
205
|
requirements: []
|
206
206
|
rubyforge_project:
|
207
207
|
rubygems_version: 1.8.24
|