isono 0.2.8 → 0.2.9

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 CHANGED
@@ -2,20 +2,19 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = %q{isono}
5
- s.version = "0.2.8"
5
+ s.version = "0.2.9"
6
6
 
7
7
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
8
- s.authors = ["axsh Ltd.", "Masahiro Fujiwara"]
9
- s.date = %q{2011-08-24}
10
- s.default_executable = %q{cli}
11
- s.email = ["dev@axsh.net", "m-fujiwara@axsh.net"]
12
- s.executables = ["cli"]
13
- 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"]
8
+ s.authors = [%q{axsh Ltd.}, %q{Masahiro Fujiwara}]
9
+ s.date = %q{2011-09-20}
10
+ s.email = [%q{dev@axsh.net}, %q{m-fujiwara@axsh.net}]
11
+ s.executables = [%q{cli}]
12
+ s.files = [%q{.gitignore}, %q{LICENSE}, %q{NOTICE}, %q{Rakefile}, %q{bin/cli}, %q{isono.gemspec}, %q{lib/ext/shellwords.rb}, %q{lib/isono.rb}, %q{lib/isono/amqp_client.rb}, %q{lib/isono/daemonize.rb}, %q{lib/isono/event_delegate_context.rb}, %q{lib/isono/event_observable.rb}, %q{lib/isono/logger.rb}, %q{lib/isono/manifest.rb}, %q{lib/isono/messaging_client.rb}, %q{lib/isono/models/event_log.rb}, %q{lib/isono/models/job_state.rb}, %q{lib/isono/models/node_state.rb}, %q{lib/isono/models/resource_instance.rb}, %q{lib/isono/node.rb}, %q{lib/isono/node_modules/base.rb}, %q{lib/isono/node_modules/data_store.rb}, %q{lib/isono/node_modules/event_channel.rb}, %q{lib/isono/node_modules/event_logger.rb}, %q{lib/isono/node_modules/job_channel.rb}, %q{lib/isono/node_modules/job_collector.rb}, %q{lib/isono/node_modules/job_worker.rb}, %q{lib/isono/node_modules/node_collector.rb}, %q{lib/isono/node_modules/node_heartbeat.rb}, %q{lib/isono/node_modules/rpc_channel.rb}, %q{lib/isono/rack.rb}, %q{lib/isono/rack/builder.rb}, %q{lib/isono/rack/data_store.rb}, %q{lib/isono/rack/job.rb}, %q{lib/isono/rack/map.rb}, %q{lib/isono/rack/object_method.rb}, %q{lib/isono/rack/proc.rb}, %q{lib/isono/rack/thread_pass.rb}, %q{lib/isono/resource_manifest.rb}, %q{lib/isono/runner/base.rb}, %q{lib/isono/runner/cli.rb}, %q{lib/isono/runner/rpc_server.rb}, %q{lib/isono/serializer.rb}, %q{lib/isono/thread_pool.rb}, %q{lib/isono/util.rb}, %q{lib/isono/version.rb}, %q{spec/amqp_client_spec.rb}, %q{spec/event_observable_spec.rb}, %q{spec/file_channel_spec.rb}, %q{spec/job_channel_spec.rb}, %q{spec/logger_spec.rb}, %q{spec/manifest_spec.rb}, %q{spec/node_spec.rb}, %q{spec/resource_loader_spec.rb}, %q{spec/rpc_channel_spec.rb}, %q{spec/spec_helper.rb}, %q{spec/thread_pool_spec.rb}, %q{spec/util_spec.rb}, %q{tasks/load_resource_manifest.rake}]
14
13
  s.homepage = %q{http://github.com/axsh/isono}
15
- s.require_paths = ["lib"]
14
+ s.require_paths = [%q{lib}]
16
15
  s.required_ruby_version = Gem::Requirement.new(">= 1.8.7")
17
16
  s.rubyforge_project = %q{isono}
18
- s.rubygems_version = %q{1.6.2}
17
+ s.rubygems_version = %q{1.8.6}
19
18
  s.summary = %q{Messaging and agent fabric}
20
19
 
21
20
  if s.respond_to? :specification_version then
@@ -31,6 +31,7 @@ module Isono
31
31
  :per_sec_last_response_count=>0,
32
32
  }
33
33
  @endpoints = {}
34
+ @requested_endpoints = {}
34
35
  @amq = node.create_channel
35
36
  @amq.prefetch(config_section.receiver_prefetch_size.to_i)
36
37
  @amq.queue("command-recv.#{manifest.node_id}", {:exclusive=>true}).subscribe(:ack=>true) { |header, data|
@@ -265,6 +266,14 @@ module Isono
265
266
  @active_requests[req.ticket] = req
266
267
  end
267
268
 
269
+ # create receiver queue if it is requested at first time
270
+ # from this node. This allows that the receiver became ready
271
+ # after the sender can proceed the request.
272
+ if @requested_endpoints[req.endpoint].nil?
273
+ amq.queue(endpoint_queue_name(req.endpoint), {:exclusive=>false, :auto_delete=>true})
274
+ @requested_endpoints[req.endpoint] = 1
275
+ end
276
+
268
277
  amq.default_exchange.publish(Serializer.instance.marshal(req.request_hash),
269
278
  {:message_id => req.ticket,
270
279
  :key => endpoint_queue_name(req.endpoint),
@@ -19,6 +19,16 @@ module Rack
19
19
  def fail_cb(&blk)
20
20
  @job.fail_cb = blk
21
21
  end
22
+
23
+ # Job may run in asynchronous mode. So response() should not
24
+ # raise error even when it is called multiple times during session.
25
+ def response(msg)
26
+ if responded?
27
+ Job.logger.info("Defered response message from #{@job.job_id}: #{msg}")
28
+ else
29
+ super(msg)
30
+ end
31
+ end
22
32
  end
23
33
 
24
34
  class JobRequest < Request
data/lib/isono/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # -*- coding: utf-8 -*-
2
2
 
3
3
  module Isono
4
- VERSION='0.2.8'
4
+ VERSION='0.2.9'
5
5
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: isono
3
3
  version: !ruby/object:Gem::Version
4
- hash: 7
4
+ hash: 5
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 2
9
- - 8
10
- version: 0.2.8
9
+ - 9
10
+ version: 0.2.9
11
11
  platform: ruby
12
12
  authors:
13
13
  - axsh Ltd.
@@ -16,8 +16,7 @@ autorequire:
16
16
  bindir: bin
17
17
  cert_chain: []
18
18
 
19
- date: 2011-08-24 00:00:00 +09:00
20
- default_executable: cli
19
+ date: 2011-09-20 00:00:00 Z
21
20
  dependencies:
22
21
  - !ruby/object:Gem::Dependency
23
22
  name: amqp
@@ -181,7 +180,6 @@ files:
181
180
  - spec/thread_pool_spec.rb
182
181
  - spec/util_spec.rb
183
182
  - tasks/load_resource_manifest.rake
184
- has_rdoc: true
185
183
  homepage: http://github.com/axsh/isono
186
184
  licenses: []
187
185
 
@@ -213,7 +211,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
213
211
  requirements: []
214
212
 
215
213
  rubyforge_project: isono
216
- rubygems_version: 1.6.2
214
+ rubygems_version: 1.8.6
217
215
  signing_key:
218
216
  specification_version: 3
219
217
  summary: Messaging and agent fabric