rbbt-util 5.13.30 → 5.13.31

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: 547e2309e238341b65561d216fc6324b85a13165
4
- data.tar.gz: b7865ac59ad7bed3894c9fbb24ae3bd8da15f38d
3
+ metadata.gz: 22e6c0ab1705d1790142288b6bc9943665830554
4
+ data.tar.gz: 7873db2daa7dafc6ee9b8e1ba9ac12191c8c5d8b
5
5
  SHA512:
6
- metadata.gz: 98235141db97b051c8c5f6f4c3125937f2ba427407f960de9abc212662578e553024062289feb7f90bd65e763f6084fc4eb33b39b4d52bc743bdca8dd5a0e3ef
7
- data.tar.gz: 5cfd97fbd116dbd802c99d477da00ce7b852531e41e7c5f59ea8c84cbf0d07e2bb67a0dd57c5efc1a0a1b938b8400f664567b767a9215a7f7f3093944591ef7f
6
+ metadata.gz: 07dee96dd2fabee74fbf1ae2852a657f16f30f16c818c092ebd352a6769b080155881a255a48098ebcf749efa95abb13cd9e9da82cecdbdec1a0e415be0c1940
7
+ data.tar.gz: 547fd0998e00974bc5ecd8bc3ba1b8a98db556cfb48d8c2e2fb0e327eeaaa9af6023112d3ebfdde613911cc459d54c23c60221dc5f55ce6ac40e288d7b33a027
data/lib/rbbt/monitor.rb CHANGED
@@ -2,7 +2,9 @@ require 'rbbt'
2
2
 
3
3
  module Rbbt
4
4
 
5
- LOCK_DIRS = Rbbt.share.find_all + Rbbt.var.cache.persistence.find_all + Rbbt.tmp.tsv_open_locks.find_all + Rbbt.var.jobs.find_all
5
+ LOCK_DIRS = Rbbt.share.find_all + Rbbt.var.cache.persistence.find_all + Rbbt.var.jobs.find_all +
6
+ Rbbt.tmp.tsv_open_locks.find_all + Rbbt.tmp.persist_locks.find_all
7
+
6
8
  def self.locks(dirs = LOCK_DIRS)
7
9
  dirs.collect do |dir|
8
10
  dir.glob("**/*.lock")
data/lib/rbbt/persist.rb CHANGED
@@ -18,7 +18,7 @@ module Persist
18
18
  attr_accessor :lock_dir
19
19
 
20
20
  def lock_dir
21
- @lock_dir ||= Rbbt.tmp.tsv_open_locks.find
21
+ @lock_dir ||= Rbbt.tmp.persist_locks.find
22
22
  end
23
23
  end
24
24
 
@@ -282,11 +282,13 @@ module Persist
282
282
 
283
283
  def self.get_result(path, type, persist_options, lockfile, &block)
284
284
  res = yield
285
+ stream = res if IO === res
286
+ stream = res.stream if res.respond_to? :stream
287
+
288
+ if stream
289
+ if persist_options[:no_load] == :stream
290
+ res = tee_stream(stream, path, type, stream.respond_to?(:callback)? stream.callback : nil, stream.respond_to?(:abort_callback)? stream.abort_callback : nil)
285
291
 
286
- if persist_options[:no_load] == :stream
287
- case res
288
- when IO
289
- res = tee_stream(res, path, type, res.respond_to?(:callback)? res.callback : nil, res.respond_to?(:abort_callback)? res.abort_callback : nil)
290
292
  ConcurrentStream.setup res do
291
293
  begin
292
294
  lockfile.unlock #if File.exists? lockfile.path and lockfile.locked?
@@ -302,27 +304,50 @@ module Persist
302
304
  end
303
305
  end
304
306
  raise KeepLocked.new res
305
- when TSV::Dumper
306
- stream = res.stream
307
- res = tee_stream(stream, path, type)
308
- ConcurrentStream.setup res do
309
- begin
310
- stream.callback
311
- lockfile.unlock #if File.exists? lockfile.path and lockfile.locked?
312
- rescue Exception
313
- Log.medium "Lockfile exception: " << $!.message
314
- end
307
+ else
308
+ begin
309
+ res = case type
310
+ when :array
311
+ res.read.split "\n"
312
+ when :tsv
313
+ TSV.open(res)
314
+ else
315
+ res.read
316
+ end
317
+ res.join if res.respond_to? :join
318
+ res
319
+ rescue
320
+ res.abort if res.respond_to? :abort
321
+ raise $!
315
322
  end
316
- res.abort_callback = Proc.new do
317
- begin
318
- stream.abort
323
+ end
324
+ else
325
+ res
326
+ end
327
+ end
328
+
329
+ def self._get_result(path, type, persist_options, lockfile, &block)
330
+ res = yield
331
+
332
+ if persist_options[:no_load] == :stream
333
+ stream = IO === res ? res : res.stream
334
+ res = tee_stream(stream, path, type, stream.respond_to?(:callback)? stream.callback : nil, stream.respond_to?(:abort_callback)? stream.abort_callback : nil)
335
+
336
+ ConcurrentStream.setup res do
337
+ begin
319
338
  lockfile.unlock #if File.exists? lockfile.path and lockfile.locked?
320
- rescue Exception
321
- Log.medium "Lockfile exception: " << $!.message
322
- end
339
+ rescue Exception
340
+ Log.medium "Lockfile exception: " << $!.message
323
341
  end
324
- raise KeepLocked.new res
325
342
  end
343
+ res.abort_callback = Proc.new do
344
+ begin
345
+ lockfile.unlock #if File.exists? lockfile.path and lockfile.locked?
346
+ rescue Exception
347
+ Log.medium "Lockfile exception: " << $!.message
348
+ end
349
+ end
350
+ raise KeepLocked.new res
326
351
  end
327
352
 
328
353
  case res
@@ -356,24 +381,29 @@ module Persist
356
381
 
357
382
  def self.persist_file(path, type, persist_options, &block)
358
383
 
359
- if is_persisted?(path, persist_options)
360
- Log.low "Persist up-to-date: #{ path } - #{Misc.fingerprint persist_options}"
361
- return path if persist_options[:no_load]
362
- return load_file(path, type)
363
- else
384
+ begin
385
+ if is_persisted?(path, persist_options)
386
+ Log.low "Persist up-to-date: #{ path } - #{Misc.fingerprint persist_options}"
387
+ return path if persist_options[:no_load]
388
+ return load_file(path, type)
389
+ else
390
+ Open.rm path if Open.exists? path
391
+ end
392
+ rescue Exception
364
393
  Open.rm path if Open.exists? path
365
394
  end
366
395
 
367
396
 
397
+ lock_filename = Persist.persistence_path(path + '.persist', {:dir => Persist.lock_dir})
368
398
  begin
369
-
370
- lock_filename = Persist.persistence_path(path + '.persist', {:dir => Persist.lock_dir})
371
399
  Misc.lock lock_filename do |lockfile|
372
400
 
373
- if is_persisted?(path, persist_options)
374
- Log.low "Persist up-to-date (suddenly): #{ path } - #{Misc.fingerprint persist_options}"
375
- return path if persist_options[:no_load]
376
- return load_file(path, type)
401
+ Misc.insist do
402
+ if is_persisted?(path, persist_options)
403
+ Log.low "Persist up-to-date (suddenly): #{ path } - #{Misc.fingerprint persist_options}"
404
+ return path if persist_options[:no_load]
405
+ return load_file(path, type)
406
+ end
377
407
  end
378
408
 
379
409
  Log.medium "Persist create: #{ path } - #{type} #{Misc.fingerprint persist_options}"
@@ -387,8 +417,12 @@ module Persist
387
417
  persist_options[:no_load] ? path : res
388
418
  end
389
419
 
390
- rescue
420
+ rescue Lockfile::StolenLockError
421
+ Log.medium "Lockfile stolen: #{path}"
422
+ retry
423
+ rescue Exception
391
424
  Log.medium "Error in persist: #{path}#{Open.exists?(path) ? Log.color(:red, " Erasing") : ""}"
425
+ Log.exception $!
392
426
  FileUtils.rm path if Open.exists? path
393
427
  raise $!
394
428
  end
data/lib/rbbt/tsv.rb CHANGED
@@ -62,7 +62,7 @@ module TSV
62
62
 
63
63
  data = nil
64
64
 
65
- lock_filename = filename.nil? ? nil : Persist.persistence_path(filename, {:dir => TSV.lock_dir})
65
+ lock_filename = filename.nil? ? nil : Persist.persistence_path(filename + '.open', {:dir => TSV.lock_dir})
66
66
  Misc.lock lock_filename do
67
67
  data = Persist.persist_tsv source, filename, options, persist_options do |data|
68
68
  if serializer
@@ -61,7 +61,12 @@ class RbbtProcessQueue
61
61
  rescue Aborted
62
62
  Log.warn "Aborting process monitor"
63
63
  @processes.each{|p| p.abort }
64
- @processes.each{|p| p.join }
64
+ @processes.each{|p|
65
+ begin
66
+ p.join
67
+ rescue ProcessFailed
68
+ end
69
+ }
65
70
  rescue Exception
66
71
  Log.warn "Process monitor exception: #{$!.message}"
67
72
  @processes.each{|p| p.abort }
@@ -114,7 +119,10 @@ class RbbtProcessQueue
114
119
  (@process_monitor.raise(Aborted.new); @process_monitor.join) if @process_monitor and @process_monitor.alive?
115
120
  (@callback_thread.raise(Aborted.new); @callback_thread.join) if @callback_thread and @callback_thread.alive?
116
121
  ensure
117
- join
122
+ begin
123
+ join
124
+ rescue ProcessFailed
125
+ end
118
126
  end
119
127
  end
120
128
 
@@ -33,8 +33,10 @@ class RbbtProcessQueue
33
33
  rescue ClosedStream
34
34
  rescue Aborted, Interrupt
35
35
  Log.warn "Worker #{Process.pid} aborted"
36
- Kernel.exit! -1
36
+ Kernel.exit! 0
37
+ #Kernel.exit! -1
37
38
  rescue Exception
39
+ Log.exception $!
38
40
  @callback_queue.push($!) if @callback_queue
39
41
  Kernel.exit! -1
40
42
  ensure
@@ -44,7 +46,8 @@ class RbbtProcessQueue
44
46
  end
45
47
 
46
48
  def join
47
- joined_pid = Process.waitpid @pid
49
+ Process.waitpid @pid
50
+ raise ProcessFailed unless $?.success?
48
51
  end
49
52
 
50
53
  def abort
@@ -125,6 +125,12 @@ module Misc
125
125
  try = 0
126
126
  begin
127
127
  yield
128
+ rescue Aborted
129
+ if msg
130
+ Log.warn("Not Insisting after Aborted: #{$!.message} -- #{msg}")
131
+ else
132
+ Log.warn("Not Insisting after Aborted: #{$!.message}")
133
+ end
128
134
  rescue Exception
129
135
  if msg
130
136
  Log.warn("Insisting after exception: #{$!.message} -- #{msg}")
@@ -1,12 +1,16 @@
1
1
  if ENV["RBBT_NO_LOCKFILE_REFRESH"] == "true"
2
2
  Lockfile.refresh = false
3
3
  Lockfile.max_age = 60 * 60 * 5
4
+ Lockfile.max_age = 15
5
+ Lockfile.suspend = 10
4
6
  else
7
+ Lockfile.dont_use_lock_id = true
5
8
  Lockfile.refresh = 5
6
- Lockfile.max_age = 5 * 60
7
- Lockfile.suspend = 3
9
+ Lockfile.max_age = 60
10
+ Lockfile.suspend = 15
8
11
  end
9
12
 
13
+
10
14
  module Misc
11
15
 
12
16
  LOCK_MUTEX = Mutex.new
@@ -19,40 +23,16 @@ module Misc
19
23
  lock_path = File.expand_path(file + '.lock')
20
24
  lockfile = Lockfile.new(lock_path, options)
21
25
 
22
- hostname = Misc.hostname
23
- LOCK_MUTEX.synchronize do
24
- Misc.insist 2, 0.1 do
25
- Misc.insist 3, 0.1 do
26
- begin
27
- if File.exists? lock_path
28
- info = Open.open(lock_path){|f| YAML.load(f) }
29
- raise "No info" unless info
30
-
31
- if hostname == info["host"] and not Misc.pid_exists?(info["pid"])
32
- Log.high("Removing lockfile: #{lock_path}. This pid #{Process.pid}. Content: #{info.inspect}")
33
-
34
- FileUtils.rm lock_path
35
- end
36
- end
37
- rescue Exception
38
- FileUtils.rm lock_path if File.exists? lock_path
39
- lockfile = Lockfile.new(lock_path, options) unless File.exists? lock_path
40
- raise $!
41
- end
42
- end
43
- end
44
- lockfile.lock
45
- end
26
+ lockfile.lock
46
27
 
47
28
  begin
48
29
  res = yield lockfile
49
- rescue Lockfile::StolenLockError
50
- unlock = false
30
+ #rescue Lockfile::StolenLockError
51
31
  rescue KeepLocked
52
32
  unlock = false
53
33
  res = $!.payload
54
34
  rescue Exception
55
- lockfile.unlock if lockfile.locked?
35
+ lockfile.unlock #if lockfile.locked?
56
36
  raise $!
57
37
  ensure
58
38
  if unlock
@@ -201,6 +201,7 @@ module Misc
201
201
  return if Open.exists? path
202
202
  tmp_path = Persist.persistence_path(path, {:dir => Misc.sensiblewrite_dir})
203
203
  Misc.lock tmp_path do
204
+ return if Open.exists? path
204
205
  if not Open.exists? path
205
206
  FileUtils.rm_f tmp_path if File.exists? tmp_path
206
207
  begin
@@ -377,12 +377,13 @@ module Open
377
377
  if block_given?
378
378
  begin
379
379
  return yield(io)
380
- rescue
380
+ rescue Exception
381
381
  io.abort if io.respond_to? :abort
382
382
  io.join if io.respond_to? :join
383
383
  raise $!
384
384
  ensure
385
385
  io.join if io.respond_to? :join
386
+ io.close if io.respond_to? :close and not io.closed?
386
387
  end
387
388
  else
388
389
  io
@@ -5,6 +5,10 @@ class Step
5
5
 
6
6
  INFO_SERIALIAZER = Marshal
7
7
 
8
+ def self.started?
9
+ info_file.exists?
10
+ end
11
+
8
12
  def self.wait_for_jobs(jobs)
9
13
  begin
10
14
  threads = []
@@ -465,7 +469,7 @@ module Workflow
465
469
 
466
470
  TAG = :hash
467
471
  def step_path(taskname, jobname, inputs, dependencies, extension = nil)
468
- Proc.new{
472
+ #Proc.new{
469
473
  raise "Jobname makes an invalid path: #{ jobname }" if jobname =~ /\.\./
470
474
  if inputs.any? or dependencies.any?
471
475
  tagged_jobname = case TAG
@@ -486,7 +490,7 @@ module Workflow
486
490
  end
487
491
 
488
492
  workdir[taskname][tagged_jobname].find
489
- }
493
+ #}
490
494
  end
491
495
 
492
496
  def id_for(path)
@@ -140,7 +140,7 @@ class Step
140
140
  @result = nil
141
141
  @pid = nil
142
142
 
143
- begin
143
+ Misc.insist do
144
144
  Open.rm info_file if Open.exists? info_file
145
145
  Open.rm info_file + '.lock' if Open.exists? info_file + '.lock'
146
146
  Open.rm path if Open.exists? path
@@ -143,8 +143,8 @@ class Step
143
143
  dependency.clean if (dependency.error? or dependency.aborted? or dependency.status.nil?)# or not dependency.done?)
144
144
  end
145
145
 
146
- unless dependency.result or dependency.done?
147
- dependency.run(true).grace
146
+ unless dependency.started? #dependency.result or dependency.done?
147
+ dependency.run(true)#.grace
148
148
  end
149
149
  rescue Aborted
150
150
  Log.error "Aborted dep. #{Log.color :red, dependency.task.name.to_s}"
@@ -18,8 +18,6 @@ EOF
18
18
  rbbt_usage and exit 0 if options[:help]
19
19
 
20
20
  locks = Rbbt.locks
21
- sensiblewrites = Rbbt.sensiblewrites
22
- persists = Rbbt.persists
23
21
 
24
22
  puts Log.color(:magenta, "# System clean")
25
23
  puts
@@ -27,14 +25,15 @@ if locks.any?
27
25
  puts Log.color(:magenta, "Locks: #{locks.length}")
28
26
  locks.each do |lock|
29
27
  pid, ppid, time = Rbbt.load_lock(lock)
30
- if not Misc.pid_exists? pid
28
+ if File.exists?(lock) and not Misc.pid_exists? pid
31
29
  puts " Removing #{ lock }"
32
- FileUtils.rm lock if File.exists? lock
30
+ FileUtils.rm lock #if File.exists? lock
33
31
  end
34
32
  end
35
33
  puts
36
34
  end
37
35
 
36
+ persists = Rbbt.persists
38
37
  if persists.any?
39
38
  puts Log.color(:magenta, "Persist: #{persists.length}")
40
39
  persists.each do |persist|
@@ -49,6 +48,7 @@ if persists.any?
49
48
  puts
50
49
  end
51
50
 
51
+ sensiblewrites = Rbbt.sensiblewrites
52
52
  if sensiblewrites.any?
53
53
  puts Log.color(:magenta, "Writing: #{sensiblewrites.length}")
54
54
  sensiblewrites.each do |sensiblewrite|
@@ -65,7 +65,7 @@ end
65
65
 
66
66
  jobs = Rbbt.jobs
67
67
 
68
- puts Log.color(:magenta, "# Workflows:")
68
+ puts Log.color(:magenta, "# Workflow clean")
69
69
  puts
70
70
  jobs.each do |workflow, tasks|
71
71
  tasks.each do |task, jobs|
@@ -0,0 +1,49 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'rbbt-util'
4
+ require 'rbbt/util/simpleopt'
5
+ require 'rbbt/workflow'
6
+ require 'rbbt/monitor'
7
+
8
+ $0 = "rbbt #{$previous_commands*""} #{ File.basename(__FILE__) }" if $previous_commands
9
+
10
+ options = SOPT.setup <<EOF
11
+
12
+ Find process with deleted open files
13
+
14
+ $ rbbt system deleted_files
15
+
16
+ -h--help Print this help
17
+ EOF
18
+ rbbt_usage and exit 0 if options[:help]
19
+
20
+ pids = {}
21
+ Dir.glob('/proc/*/fd/*').each do |file|
22
+ pid = file.split('/')[-3]
23
+ begin
24
+ dest = File.readlink(file)
25
+ rescue
26
+ next
27
+ end
28
+ next if File.exists? dest
29
+ pids[pid] ||= []
30
+ pids[pid] << dest
31
+ end
32
+
33
+ pids.sort_by{|p,files| files.length}.each do |pid,files|
34
+ dirs = {}
35
+ files.each do |f|
36
+ name = File.basename(f)
37
+ dir = File.basename(File.dirname(f))
38
+ next if dir =~ /^pts|\.$/
39
+ dirs[dir] ||= []
40
+ dirs[dir] << name
41
+ end
42
+ next if dirs.empty?
43
+ puts Log.color :magenta, pid
44
+ dirs.sort_by{|dir,list| list.length}.each do |dir,list|
45
+ puts Misc.format_definition_list_item(dir, list.length.to_s)
46
+ end
47
+ end
48
+
49
+ puts "Total: #{pids.values.collect{|k,v| v}.flatten.length}"
@@ -13,12 +13,12 @@ Report the status of the system
13
13
 
14
14
  $ rbbt system status
15
15
 
16
- -u--uncomplete Print only uncompleted or error jobs
16
+ -a--all Print all jobs, not only uncompleted
17
17
  -h--help Print this help
18
18
  EOF
19
19
  rbbt_usage and exit 0 if options[:help]
20
20
 
21
- uncomplete = options.delete :uncomplete
21
+ all = options.delete :all
22
22
 
23
23
  def pid_msg(pid)
24
24
  color = if pid and Misc.pid_exists? pid
@@ -51,12 +51,10 @@ def status_msg(status)
51
51
  Log.color(color, status.to_s)
52
52
  end
53
53
 
54
- locks = Rbbt.locks
55
- sensiblewrites = Rbbt.sensiblewrites
56
- persists = Rbbt.persists
57
-
58
54
  puts Log.color(:magenta, "# System report")
59
55
  puts
56
+
57
+ locks = Rbbt.locks
60
58
  if locks.any?
61
59
  puts Log.color(:magenta, "Locks:")
62
60
  locks.sort_by{|f| File.exists?(f) ? File.ctime(f) : Time.now}.each do |lock|
@@ -68,6 +66,7 @@ if locks.any?
68
66
  puts
69
67
  end
70
68
 
69
+ persists = Rbbt.persists
71
70
  if persists.any?
72
71
  puts Log.color(:magenta, "Persist:")
73
72
  persists.sort_by{|f| File.exists?(f) ? File.ctime(f) : Time.now}.each do |persist|
@@ -78,6 +77,7 @@ if persists.any?
78
77
  puts
79
78
  end
80
79
 
80
+ sensiblewrites = Rbbt.sensiblewrites
81
81
  if sensiblewrites.any?
82
82
  puts Log.color(:magenta, "Writing:")
83
83
  sensiblewrites.sort_by{|f| File.exists?(f) ? File.ctime(f) : Time.now}.each do |sensiblewrite|
@@ -89,10 +89,10 @@ if sensiblewrites.any?
89
89
  puts
90
90
  end
91
91
 
92
- jobs = Rbbt.jobs
93
92
 
94
93
  puts Log.color(:magenta, "# Workflows")
95
- puts
94
+
95
+ jobs = Rbbt.jobs
96
96
  jobs.each do |workflow, tasks|
97
97
  tasks.each do |task, jobs|
98
98
  done = []
@@ -106,7 +106,7 @@ jobs.each do |workflow, tasks|
106
106
  other[status||"missing"] << [file, h[:pid]]
107
107
  end
108
108
  end
109
- next if uncomplete and other.empty?
109
+ next if not all and other.empty?
110
110
  puts "* " << Log.color(:magenta, workflow) << "#" << Log.color(:cyan, task) << ": " << Log.color(:blue, done.length.to_s) << " done"
111
111
  other.each do |status, list|
112
112
  files_txt = list.collect{|f,p| p.nil? ? f : (f + " (#{pid_msg p})") }
@@ -2,30 +2,77 @@ require File.join(File.expand_path(File.dirname(__FILE__)), '../../..', 'test_he
2
2
 
3
3
  require 'rbbt-util'
4
4
  require 'rbbt/util/misc/lock'
5
+ require 'rbbt/workflow'
5
6
 
6
7
  class TestLock < Test::Unit::TestCase
7
8
  def __test_stress
8
- size = 1000000
9
- num = 50
10
- cpus = 200
11
- TmpFile.with_file do |dir|
12
- TSV.traverse (0..size).to_a, :cpus => cpus, :type => :array, :bar => true do |i|
13
- begin
14
- v = rand(num)
15
- file = File.join(dir, "file-" << v.to_s)
16
- Persist.persist("foo", :string, :file => file, :update => true) do
17
- Process.pid.to_s
9
+ end
10
+ end
11
+
12
+ if __FILE__ == $0
13
+ def deleted(pid = Process.pid)
14
+ begin
15
+ txt = `ls -la /proc/#{pid}/fd |grep deleted`
16
+ puts Log.color(:magenta, [pid, txt.split("\n")*", "] * ": ")
17
+ rescue Exception
18
+ Log.exception $!
19
+ end
20
+ end
21
+
22
+ cpus = 10
23
+ file = "/tmp/test.lock"
24
+
25
+ pids = []
26
+ cpus.times do
27
+ pids << Process.fork do
28
+ while true do
29
+ Lockfile.new file do
30
+ Lockfile.new file + '.1' do
18
31
  end
32
+ File.open(file){|f| puts f.read }
33
+ end
34
+ deleted
35
+ end
36
+ end
37
+ end
38
+
39
+
40
+
41
+ exit
42
+ size = 1000000
43
+ num = 1
44
+ cpus = 5
19
45
 
20
- txt = `ls -la /proc/#{Process.pid}/fd |grep deleted`
21
- Open.write(file, txt)
22
- puts [Process.pid, txt.split("\n").length] * ": "
23
- rescue Exception
24
- Log.exception $!
25
- raise $!
46
+ pdb = "http://interactome3d.irbbarcelona.org/pdb.php?dataset=human&type1=interactions&type2=pdb&pdb=Q99685-Q99685-EXP-3hju.pdb1-B-0-A-0.pdb"
47
+ Workflow.require_workflow "Structure"
48
+ TmpFile.with_file do |dir|
49
+ Structure.workdir = dir
50
+ Path.setup dir
51
+ Log.severity = 4
52
+ TSV.traverse (0..size).to_a, :cpus => cpus, :type => :array, :bar => true do |i|
53
+ begin
54
+ v = rand(num).to_s
55
+ file = File.join(dir, "file-" << v.to_s)
56
+
57
+ Misc.lock file + '.produce' do
58
+ Misc.lock file do
59
+ ##job = Structure.job(:neighbour_map, v, :pdb => pdb)
60
+ #job = Translation.example_step(:translate, "Example")
61
+ #job.path = file
62
+ #if job.done?
63
+ # job.clean if rand < 0.3
64
+ #else
65
+ # job.run(true)
66
+ #end
67
+ end
26
68
  end
69
+ deleted Process.pid
70
+
71
+ rescue Exception
72
+ raise $!
27
73
  end
28
74
  end
29
75
  end
30
76
  end
31
77
 
78
+
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rbbt-util
3
3
  version: !ruby/object:Gem::Version
4
- version: 5.13.30
4
+ version: 5.13.31
5
5
  platform: ruby
6
6
  authors:
7
7
  - Miguel Vazquez
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-06-01 00:00:00.000000000 Z
11
+ date: 2014-06-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -247,6 +247,7 @@ files:
247
247
  - share/rbbt_commands/stat/log
248
248
  - share/rbbt_commands/study/task
249
249
  - share/rbbt_commands/system/clean
250
+ - share/rbbt_commands/system/deleted_files
250
251
  - share/rbbt_commands/system/purge
251
252
  - share/rbbt_commands/system/report
252
253
  - share/rbbt_commands/system/status