jp 0.0.2
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/bin/jp +10 -0
- data/bin/jp-pool-size +27 -0
- data/bin/jp-stats +86 -0
- data/bin/jp-unlocker +10 -0
- data/lib/rb/jp/client.rb +23 -0
- data/lib/rb/jp/consumer.rb +83 -0
- data/lib/rb/jp/gen-rb/facebook_service.rb +700 -0
- data/lib/rb/jp/gen-rb/fb303_constants.rb +8 -0
- data/lib/rb/jp/gen-rb/fb303_types.rb +18 -0
- data/lib/rb/jp/gen-rb/job_pool.rb +218 -0
- data/lib/rb/jp/gen-rb/job_pool_instrumented.rb +381 -0
- data/lib/rb/jp/gen-rb/jp_constants.rb +10 -0
- data/lib/rb/jp/gen-rb/jp_types.rb +61 -0
- data/lib/rb/jp/producer.rb +45 -0
- data/lib/rb/jp/server/configuration_loader.rb +71 -0
- data/lib/rb/jp/server/handler.rb +94 -0
- data/lib/rb/jp/server/instrumented_server.rb +87 -0
- data/lib/rb/jp/server/mongo_connection.rb +29 -0
- data/lib/rb/jp/server/pools.rb +28 -0
- data/lib/rb/jp/server/server.rb +74 -0
- data/lib/rb/jp/server/unlocker.rb +50 -0
- data/lib/rb/jp/thrift.rb +4 -0
- metadata +113 -0
@@ -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
|
data/lib/rb/jp/thrift.rb
ADDED
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
|
+
|