filecluster 0.2.4 → 0.2.5

Sign up to get free protection for your applications and to get access to all the features.
@@ -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('Run tasks (copy_count: #{$copy_count})')
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
@@ -1,3 +1,3 @@
1
1
  module FC
2
- VERSION = "0.2.4"
2
+ VERSION = "0.2.5"
3
3
  end
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', 0)
23
- FC::Var.set('daemon_global_error_items_ttl', 0)
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 2
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
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-18 00:00:00.000000000 Z
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: -4358767098397896012
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: -4358767098397896012
204
+ hash: -2450197837742993053
205
205
  requirements: []
206
206
  rubyforge_project:
207
207
  rubygems_version: 1.8.24