filecluster 0.2.4 → 0.2.5
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.
- 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
|