filecluster 0.1.5 → 0.1.6

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/TODO CHANGED
@@ -1,7 +1,6 @@
1
1
  ! что делать с error is?
2
2
  периодически удалять пустые папки
3
3
  при создании item-а по папке проверять что папка не пустая
4
- проработать item-ы папки
5
4
  добавить в check storage проверку на дорступность урла
6
5
 
7
6
  алерт на доступность в каждоый политике стораджа на запись
@@ -5,9 +5,10 @@ class BaseThread < Thread
5
5
  self.go(*p)
6
6
  rescue Exception => e
7
7
  error "#{self.class}: #{e.message}; #{e.backtrace.join(', ')}"
8
+ ensure
9
+ FC::DB.close
10
+ $log.debug("close #{self.class}")
8
11
  end
9
- FC::DB.close
10
- $log.debug("close #{self.class}")
11
12
  end
12
13
  end
13
14
  end
@@ -16,9 +16,9 @@ class GlobalDaemonThread < BaseThread
16
16
  end
17
17
 
18
18
  make_item_copies
19
-
19
+ delete_deleted_items
20
20
  #периодическая проверка на item со статусом delete, последним обновлением дольше суток (NOW - time > 86400) и без связанных is - удаление таких из базы
21
- #периодически удалять (проставлять статус delete) для лиших is (число копий больше необходимого)
21
+ #TODO: периодически удалять (проставлять статус delete) для лиших is (число копий больше необходимого)
22
22
  end
23
23
  end
24
24
 
@@ -57,4 +57,16 @@ class GlobalDaemonThread < BaseThread
57
57
  end
58
58
  end
59
59
  end
60
+
61
+ def delete_deleted_items
62
+ $log.debug("GlobalDaemonThread: delete_deleted_items")
63
+
64
+ r = FC::DB.connect.query("SELECT i.id FROM #{FC::Item.table_name} as i LEFT JOIN #{FC::ItemStorage.table_name} as ist ON i.id=ist.item_id WHERE i.status = 'delete' AND ist.id IS NULL")
65
+ ids = r.map{|row| row['id']}
66
+ if ids.count > 0
67
+ ids = ids.join(',')
68
+ FC::DB.connect.query("DELETE FROM #{FC::Item.table_name} WHERE id in (#{ids})")
69
+ $log.info("GlobalDaemonThread: delete items #{ids}")
70
+ end
71
+ end
60
72
  end
@@ -161,7 +161,7 @@ module FC
161
161
  item_id int DEFAULT NULL,
162
162
  item_storage_id int DEFAULT NULL,
163
163
  host varchar(255) DEFAULT NULL,
164
- message varchar(255) DEFAULT NULL,
164
+ message text DEFAULT NULL,
165
165
  time int DEFAULT NULL,
166
166
  PRIMARY KEY (id), KEY (item_id), KEY (item_storage_id), KEY (host), KEY (time)
167
167
  ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci
@@ -1,3 +1,3 @@
1
1
  module FC
2
- VERSION = "0.1.5"
2
+ VERSION = "0.1.6"
3
3
  end
@@ -98,7 +98,10 @@ class DaemonTest < Test::Unit::TestCase
98
98
  item_storage.save
99
99
  sleep 2
100
100
  assert_equal 0, `du -sb /tmp/host1-sdc/bla/bla/test1 2>&1`.to_i
101
-
102
101
  assert_equal @@errors_count, FC::Error.where.count, "new errors in errors table"
102
+
103
+ @item1.mark_deleted
104
+ sleep 2
105
+ assert_raise(RuntimeError, 'Item not deleted after mark_deleted') {@item1.reload}
103
106
  end
104
107
  end
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.1.5
4
+ version: 0.1.6
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-05-13 00:00:00.000000000 Z
12
+ date: 2013-05-14 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rb-readline
@@ -186,7 +186,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
186
186
  version: '0'
187
187
  segments:
188
188
  - 0
189
- hash: 191961039
189
+ hash: 789694035
190
190
  required_rubygems_version: !ruby/object:Gem::Requirement
191
191
  none: false
192
192
  requirements:
@@ -195,7 +195,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
195
195
  version: '0'
196
196
  segments:
197
197
  - 0
198
- hash: 191961039
198
+ hash: 789694035
199
199
  requirements: []
200
200
  rubyforge_project:
201
201
  rubygems_version: 1.8.24