rbbt-util 5.26.136 → 5.26.137

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: f0be4bffb044dc9c7b20c716ab11cff52a778a37436bf7cb1bf673ea61f773c6
4
- data.tar.gz: 29491b581677ed091db2132d41a0be22817ae907888050200453d05cdaf7394d
3
+ metadata.gz: 5517c44e5438fffb2c8e3fddbb99fef53084bbda02f74f7866fd51f8b7eadef9
4
+ data.tar.gz: 4aeba437356614ef827b9224169dfe7c84e543bf6ea5e87426bb545b71afe8ad
5
5
  SHA512:
6
- metadata.gz: 599307a512528d0b28fee11a7a3c063374ffb0805fca516ac41c4c1d0b27fd9226aafbf4753570c50178855846111aada9ad936889f49205c7708a6a88cd68bd
7
- data.tar.gz: 122fe56903f8a1f112b2ac8db43793611e7c008175dbaa0d7f091c77c1e12f6ae7ed823eaefc6aa3abefd0bc04cc1505948d10ae6fffa4d29bfb7e3da609d4e1
6
+ metadata.gz: 4d0474e8b079996176dc6f9947ec190c5b0b80cc8d0d4770f886556d69cb05fc943e04766c8679933efde4554811a0be225c5646823d31e2bd9e208a96a7dcb4
7
+ data.tar.gz: 47c703e6745fc998bef9d1304a55177a9d3607adff270061981d4c19adab11b8b8bf3ed2d7308a5e9504878bef0aad46105a47857b418b37674d924d9434c5ed
@@ -23,31 +23,33 @@ class WorkflowRemoteClient
23
23
  end
24
24
 
25
25
  def cache_file
26
- digest = Misc.obj2digest([url, task, base_name, inputs])
27
- Rbbt.var.cache.REST[digest].find
26
+ digest = Misc.obj2digest([base_url, task, base_name, inputs])
27
+ Rbbt.var.cache.REST[[task, clean_name, digest] * "."].find
28
+ end
29
+
30
+ def cache_files
31
+ Dir.glob(cache_file + '.*')
28
32
  end
29
33
 
30
34
  def run(no_load = false)
31
35
  no_load = @is_stream ? :stream : true if no_load
32
36
 
33
37
  @mutex.synchronize do
34
- @result ||= Persist.persist("REST persist", result_type, :file => cache_file) do
35
- begin
36
- if @is_exec
37
- exec(no_load)
38
- elsif no_load == :stream
39
- _run_job(:stream)
40
- elsif no_load
41
- init_job
42
- nil
43
- else
44
- init_job
45
- join
46
- self.load
47
- end
48
- ensure
49
- @started = true
38
+ begin
39
+ if @is_exec
40
+ exec(no_load)
41
+ elsif no_load == :stream
42
+ _run_job(:stream)
43
+ elsif no_load
44
+ init_job
45
+ nil
46
+ else
47
+ init_job
48
+ join
49
+ self.load
50
50
  end
51
+ ensure
52
+ @started = true
51
53
  end
52
54
  end
53
55
 
@@ -159,6 +161,7 @@ class WorkflowRemoteClient
159
161
  end
160
162
 
161
163
  def done?
164
+ return true if cache_files.any?
162
165
  init_job unless @url
163
166
  @done || status.to_s == 'done' || status.to_s == 'noinfo'
164
167
  end
@@ -25,22 +25,25 @@ module WorkflowRESTClient
25
25
  @documention ||= IndiferentHash.setup(WorkflowRESTClient.get_json(File.join(url, "documentation"),{}))
26
26
  end
27
27
 
28
+ def self.task_info(url, task)
29
+ @@task_info ||= {}
30
+
31
+ key = [url, task] * "#"
32
+ @@task_info[key] ||= begin
33
+ task_info = WorkflowRESTClient.get_json(File.join(url, task.to_s, 'info'))
34
+ task_info = WorkflowRESTClient.fix_hash(task_info)
35
+
36
+ task_info[:result_type] = task_info[:result_type].to_sym
37
+ task_info[:export] = task_info[:export].to_sym
38
+ task_info[:input_types] = WorkflowRESTClient.fix_hash(task_info[:input_types], true)
39
+ task_info[:inputs] = task_info[:inputs].collect{|input| input.to_sym }
40
+
41
+ @@task_info[key] = task_info
42
+ end
43
+ end
44
+
28
45
  def task_info(task)
29
- @task_info ||= {}
30
- @task_info[task]
31
-
32
- if @task_info[task].nil?
33
- task_info = WorkflowRESTClient.get_json(File.join(url, task.to_s, 'info'))
34
- task_info = WorkflowRESTClient.fix_hash(task_info)
35
-
36
- task_info[:result_type] = task_info[:result_type].to_sym
37
- task_info[:export] = task_info[:export].to_sym
38
- task_info[:input_types] = WorkflowRESTClient.fix_hash(task_info[:input_types], true)
39
- task_info[:inputs] = task_info[:inputs].collect{|input| input.to_sym }
40
-
41
- @task_info[task] = task_info
42
- end
43
- @task_info[task]
46
+ WorkflowRESTClient.task_info(url, task)
44
47
  end
45
48
 
46
49
  def exported_tasks
@@ -165,14 +165,16 @@ module WorkflowRESTClient
165
165
 
166
166
  def get
167
167
  params ||= {}
168
- params = params.merge(:_format => [:string, :boolean, :tsv, :annotations,:array].include?(result_type.to_sym) ? :raw : :json )
169
- Misc.insist 3, rand(2) + 1 do
170
- begin
171
- init_job if url.nil?
172
- @adaptor.get_raw(url, params)
173
- rescue
174
- Log.exception $!
175
- raise $!
168
+ params = params.merge(:_format => [:string, :boolean, :tsv, :annotations, :array].include?(result_type.to_sym) ? :raw : :json )
169
+ @cache_result ||= Persist.persist("REST persist", :binary, :file => cache_file + "." + Misc.obj2digest(params)) do
170
+ Misc.insist 3, rand(2) + 1 do
171
+ begin
172
+ init_job if url.nil?
173
+ @adaptor.get_raw(url, params)
174
+ rescue
175
+ Log.exception $!
176
+ raise $!
177
+ end
176
178
  end
177
179
  end
178
180
  end
@@ -231,7 +233,9 @@ module WorkflowRESTClient
231
233
  def _clean
232
234
  begin
233
235
  _restart
234
- Open.rm cache_file
236
+ cache_files.each do |cache_file|
237
+ Open.rm cache_file
238
+ end
235
239
  params = {:_update => :clean}
236
240
  @adaptor.clean_url(url, params) if @url
237
241
  rescue Exception
@@ -18,6 +18,7 @@ $ rbbt app start [options] <app_name>
18
18
  -s--server* Server type: thin, webrick, unicorn, etc
19
19
  -f--finder Start server with finder functionality
20
20
  -fs--file_server Activate file serving for resources
21
+ -mj--monitor_jobs Monitor jobs (UNSAFE)
21
22
  -R--Rserve_session* Rserve session to use, otherwise start new one
22
23
  -wd--workdir* Change the working directory of the workflow
23
24
  --views* Directory with view templates
@@ -62,6 +63,7 @@ Misc.in_dir(app_dir) do
62
63
  ENV["RACK_ENV"] = options[:environment] if options.include?(:environment)
63
64
  ENV["RBBT_VIEWS_DIR"] = options[:views] if options.include?(:views)
64
65
  ENV["RBBT_REST_FILE_SERVER"] = "true" if options[:file_server]
66
+ ENV["RBBT_MONITOR_REST_JOBS"] = "true" if options[:monitor_jobs]
65
67
 
66
68
 
67
69
  if options[:stream]
@@ -24,6 +24,7 @@ $ rbbt workflow server [options] <Workflow>
24
24
  --views* Directory with view templates
25
25
  --stream Activate streaming of workflow tasks
26
26
  -fs--file_server Activate file serving for resources
27
+ -mj--monitor_jobs Monitor jobs (UNSAFE)
27
28
  --export_all Export all workflow tasks (use with caution!)
28
29
  --export* Export workflow tasks (asynchronous)
29
30
  --export_asynchronous* Export workflow tasks as asynchronous
@@ -86,6 +87,7 @@ TmpFile.with_file do |app_dir|
86
87
  ENV["RACK_ENV"] = options[:environment] if options.include?(:environment)
87
88
  ENV["RBBT_VIEWS_DIR"] = options[:views] if options.include?(:views)
88
89
  ENV["RBBT_REST_FILE_SERVER"] = "true" if options[:file_server]
90
+ ENV["RBBT_MONITOR_REST_JOBS"] = "true" if options[:monitor_jobs]
89
91
 
90
92
  if options[:export_all]
91
93
  ENV["RBBT_WORKFLOW_EXPORT_ALL"] = 'true'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rbbt-util
3
3
  version: !ruby/object:Gem::Version
4
- version: 5.26.136
4
+ version: 5.26.137
5
5
  platform: ruby
6
6
  authors:
7
7
  - Miguel Vazquez