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