filecluster 0.1.5 → 0.1.6

Sign up to get free protection for your applications and to get access to all the features.
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