infopark-politics 0.9.1 → 0.9.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- MGZiNDg1MmIzMTVmNzM0NGU5M2JlNDYwYzRjMzIzODllYzE4OTNlNQ==
4
+ MmIyOTRhYmEzNGNlMzk5NzdiYjFkYjc1MDliM2VhYmM5ODcyZWM1Zg==
5
5
  data.tar.gz: !binary |-
6
- MjlhZmI1NjQ0YWY3NThkN2FkMTBlNmI0OTFkMTk0YTI2ZTZlZTQwNQ==
6
+ ZjA5NmU1NTU1ODI5ODBjZjM1OGIwZDZmNzk4Njc2ZGFmODU0NTUyOA==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- NDIzZTk1OGRjNmU5NTc3MzIwOTY5YWY0OWJhYzRhMjBhYjk0ZWM3OWQ2MTU0
10
- MjA4ZWRkMzliY2UzODVhNzIxMjg2OWIzYTZlZDk4NmU2OWY5YzM4YmNkNzk0
11
- NDAxN2QzZWU3NDFmYmQzMmQ4ZTIzOGFlZGJkMWFiODZiOWNmOGQ=
9
+ Y2I3NWIzNDU1Yzk0NzBlODM0NmYxZDFiMzA1YjBhNjA4NDBlMjY1ODgwMGQw
10
+ Y2E4YWJmNjJjMTU0Njk2MjE3ZTgwYzBjODA4ZGMzNWQ3YmU4MzAzMzY4ZTYw
11
+ NDM5ZjkzMGY3NzM1ZTY3YWY2OTgzMjU0NzhiMjczMWQ5NjUyMjA=
12
12
  data.tar.gz: !binary |-
13
- ZjA5NTU1YzAzMTI4ZGM0MDQ0ZGYyY2QwMWMzOGIyODExMGZiNDVjNzNkYWU2
14
- Y2NiNTQ3ZTZiNTJmZWQwNGI4MzI0ZmRkN2M4Zjg3NWMxYzFkNDlhMGMzM2U1
15
- MTUzZjJhMzExNWU1MjE2ZGMyMjRhYjY2NzhhMjYxZjYwYTA2NDg=
13
+ ZTUzY2YwMGZiY2I1YTY2YmM1MGQyNzE2NzQ5NmUwZGE1YjRmODY1YTI5NzNh
14
+ ZmE0ZDgxMGMzOGRhZGY5NGNhMDhmMWZhNzFhMTNjN2NlZDYwNTQ5ZmQ2MzRh
15
+ OTYxODIzY2YxZTJhNjJlOTljMGVhNDQxZWRmMjg5YmRmNDRkN2Q=
@@ -6,7 +6,7 @@ end
6
6
 
7
7
  Gem::Specification.new do |gem|
8
8
  gem.name = "infopark-politics"
9
- gem.version = "0.9.1"
9
+ gem.version = "0.9.2"
10
10
  gem.summary = "Algorithms and Tools for Distributed Computing in Ruby."
11
11
  gem.description = ""
12
12
  gem.authors = ["Mike Perham", "Tilo Prütz"]
@@ -1,18 +1,3 @@
1
1
  # encoding: utf-8
2
+ require_relative 'politics/logger'
2
3
  require_relative 'politics/static_queue_worker'
3
-
4
- module Politics
5
-
6
- def self.log=(value)
7
- @log = log
8
- end
9
-
10
- def self.log
11
- @log ||= if defined?(RAILS_DEFAULT_LOGGER)
12
- RAILS_DEFAULT_LOGGER
13
- else
14
- require 'logger'
15
- Logger.new(STDOUT)
16
- end
17
- end
18
- end
@@ -0,0 +1,28 @@
1
+ require 'logger'
2
+
3
+ class Logger
4
+ def context(tag)
5
+ tags.push(tag)
6
+ yield
7
+ ensure
8
+ tags.pop
9
+ end
10
+
11
+ private
12
+
13
+ def formatter
14
+ proc do |severity, datetime, progname, msg|
15
+ "#{severity[0].upcase}"\
16
+ " [#{datetime.strftime("%Y-%m-%d %H:%M:%S.%3N")} #{Process.pid}] #{progname}:"\
17
+ "#{
18
+ unless tags.empty
19
+ " [#{tags.join("][")}]"
20
+ end
21
+ } #{msg}"
22
+ end
23
+ end
24
+
25
+ def tags
26
+ @tags ||= []
27
+ end
28
+ end
@@ -56,19 +56,25 @@ module Politics
56
56
  if leader?(worker_memcache_client) && !(@leader_thread && @leader_thread.alive?)
57
57
  unless (@leader_thread && @leader_thread.alive?)
58
58
  @leader_thread = Thread.new do
59
- leader_memcache_client = client_for(memcache_config)
60
- perform_leader_duties(leader_memcache_client)
59
+ log.context("leader") do
60
+ leader_memcache_client = client_for(memcache_config)
61
+ perform_leader_duties(leader_memcache_client)
62
+ end
61
63
  end
62
64
  end
63
65
  end
64
66
 
65
- # Get a bucket from the leader and process it
66
- begin
67
- log.debug "getting bucket request from leader (#{leader_uri(worker_memcache_client)}) and processing it"
68
- bucket_process(*leader(worker_memcache_client).bucket_request(uri, bucket_request_context), &block)
69
- rescue DRb::DRbError => dre
70
- log.error { "Error talking to leader: #{dre.message}" }
71
- relax until_next_iteration
67
+ log.context("worker") do
68
+ # Get a bucket from the leader and process it
69
+ begin
70
+ log.debug "getting bucket request from leader (#{
71
+ leader_uri(worker_memcache_client)}) and processing it"
72
+ bucket_process(*leader(worker_memcache_client).bucket_request(uri,
73
+ bucket_request_context), &block)
74
+ rescue DRb::DRbError => dre
75
+ log.error { "Error talking to leader: #{dre.message}" }
76
+ relax until_next_iteration
77
+ end
72
78
  end
73
79
  rescue Dalli::DalliError => e
74
80
  log.error { "Unexpected DalliError: #{e.message}" }
@@ -133,21 +139,23 @@ module Politics
133
139
  end
134
140
 
135
141
  def bucket_request(requestor_uri, context)
136
- memcache_client = client_for(memcache_config)
137
- if leader?(memcache_client)
138
- log.debug "delivering bucket request"
139
- bucket_spec = next_bucket(requestor_uri, context)
140
- if !bucket_spec[0] && @followers_to_stop.include?(requestor_uri)
141
- # the leader stops its own process and must not be killed by its worker
142
- if requestor_uri != uri
143
- bucket_spec = [:stop, 0]
142
+ log.context("drb") do
143
+ memcache_client = client_for(memcache_config)
144
+ if leader?(memcache_client)
145
+ log.debug "delivering bucket request"
146
+ bucket_spec = next_bucket(requestor_uri, context)
147
+ if !bucket_spec[0] && @followers_to_stop.include?(requestor_uri)
148
+ # the leader stops its own process and must not be killed by its worker
149
+ if requestor_uri != uri
150
+ bucket_spec = [:stop, 0]
151
+ end
152
+ @followers_to_stop.delete(requestor_uri)
144
153
  end
145
- @followers_to_stop.delete(requestor_uri)
154
+ bucket_spec
155
+ else
156
+ log.debug "received request for bucket but am not leader - delivering :not_leader"
157
+ [:not_leader, 0]
146
158
  end
147
- bucket_spec
148
- else
149
- log.debug "received request for bucket but am not leader - delivering :not_leader"
150
- [:not_leader, 0]
151
159
  end
152
160
  end
153
161
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: infopark-politics
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.1
4
+ version: 0.9.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mike Perham
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2015-04-23 00:00:00.000000000 Z
12
+ date: 2015-04-24 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rspec
@@ -100,6 +100,7 @@ files:
100
100
  - dcc_config.rb
101
101
  - infopark-politics.gemspec
102
102
  - lib/politics.rb
103
+ - lib/politics/logger.rb
103
104
  - lib/politics/static_queue_worker.rb
104
105
  - spec/spec_helper.rb
105
106
  - spec/static_queue_worker_spec.rb