isono 0.2.11 → 0.2.12
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.
- data/isono.gemspec +3 -3
- data/lib/isono/models/job_state.rb +1 -0
- data/lib/isono/node_modules/job_channel.rb +3 -1
- data/lib/isono/node_modules/job_collector.rb +1 -1
- data/lib/isono/node_modules/job_worker.rb +11 -9
- data/lib/isono/node_modules/rpc_channel.rb +4 -7
- data/lib/isono/rack/job.rb +1 -0
- data/lib/isono/runner/rpc_server.rb +6 -0
- data/lib/isono/version.rb +1 -1
- metadata +47 -17
data/isono.gemspec
CHANGED
@@ -2,11 +2,11 @@
|
|
2
2
|
|
3
3
|
Gem::Specification.new do |s|
|
4
4
|
s.name = "isono"
|
5
|
-
s.version = "0.2.
|
5
|
+
s.version = "0.2.12"
|
6
6
|
|
7
7
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
8
8
|
s.authors = ["axsh Ltd.", "Masahiro Fujiwara"]
|
9
|
-
s.date = "2012-
|
9
|
+
s.date = "2012-06-05"
|
10
10
|
s.email = ["dev@axsh.net", "m-fujiwara@axsh.net"]
|
11
11
|
s.executables = ["cli"]
|
12
12
|
s.files = [".gitignore", "LICENSE", "NOTICE", "Rakefile", "bin/cli", "isono.gemspec", "lib/ext/shellwords.rb", "lib/isono.rb", "lib/isono/amqp_client.rb", "lib/isono/daemonize.rb", "lib/isono/event_delegate_context.rb", "lib/isono/event_observable.rb", "lib/isono/logger.rb", "lib/isono/manifest.rb", "lib/isono/messaging_client.rb", "lib/isono/models/event_log.rb", "lib/isono/models/job_state.rb", "lib/isono/models/node_state.rb", "lib/isono/models/resource_instance.rb", "lib/isono/node.rb", "lib/isono/node_modules/base.rb", "lib/isono/node_modules/data_store.rb", "lib/isono/node_modules/event_channel.rb", "lib/isono/node_modules/event_logger.rb", "lib/isono/node_modules/job_channel.rb", "lib/isono/node_modules/job_collector.rb", "lib/isono/node_modules/job_worker.rb", "lib/isono/node_modules/node_collector.rb", "lib/isono/node_modules/node_heartbeat.rb", "lib/isono/node_modules/rpc_channel.rb", "lib/isono/rack.rb", "lib/isono/rack/builder.rb", "lib/isono/rack/data_store.rb", "lib/isono/rack/job.rb", "lib/isono/rack/map.rb", "lib/isono/rack/object_method.rb", "lib/isono/rack/proc.rb", "lib/isono/rack/thread_pass.rb", "lib/isono/resource_manifest.rb", "lib/isono/runner/base.rb", "lib/isono/runner/cli.rb", "lib/isono/runner/rpc_server.rb", "lib/isono/serializer.rb", "lib/isono/thread_pool.rb", "lib/isono/util.rb", "lib/isono/version.rb", "spec/amqp_client_spec.rb", "spec/event_observable_spec.rb", "spec/file_channel_spec.rb", "spec/job_channel_spec.rb", "spec/logger_spec.rb", "spec/manifest_spec.rb", "spec/node_spec.rb", "spec/resource_loader_spec.rb", "spec/rpc_channel_spec.rb", "spec/spec_helper.rb", "spec/thread_pool_spec.rb", "spec/util_spec.rb", "tasks/load_resource_manifest.rake"]
|
@@ -14,7 +14,7 @@ Gem::Specification.new do |s|
|
|
14
14
|
s.require_paths = ["lib"]
|
15
15
|
s.required_ruby_version = Gem::Requirement.new(">= 1.8.7")
|
16
16
|
s.rubyforge_project = "isono"
|
17
|
-
s.rubygems_version = "1.8.
|
17
|
+
s.rubygems_version = "1.8.24"
|
18
18
|
s.summary = "Messaging and agent fabric"
|
19
19
|
|
20
20
|
if s.respond_to? :specification_version then
|
@@ -13,6 +13,7 @@ module Isono
|
|
13
13
|
primary_key :id, :type => Integer, :auto_increment=>true, :unsigned=>true
|
14
14
|
column :job_id, :varchar, :size=>80, :null=>false
|
15
15
|
column :parent_job_id, :varchar, :size=>80, :null=>true
|
16
|
+
column :session_id, :varchar, :size=>80, :null=>true
|
16
17
|
column :node_id, :varchar, :size=>80, :null=>false
|
17
18
|
column :state, :varchar, :size=>10, :null=>false
|
18
19
|
column :message, :text, :null=>false, :default=>''
|
@@ -53,12 +53,14 @@ module Isono
|
|
53
53
|
req = rpc.request("job.#{endpoint}", command, *args) { |req|
|
54
54
|
req.timeout_sec = config_section.timeout_sec
|
55
55
|
req.request[:job_id] = Util.gen_id
|
56
|
-
|
56
|
+
req.request[:session_id] = req.request[:job_id]
|
57
|
+
|
57
58
|
# A job is working on this current thread if cur_job_ctx is
|
58
59
|
# not nil. Let the new job know the current job ID
|
59
60
|
# as its parent job ID.
|
60
61
|
if cur_job_ctx
|
61
62
|
req.request[:parent_job_id] = cur_job_ctx.job_id
|
63
|
+
req.request[:session_id] = cur_job_ctx.session_id
|
62
64
|
end
|
63
65
|
|
64
66
|
blk ? blk.call(req) : req.synchronize
|
@@ -21,7 +21,7 @@ module Isono
|
|
21
21
|
params = @req.args[0]
|
22
22
|
params[:node_id]=@req.sender
|
23
23
|
job =Models::JobState.new
|
24
|
-
job.set_fields(params, [:job_id, :parent_job_id, :node_id, :state]).save
|
24
|
+
job.set_fields(params, [:job_id, :parent_job_id, :session_id, :node_id, :state]).save
|
25
25
|
end
|
26
26
|
|
27
27
|
def update
|
@@ -1,4 +1,5 @@
|
|
1
1
|
# -*- coding: utf-8 -*-
|
2
|
+
require 'ostruct'
|
2
3
|
|
3
4
|
module Isono
|
4
5
|
module NodeModules
|
@@ -116,13 +117,14 @@ module Isono
|
|
116
117
|
attr_reader :state
|
117
118
|
|
118
119
|
def initialize()
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
120
|
+
job_id = Util.gen_id
|
121
|
+
super({:job_id => job_id,
|
122
|
+
:parent_job_id => nil,
|
123
|
+
:session_id => job_id,
|
124
|
+
:started_at => nil,
|
125
|
+
:finished_at => nil,
|
126
|
+
:finish_status => nil,
|
124
127
|
})
|
125
|
-
|
126
128
|
@run_cb=proc{}
|
127
129
|
@fail_cb=nil
|
128
130
|
|
@@ -134,11 +136,11 @@ module Isono
|
|
134
136
|
when [:on_start, :init]
|
135
137
|
@state = :running
|
136
138
|
self.started_at = Time.now
|
137
|
-
logger.info("Job start #{job_id}")
|
139
|
+
logger.info("Job start #{session_id} (Local ID: #{job_id})")
|
138
140
|
when [:on_done, :running]
|
139
141
|
@state = :done
|
140
142
|
self.finished_at = Time.now
|
141
|
-
logger.info("Job complete #{job_id}: #{elapsed_time} sec")
|
143
|
+
logger.info("Job complete #{session_id} (Local ID: #{job_id}): #{elapsed_time} sec")
|
142
144
|
when [:on_fail, :running]
|
143
145
|
@state = :failed
|
144
146
|
on_fail(args[0])
|
@@ -165,7 +167,7 @@ module Isono
|
|
165
167
|
private
|
166
168
|
def on_fail(e)
|
167
169
|
self.finished_at = Time.now
|
168
|
-
logger.error("Job failed #{
|
170
|
+
logger.error("Job failed #{session_id}: #{e}")
|
169
171
|
logger.error(e)
|
170
172
|
end
|
171
173
|
|
@@ -266,13 +266,10 @@ module Isono
|
|
266
266
|
@active_requests[req.ticket] = req
|
267
267
|
end
|
268
268
|
|
269
|
-
# create receiver queue
|
270
|
-
#
|
271
|
-
|
272
|
-
|
273
|
-
amq.queue(endpoint_queue_name(req.endpoint), {:exclusive=>false, :auto_delete=>true})
|
274
|
-
@requested_endpoints[req.endpoint] = 1
|
275
|
-
end
|
269
|
+
# create receiver queue every time before publish the message.
|
270
|
+
# This helps to receive messages from the failed receiver.
|
271
|
+
amq.queue(endpoint_queue_name(req.endpoint), {:exclusive=>false, :auto_delete=>true})
|
272
|
+
@requested_endpoints[req.endpoint] = 1
|
276
273
|
|
277
274
|
amq.default_exchange.publish(Serializer.instance.marshal(req.request_hash),
|
278
275
|
{:message_id => req.ticket,
|
data/lib/isono/rack/job.rb
CHANGED
@@ -51,6 +51,7 @@ module Rack
|
|
51
51
|
job = @job_worker.start do |job|
|
52
52
|
job.job_id = req.r[:job_id]
|
53
53
|
job.parent_job_id = req.r[:parent_job_id]
|
54
|
+
job.session_id = req.r[:session_id]
|
54
55
|
job.run_cb = proc {
|
55
56
|
begin
|
56
57
|
@app.call(JobRequest.new(req.r, job), JobResponse.new(res.ctx, job))
|
@@ -37,6 +37,12 @@ module Isono
|
|
37
37
|
module RpcServer
|
38
38
|
|
39
39
|
class EndpointBuilder
|
40
|
+
def session_id
|
41
|
+
job_context.session_id
|
42
|
+
end
|
43
|
+
def job_context
|
44
|
+
Thread.current[Isono::NodeModules::JobWorker::JOB_CTX_KEY]
|
45
|
+
end
|
40
46
|
module BuildMethods
|
41
47
|
# @exmaple
|
42
48
|
# job 'command1', proc {
|
data/lib/isono/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: isono
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.12
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -10,33 +10,43 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2012-
|
13
|
+
date: 2012-06-05 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: amqp
|
17
|
-
requirement:
|
17
|
+
requirement: !ruby/object:Gem::Requirement
|
18
18
|
none: false
|
19
19
|
requirements:
|
20
|
-
- - =
|
20
|
+
- - '='
|
21
21
|
- !ruby/object:Gem::Version
|
22
22
|
version: 0.7.4
|
23
23
|
type: :runtime
|
24
24
|
prerelease: false
|
25
|
-
version_requirements:
|
25
|
+
version_requirements: !ruby/object:Gem::Requirement
|
26
|
+
none: false
|
27
|
+
requirements:
|
28
|
+
- - '='
|
29
|
+
- !ruby/object:Gem::Version
|
30
|
+
version: 0.7.4
|
26
31
|
- !ruby/object:Gem::Dependency
|
27
32
|
name: eventmachine
|
28
|
-
requirement:
|
33
|
+
requirement: !ruby/object:Gem::Requirement
|
29
34
|
none: false
|
30
35
|
requirements:
|
31
|
-
- - =
|
36
|
+
- - '='
|
32
37
|
- !ruby/object:Gem::Version
|
33
38
|
version: 1.0.0.beta.4
|
34
39
|
type: :runtime
|
35
40
|
prerelease: false
|
36
|
-
version_requirements:
|
41
|
+
version_requirements: !ruby/object:Gem::Requirement
|
42
|
+
none: false
|
43
|
+
requirements:
|
44
|
+
- - '='
|
45
|
+
- !ruby/object:Gem::Version
|
46
|
+
version: 1.0.0.beta.4
|
37
47
|
- !ruby/object:Gem::Dependency
|
38
48
|
name: statemachine
|
39
|
-
requirement:
|
49
|
+
requirement: !ruby/object:Gem::Requirement
|
40
50
|
none: false
|
41
51
|
requirements:
|
42
52
|
- - ! '>='
|
@@ -44,10 +54,15 @@ dependencies:
|
|
44
54
|
version: 1.0.0
|
45
55
|
type: :runtime
|
46
56
|
prerelease: false
|
47
|
-
version_requirements:
|
57
|
+
version_requirements: !ruby/object:Gem::Requirement
|
58
|
+
none: false
|
59
|
+
requirements:
|
60
|
+
- - ! '>='
|
61
|
+
- !ruby/object:Gem::Version
|
62
|
+
version: 1.0.0
|
48
63
|
- !ruby/object:Gem::Dependency
|
49
64
|
name: log4r
|
50
|
-
requirement:
|
65
|
+
requirement: !ruby/object:Gem::Requirement
|
51
66
|
none: false
|
52
67
|
requirements:
|
53
68
|
- - ! '>='
|
@@ -55,10 +70,15 @@ dependencies:
|
|
55
70
|
version: '0'
|
56
71
|
type: :runtime
|
57
72
|
prerelease: false
|
58
|
-
version_requirements:
|
73
|
+
version_requirements: !ruby/object:Gem::Requirement
|
74
|
+
none: false
|
75
|
+
requirements:
|
76
|
+
- - ! '>='
|
77
|
+
- !ruby/object:Gem::Version
|
78
|
+
version: '0'
|
59
79
|
- !ruby/object:Gem::Dependency
|
60
80
|
name: bacon
|
61
|
-
requirement:
|
81
|
+
requirement: !ruby/object:Gem::Requirement
|
62
82
|
none: false
|
63
83
|
requirements:
|
64
84
|
- - ! '>='
|
@@ -66,10 +86,15 @@ dependencies:
|
|
66
86
|
version: '0'
|
67
87
|
type: :development
|
68
88
|
prerelease: false
|
69
|
-
version_requirements:
|
89
|
+
version_requirements: !ruby/object:Gem::Requirement
|
90
|
+
none: false
|
91
|
+
requirements:
|
92
|
+
- - ! '>='
|
93
|
+
- !ruby/object:Gem::Version
|
94
|
+
version: '0'
|
70
95
|
- !ruby/object:Gem::Dependency
|
71
96
|
name: rake
|
72
|
-
requirement:
|
97
|
+
requirement: !ruby/object:Gem::Requirement
|
73
98
|
none: false
|
74
99
|
requirements:
|
75
100
|
- - ! '>='
|
@@ -77,7 +102,12 @@ dependencies:
|
|
77
102
|
version: '0'
|
78
103
|
type: :development
|
79
104
|
prerelease: false
|
80
|
-
version_requirements:
|
105
|
+
version_requirements: !ruby/object:Gem::Requirement
|
106
|
+
none: false
|
107
|
+
requirements:
|
108
|
+
- - ! '>='
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '0'
|
81
111
|
description:
|
82
112
|
email:
|
83
113
|
- dev@axsh.net
|
@@ -166,7 +196,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
166
196
|
version: '0'
|
167
197
|
requirements: []
|
168
198
|
rubyforge_project: isono
|
169
|
-
rubygems_version: 1.8.
|
199
|
+
rubygems_version: 1.8.24
|
170
200
|
signing_key:
|
171
201
|
specification_version: 3
|
172
202
|
summary: Messaging and agent fabric
|