jp 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,50 @@
1
+ # Unlock pool entries that have been lcoked for longer than the timer
2
+ require 'jp/thrift'
3
+ require 'jp/server/mongo_connection'
4
+ require 'jp/server/pools'
5
+
6
+ require 'mongo'
7
+ require 'rev'
8
+
9
+ module Jp
10
+ module Server
11
+ class Unlocker
12
+ include MongoConnection
13
+ include Pools
14
+ def initialize options = {}
15
+ load_pools(options)
16
+ connect_to_mongo(options)
17
+ end
18
+
19
+ def clean pool_name
20
+ raise Jp::NoSuchPool unless @pools.member? pool_name
21
+ @database[pool_name].update(
22
+ {
23
+ 'locked_until' => { '$lte' => Time.new.to_i }
24
+ },
25
+ {
26
+ '$set' => { 'locked' => false }
27
+ },
28
+ multi: true
29
+ )
30
+ end
31
+
32
+ def run
33
+ l = Rev::Loop.new
34
+ @pools.each do |name, data|
35
+ t = Rev::TimerWatcher.new data[:cleanup_interval], true
36
+ def t.on_timer &block
37
+ if block_given?
38
+ @block = block
39
+ else
40
+ @block.call
41
+ end
42
+ end
43
+ t.on_timer { clean name }
44
+ t.attach l
45
+ end
46
+ l.run
47
+ end
48
+ end
49
+ end
50
+ end
@@ -0,0 +1,4 @@
1
+ $LOAD_PATH.unshift File.dirname(__FILE__) + '/gen-rb'
2
+ require 'job_pool'
3
+ require 'job_pool_instrumented'
4
+ $LOAD_PATH.shift
metadata ADDED
@@ -0,0 +1,113 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: jp
3
+ version: !ruby/object:Gem::Version
4
+ prerelease:
5
+ version: 0.0.2
6
+ platform: ruby
7
+ authors:
8
+ - Fred Emmott
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+
13
+ date: 2011-05-16 00:00:00 +01:00
14
+ default_executable:
15
+ dependencies:
16
+ - !ruby/object:Gem::Dependency
17
+ name: thrift
18
+ prerelease: false
19
+ requirement: &id001 !ruby/object:Gem::Requirement
20
+ none: false
21
+ requirements:
22
+ - - ~>
23
+ - !ruby/object:Gem::Version
24
+ version: 0.6.0
25
+ type: :runtime
26
+ version_requirements: *id001
27
+ - !ruby/object:Gem::Dependency
28
+ name: mongo
29
+ prerelease: false
30
+ requirement: &id002 !ruby/object:Gem::Requirement
31
+ none: false
32
+ requirements:
33
+ - - ~>
34
+ - !ruby/object:Gem::Version
35
+ version: 1.3.1
36
+ type: :runtime
37
+ version_requirements: *id002
38
+ - !ruby/object:Gem::Dependency
39
+ name: rev
40
+ prerelease: false
41
+ requirement: &id003 !ruby/object:Gem::Requirement
42
+ none: false
43
+ requirements:
44
+ - - ~>
45
+ - !ruby/object:Gem::Version
46
+ version: 0.3.2
47
+ type: :runtime
48
+ version_requirements: *id003
49
+ description: Ruby components of jp - client and server
50
+ email:
51
+ - mail@fredemmott.co.uk
52
+ executables:
53
+ - jp-stats
54
+ - jp
55
+ - jp-pool-size
56
+ - jp-unlocker
57
+ extensions: []
58
+
59
+ extra_rdoc_files: []
60
+
61
+ files:
62
+ - bin/jp-stats
63
+ - bin/jp
64
+ - bin/jp-pool-size
65
+ - bin/jp-unlocker
66
+ - lib/rb/jp/producer.rb
67
+ - lib/rb/jp/thrift.rb
68
+ - lib/rb/jp/client.rb
69
+ - lib/rb/jp/gen-rb/fb303_constants.rb
70
+ - lib/rb/jp/gen-rb/facebook_service.rb
71
+ - lib/rb/jp/gen-rb/jp_types.rb
72
+ - lib/rb/jp/gen-rb/fb303_types.rb
73
+ - lib/rb/jp/gen-rb/job_pool.rb
74
+ - lib/rb/jp/gen-rb/jp_constants.rb
75
+ - lib/rb/jp/gen-rb/job_pool_instrumented.rb
76
+ - lib/rb/jp/server/unlocker.rb
77
+ - lib/rb/jp/server/instrumented_server.rb
78
+ - lib/rb/jp/server/pools.rb
79
+ - lib/rb/jp/server/configuration_loader.rb
80
+ - lib/rb/jp/server/handler.rb
81
+ - lib/rb/jp/server/server.rb
82
+ - lib/rb/jp/server/mongo_connection.rb
83
+ - lib/rb/jp/consumer.rb
84
+ has_rdoc: true
85
+ homepage: https://github.com/fredemmott/jp
86
+ licenses: []
87
+
88
+ post_install_message:
89
+ rdoc_options: []
90
+
91
+ require_paths:
92
+ - lib/rb
93
+ required_ruby_version: !ruby/object:Gem::Requirement
94
+ none: false
95
+ requirements:
96
+ - - ">="
97
+ - !ruby/object:Gem::Version
98
+ version: "0"
99
+ required_rubygems_version: !ruby/object:Gem::Requirement
100
+ none: false
101
+ requirements:
102
+ - - ">="
103
+ - !ruby/object:Gem::Version
104
+ version: "0"
105
+ requirements: []
106
+
107
+ rubyforge_project:
108
+ rubygems_version: 1.6.2
109
+ signing_key:
110
+ specification_version: 3
111
+ summary: Simple multi-language job pool system
112
+ test_files: []
113
+