filecluster 0.5.25 → 0.5.26

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 8d483e4b277c06ca5555620bc5ae7f23f4e524d6
4
- data.tar.gz: e7ee71236466346353c3ef599bd3bd29ac47551c
3
+ metadata.gz: 1ee01d84ce7df5b8ebe6279a92c0c14c488a5c82
4
+ data.tar.gz: 7e2f785e88144ed619e55cdec6bf038264278052
5
5
  SHA512:
6
- metadata.gz: 4520da860c08b62f5815e39625c27c2e95d132dc1f3f135883ad6d83c2f4c8eff494544aa5874f96f0fbc8b578f7404f3f065613e8838bef858c518c70b440f4
7
- data.tar.gz: 402c406c37d2c560df3da5a66f0a3c231c89b89edb542e19468fd2e151c3868ce338b223f3dcf364b14022ae34d28c0270b4b6d3c0610b81dd08935943c1b31c
6
+ metadata.gz: 7735a60395e14dac92d0078d60c63458ac795847e55292a6b4616e29f072d50b7417f74a6cf2bb0e775c0452b2706363f10b6d82aaafe41cd5b8d371bf242c89
7
+ data.tar.gz: 1e670216069549f82614300d99c53422e73782ab96c5e3ed459c32bc4d8b27dcc77eaa47b813a68e6a3a5d3fda0cc60f498e48435d19c1fab30ece49f0eee530
@@ -1,5 +1,9 @@
1
1
  class CheckThread < BaseThread
2
2
  require "net/http"
3
+
4
+ @@storage_http_check = {}
5
+ HTTP_RETRIES = 3
6
+
3
7
  def go(storage_name)
4
8
  $log.debug("CheckThread: Run stotage check for #{storage_name}")
5
9
  storage = $storages.detect{|s| s.name == storage_name}
@@ -10,7 +14,7 @@ class CheckThread < BaseThread
10
14
  else
11
15
  error "Storage #{storage.name} with path #{storage.path} not writable"
12
16
  end
13
- check_http(storage)
17
+ check_http(storage) if storage.http_check_enabled?
14
18
  $log.debug("CheckThread: Finish stotage check for #{storage_name}")
15
19
  end
16
20
 
@@ -22,8 +26,10 @@ class CheckThread < BaseThread
22
26
  resp = request.start { |http| http.get(uri.path) } rescue nil
23
27
  if resp && resp.code.to_i == 200 && resp.body.to_s.chomp == 'OK'
24
28
  storage.update_http_check_time
29
+ @@storage_http_check[storage.name] = 0
25
30
  else
26
- error "Storage #{storage.name} with url #{storage.url} not readable"
31
+ @@storage_http_check[storage.name] = @@storage_http_check[storage.name].to_i + 1
32
+ error("Storage #{storage.name} with url #{storage.url} not readable") if @@storage_http_check[storage.name] > HTTP_RETRIES
27
33
  end
28
34
  rescue => err
29
35
  $log.error("CheckThread: check_http error: #{err}")
@@ -95,6 +95,7 @@ module FC
95
95
  end
96
96
 
97
97
  def update_http_check_time
98
+ return unless http_check_enabled?
98
99
  self.http_check_time = Time.new.to_i
99
100
  save
100
101
  end
@@ -104,9 +105,13 @@ module FC
104
105
  end
105
106
 
106
107
  def http_check_time_delay
107
- Time.new.to_i - http_check_time.to_i
108
+ http_check_enabled? ? Time.new.to_i - http_check_time.to_i : 0
108
109
  end
109
110
 
111
+ def http_check_enabled?
112
+ http_check_time.to_i >= 0
113
+ end
114
+
110
115
  def up?
111
116
  check_time_delay < self.class.check_time_limit
112
117
  end
@@ -1,3 +1,3 @@
1
1
  module FC
2
- VERSION = '0.5.25'.freeze
2
+ VERSION = '0.5.26'.freeze
3
3
  end
@@ -20,21 +20,22 @@ def storages_show
20
20
  if storage = find_storage
21
21
  count = FC::DB.query("SELECT count(*) as cnt FROM #{FC::ItemStorage.table_name} WHERE storage_name='#{Mysql2::Client.escape(storage.name)}'").first['cnt']
22
22
  puts %Q{Storage
23
- Name: #{storage.name}
24
- Host: #{storage.host}
25
- DC: #{storage.dc}
26
- Path: #{storage.path}
27
- Url: #{storage.url}
28
- Url weight: #{storage.url_weight}
29
- Write weight #{storage.write_weight}
30
- Size: #{size_to_human storage.size} (#{(storage.size_rate*100).to_i}%)
31
- Free: #{size_to_human storage.free} (#{(storage.free_rate*100).to_i}%)
32
- Size limit: #{size_to_human storage.size_limit}
33
- Size type: #{storage.auto_size? ? "Auto (min #{ size_to_human storage.auto_size })" : 'Static'}
34
- Copy storages: #{storage.copy_storages}
35
- Check time: #{storage.check_time ? "#{Time.at(storage.check_time)} (#{storage.check_time_delay} seconds ago)" : ''}
36
- Status: #{storage.up? ? colorize_string('UP', :green) : colorize_string('DOWN', :red)}
37
- Items storages: #{count}}
23
+ Name: #{storage.name}
24
+ Host: #{storage.host}
25
+ DC: #{storage.dc}
26
+ Path: #{storage.path}
27
+ Url: #{storage.url}
28
+ Url weight: #{storage.url_weight}
29
+ Write weight #{storage.write_weight}
30
+ Size: #{size_to_human storage.size} (#{(storage.size_rate*100).to_i}%)
31
+ Free: #{size_to_human storage.free} (#{(storage.free_rate*100).to_i}%)
32
+ Size limit: #{size_to_human storage.size_limit}
33
+ Size type: #{storage.auto_size? ? "Auto (min #{ size_to_human storage.auto_size })" : 'Static'}
34
+ Copy storages: #{storage.copy_storages}
35
+ Check time: #{storage.check_time ? "#{Time.at(storage.check_time)} (#{storage.check_time_delay} seconds ago)" : ''}
36
+ Check http time: #{storage.http_check_enabled? ? "#{Time.at(storage.http_check_time)} (#{storage.http_check_time_delay} seconds ago)" : 'disabled'}
37
+ Status: #{storage.up? ? colorize_string('UP', :green) : colorize_string('DOWN', :red)}
38
+ Items storages: #{count}}
38
39
  end
39
40
  end
40
41
 
@@ -56,13 +57,14 @@ def storages_add
56
57
  size_limit = human_to_size stdin_read_val('Size limit') {|val| "Size limit not is valid size." unless human_to_size(val)}
57
58
  end
58
59
 
60
+ check_http = %(y yes).include?(stdin_read_val('Check http (y/n)?').downcase) ? 0 : -1
59
61
  copy_storages = stdin_read_val('Copy storages', true)
60
62
  storages = FC::Storage.where.map(&:name)
61
63
  copy_storages = copy_storages.split(',').select{|s| storages.member?(s.strip)}.join(',').strip
62
64
  begin
63
65
  path = path +'/' unless path[-1] == '/'
64
66
  path = '/' + path unless path[0] == '/'
65
- storage = FC::Storage.new(:name => name, :dc => dc, :host => host, :path => path, :url => url, :size_limit => size_limit, :copy_storages => copy_storages, :url_weight => url_weight, :write_weight => write_weight, :auto_size => auto_size)
67
+ storage = FC::Storage.new(:name => name, :dc => dc, :host => host, :path => path, :url => url, :size_limit => size_limit, :copy_storages => copy_storages, :url_weight => url_weight, :write_weight => write_weight, :auto_size => auto_size, :http_check_time => check_http)
66
68
  print 'Calc current size.. '
67
69
  size = storage.file_size('', true)
68
70
  puts "ok"
@@ -88,6 +90,7 @@ def storages_add
88
90
  Free: #{size_to_human free} (#{(free.to_f*100 / size_limit).to_i}%)
89
91
  Size type: #{storage.auto_size? ? "Auto (min #{ size_to_human(auto_size) })" : 'Static' }
90
92
  Size limit: #{size_to_human size_limit}
93
+ Check http: #{storage.http_check_enabled? ? 'yes' : 'no' }
91
94
  Copy storages #{copy_storages}}
92
95
  s = Readline.readline("Continue? (y/n) ", false).strip.downcase
93
96
  puts ""
@@ -152,6 +155,7 @@ def storages_change
152
155
  auto_size = 0
153
156
  size_limit = stdin_read_val("Size (now #{size_to_human(storage.size_limit)})", true) {|val| "Size limit not is valid size." if !val.empty? && !human_to_size(val)}
154
157
  end
158
+ check_http = %(y yes).include?(stdin_read_val("Check http (now #{storage.http_check_enabled? ? 'yes' : 'no'})", true, storage.http_check_enabled? ? 'yes' : 'no').downcase)
155
159
  copy_storages = stdin_read_val("Copy storages (now #{storage.copy_storages})", true)
156
160
 
157
161
  storage.dc = dc unless dc.empty?
@@ -172,7 +176,7 @@ def storages_change
172
176
  storage.size_limit = human_to_size(size_limit) unless size_limit.empty?
173
177
  storages = FC::Storage.where.map(&:name)
174
178
  storage.copy_storages = copy_storages.split(',').select{|s| storages.member?(s.strip)}.join(',').strip unless copy_storages.empty?
175
-
179
+ storage.http_check_time = (check_http ? 0 : -1) if storage.http_check_enabled? != check_http
176
180
  puts %Q{\nStorage
177
181
  Name: #{storage.name}
178
182
  DC: #{storage.dc}
@@ -185,6 +189,7 @@ def storages_change
185
189
  Free: #{size_to_human storage.free} (#{(storage.free_rate*100).to_i}%)
186
190
  Size type: #{storage.auto_size? ? "Auto (Min #{size_to_human auto_size})" : 'Static' }
187
191
  Size limit: #{size_to_human storage.size_limit }
192
+ Check http: #{storage.http_check_enabled? ? 'yes' : 'no' }
188
193
  Copy storages: #{storage.copy_storages}}
189
194
  s = Readline.readline("Continue? (y/n) ", false).strip.downcase
190
195
  puts ""
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: filecluster
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.25
4
+ version: 0.5.26
5
5
  platform: ruby
6
6
  authors:
7
7
  - sh
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-06-30 00:00:00.000000000 Z
11
+ date: 2020-08-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: mysql2