rbbt-util 5.26.136 → 5.26.137

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
  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