liquid-ext 3.0.0 → 3.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile.lock +6 -12
- data/lib/liquid/boot.rb +15 -1
- data/lib/liquid/logger.rb +11 -0
- data/lib/liquid/server.rb +46 -0
- data/lib/liquid/tracker/base.rb +7 -6
- data/lib/liquid/tracker/blackhole_tracker.rb +1 -1
- data/lib/liquid/tracker/file_tracker.rb +2 -2
- data/lib/liquid/tracker/kafka_tracker.rb +2 -2
- data/lib/liquid/tracker/logger_tracker.rb +2 -2
- data/liquid-ext.gemspec +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: dfbcd20250a0066048dcab544302bca615d206dd
|
4
|
+
data.tar.gz: 8a243e57e1b841ad3d8332a7ddd40ec9d7644bdd
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: db62f25e0a6df2e7d7ed713f9835b5bb8167dcd03e64bf6cafdd386f6bcaaa036b8dfc04d1abcd07d798bc420b05cded59c827bda0e7a793d22d5ed0ec2e9c4e
|
7
|
+
data.tar.gz: ac739d492960eb506e17281fbd0548a8741c3e6f8c7495b633dfbe56bf438ed610f5451ee8e61e758b178951e481101dff8643f2963a6006de2463d34ccd038c
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
liquid-ext (3.
|
4
|
+
liquid-ext (3.1.0)
|
5
5
|
activesupport
|
6
6
|
erubis
|
7
7
|
mixlib-cli
|
@@ -16,7 +16,7 @@ GEM
|
|
16
16
|
multi_json (~> 1.3)
|
17
17
|
thread_safe (~> 0.1)
|
18
18
|
tzinfo (~> 0.3.37)
|
19
|
-
atomic (1.1.
|
19
|
+
atomic (1.1.15-java)
|
20
20
|
awesome_print (1.2.0)
|
21
21
|
bond (0.5.1-java)
|
22
22
|
brice (0.2.9)
|
@@ -24,7 +24,6 @@ GEM
|
|
24
24
|
cane (2.6.1)
|
25
25
|
parallel
|
26
26
|
coderay (1.1.0)
|
27
|
-
columnize (0.3.6)
|
28
27
|
diff-lcs (1.2.5)
|
29
28
|
docile (1.1.3)
|
30
29
|
erubis (2.7.0)
|
@@ -34,7 +33,7 @@ GEM
|
|
34
33
|
ruby-progressbar (~> 1.3)
|
35
34
|
hirb (0.7.1)
|
36
35
|
i18n (0.6.9)
|
37
|
-
liquid-development (0.2.
|
36
|
+
liquid-development (0.2.1)
|
38
37
|
awesome_print
|
39
38
|
bond
|
40
39
|
brice
|
@@ -47,7 +46,6 @@ GEM
|
|
47
46
|
rib
|
48
47
|
ripl
|
49
48
|
rspec
|
50
|
-
ruby-debug
|
51
49
|
simplecov
|
52
50
|
tailor
|
53
51
|
timecop
|
@@ -77,14 +75,10 @@ GEM
|
|
77
75
|
rspec-core (~> 2.14.0)
|
78
76
|
rspec-expectations (~> 2.14.0)
|
79
77
|
rspec-mocks (~> 2.14.0)
|
80
|
-
rspec-core (2.14.
|
78
|
+
rspec-core (2.14.8)
|
81
79
|
rspec-expectations (2.14.5)
|
82
80
|
diff-lcs (>= 1.1.3, < 2.0)
|
83
81
|
rspec-mocks (2.14.6)
|
84
|
-
ruby-debug (0.10.4)
|
85
|
-
columnize (>= 0.1)
|
86
|
-
ruby-debug-base (~> 0.10.4.0)
|
87
|
-
ruby-debug-base (0.10.4-java)
|
88
82
|
ruby-nuggets (0.9.6)
|
89
83
|
ruby-progressbar (1.4.1)
|
90
84
|
ruby2ruby (2.0.7)
|
@@ -110,8 +104,8 @@ GEM
|
|
110
104
|
tins (~> 1.0)
|
111
105
|
terminal-table (1.4.5)
|
112
106
|
text-table (1.2.3)
|
113
|
-
thread_safe (0.
|
114
|
-
atomic
|
107
|
+
thread_safe (0.2.0-java)
|
108
|
+
atomic (>= 1.1.7, < 2)
|
115
109
|
timecop (0.7.1)
|
116
110
|
tins (1.0.0)
|
117
111
|
tzinfo (0.3.38)
|
data/lib/liquid/boot.rb
CHANGED
@@ -54,14 +54,16 @@ require 'liquid/environment'
|
|
54
54
|
require 'liquid/from_file'
|
55
55
|
require 'liquid/hash_helper'
|
56
56
|
require 'liquid/metrics'
|
57
|
+
require 'liquid/server'
|
57
58
|
require 'liquid/timing'
|
59
|
+
require 'liquid/tracker'
|
58
60
|
require 'liquid/transaction_id'
|
59
61
|
require 'liquid/zmq'
|
60
62
|
|
61
63
|
# configuration callbacks
|
62
64
|
require 'liquid/logger'
|
63
65
|
reload_logger = ->(conf) do
|
64
|
-
$log
|
66
|
+
$log ||= Liquid::Logger.new("root")
|
65
67
|
end
|
66
68
|
|
67
69
|
reload_mixins = ->(conf) do
|
@@ -88,6 +90,18 @@ $conf.mixin({
|
|
88
90
|
level: :info,
|
89
91
|
format: "%d{ISO8601} %-5p #{File.basename($0)}(#{Process.pid})[%t]: %m%n",
|
90
92
|
},
|
93
|
+
tracker: {
|
94
|
+
dimensions: {},
|
95
|
+
kafka: {
|
96
|
+
enabled: false,
|
97
|
+
brokers: [
|
98
|
+
'0.0.0.0:9092'
|
99
|
+
]
|
100
|
+
},
|
101
|
+
},
|
102
|
+
zmachine: {
|
103
|
+
debug: false,
|
104
|
+
},
|
91
105
|
},
|
92
106
|
production: {
|
93
107
|
log: {
|
data/lib/liquid/logger.rb
CHANGED
@@ -14,6 +14,7 @@ module Liquid
|
|
14
14
|
@progname = progname || File.basename($0)
|
15
15
|
@logger = LoggerFactory.getLogger(name)
|
16
16
|
@exceptions = {}
|
17
|
+
@exception_handlers = [method(:_log_error_exception)]
|
17
18
|
root = org.apache.log4j.Logger.getRootLogger
|
18
19
|
appender = org.apache.log4j.ConsoleAppender.new
|
19
20
|
appender.name = "console"
|
@@ -74,7 +75,17 @@ module Liquid
|
|
74
75
|
@logger.error(format(*args))
|
75
76
|
end
|
76
77
|
|
78
|
+
def add_exception_handler(&block)
|
79
|
+
@exception_handlers << block
|
80
|
+
end
|
81
|
+
|
77
82
|
def exception(exc, message = nil, attribs = {})
|
83
|
+
@exception_handlers.each do |callback|
|
84
|
+
callback.call(exc, message, attribs)
|
85
|
+
end
|
86
|
+
end
|
87
|
+
|
88
|
+
def _log_error_exception(exc, message, attribs)
|
78
89
|
::Metrics.meter("exception:#{exc.class.to_s.tableize}").mark
|
79
90
|
@exceptions[exc.class] ||= {}
|
80
91
|
@exceptions[exc.class][exc.backtrace.first] ||= [System.nano_time, 1, 1]
|
@@ -0,0 +1,46 @@
|
|
1
|
+
require 'liquid/metrics'
|
2
|
+
require 'liquid/tracker'
|
3
|
+
|
4
|
+
module Liquid
|
5
|
+
class Server
|
6
|
+
def initialize
|
7
|
+
$log.info("#{self.class.name.downcase} #{RUBY_DESCRIPTION}")
|
8
|
+
$log.info("#{self.class.name.downcase}", env: Env.mode)
|
9
|
+
initialize_tracker
|
10
|
+
initialize_metrics
|
11
|
+
end
|
12
|
+
|
13
|
+
def initialize_tracker
|
14
|
+
if $conf.tracker.kafka.enabled
|
15
|
+
# http://kafka.apache.org/documentation.html#producerconfigs
|
16
|
+
properties = java.util.Properties.new
|
17
|
+
properties['metadata.broker.list'] = $conf.tracker.kafka.brokers.join(',')
|
18
|
+
properties['producer.type'] = 'async'
|
19
|
+
properties['serializer.class'] = 'kafka.serializer.StringEncoder'
|
20
|
+
$tracker = ::Tracker::KafkaTracker.new(properties, $conf.tracker.dimensions)
|
21
|
+
else
|
22
|
+
$tracker = ::Tracker::LoggerTracker.new($conf.tracker.dimensions)
|
23
|
+
end
|
24
|
+
Signal.register_shutdown_handler { $tracker.shutdown }
|
25
|
+
end
|
26
|
+
|
27
|
+
def initialize_metrics
|
28
|
+
::Metrics.start
|
29
|
+
::Metrics::TrackerReporter.new($tracker.with_topic('metrics'))
|
30
|
+
Signal.register_shutdown_handler { ::Metrics.stop }
|
31
|
+
end
|
32
|
+
|
33
|
+
def initialize_zmachine
|
34
|
+
ZMachine.logger = $log
|
35
|
+
ZMachine.debug = true if $conf.zmachine.debug
|
36
|
+
ZMachine.heartbeat_interval = 0.1
|
37
|
+
Signal.register_shutdown_handler { ZMachine.stop }
|
38
|
+
end
|
39
|
+
|
40
|
+
def run
|
41
|
+
# by default wait for all workers
|
42
|
+
Thread.join
|
43
|
+
end
|
44
|
+
|
45
|
+
end
|
46
|
+
end
|
data/lib/liquid/tracker/base.rb
CHANGED
@@ -2,25 +2,26 @@ require 'liquid/tracker/json_serializer'
|
|
2
2
|
|
3
3
|
module Tracker
|
4
4
|
class Base
|
5
|
-
attr_accessor :
|
5
|
+
attr_accessor :dimensions
|
6
6
|
|
7
7
|
def initialize(dimensions = {})
|
8
|
-
@
|
8
|
+
@dimensions = dimensions
|
9
9
|
end
|
10
10
|
|
11
|
-
def with_topic(topic)
|
12
|
-
Topic.new(topic, self)
|
11
|
+
def with_topic(topic, serializer = nil)
|
12
|
+
Topic.new(topic, self, serializer)
|
13
13
|
end
|
14
14
|
end
|
15
15
|
|
16
16
|
class Topic
|
17
|
-
def initialize(topic, tracker)
|
17
|
+
def initialize(topic, tracker, serializer = nil)
|
18
18
|
@topic = topic
|
19
19
|
@tracker = tracker
|
20
|
+
@serializer = (serializer || JsonSerializer).new(tracker.dimensions)
|
20
21
|
end
|
21
22
|
|
22
23
|
def event(obj)
|
23
|
-
@tracker.event(
|
24
|
+
@tracker.event(@topic, @serializer.dump(obj))
|
24
25
|
end
|
25
26
|
end
|
26
27
|
end
|
@@ -3,10 +3,10 @@ require 'liquid/tracker/base'
|
|
3
3
|
module Tracker
|
4
4
|
class FileTracker < Base
|
5
5
|
|
6
|
-
def event(
|
6
|
+
def event(topic, data)
|
7
7
|
file = File.open(File.join(ROOT, 'log', "tracker-#{topic}.log"), 'a')
|
8
8
|
file.sync = true
|
9
|
-
file.write(
|
9
|
+
file.write(data)
|
10
10
|
file.write("\n")
|
11
11
|
file.close
|
12
12
|
end
|
@@ -24,8 +24,8 @@ module Tracker
|
|
24
24
|
false
|
25
25
|
end
|
26
26
|
|
27
|
-
def event(
|
28
|
-
@producer.send(KeyedMessage.new(topic,
|
27
|
+
def event(topic, data)
|
28
|
+
@producer.send(KeyedMessage.new(topic, data))
|
29
29
|
rescue => e
|
30
30
|
# TODO: maybe fall back to FileTracker here
|
31
31
|
$log.exception(e, "failed to log event=#{obj.inspect}")
|
data/liquid-ext.gemspec
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: liquid-ext
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.
|
4
|
+
version: 3.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- LiquidM, Inc.
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-02-
|
11
|
+
date: 2014-02-28 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -117,6 +117,7 @@ files:
|
|
117
117
|
- lib/liquid/priority_selector.rb
|
118
118
|
- lib/liquid/router.rb
|
119
119
|
- lib/liquid/scala-library-2.10.3.jar
|
120
|
+
- lib/liquid/server.rb
|
120
121
|
- lib/liquid/slf4j-api-1.7.6.jar
|
121
122
|
- lib/liquid/slf4j-log4j12-1.7.6.jar
|
122
123
|
- lib/liquid/snappy-java-1.1.1-M1.jar
|