union_station_hooks_core 2.0.0 → 2.0.1

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
- NGUzYzY0ODI2NjJhZTdjZDliOWJjOWQyZTFhZDM3MzVjODFhYWUzYw==
4
+ Mjg3MGI3ZWUzZTk0NDRmMWQyMTI5ZDJiY2JiN2U1NDk0ZjFiYTRjZA==
5
5
  data.tar.gz: !binary |-
6
- NjBjOGIzYjU3NmYwYjkzNzJhOTA4ZTU1MWJkNDQ2MmFhYzIyODZiMQ==
6
+ ZDExODg5NjdjYWVlYjNiYmYyY2ZiNTlmYTZlNGQyOTgyMTEzMTMyOQ==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- ODhmNDg4NTgwNDNjMjgwNjIyYjIwY2VjNzI1ZjZiZTI4MGUxOWE1NTZlODYy
10
- NTI1N2U4MzJkYzk0NDdkZGJhN2U5MzNjOTg3NDY5YmI2MWQwNDFlMmRhMGJk
11
- MTQyMzFiNmM0NmEyOTU1NTcyOGY4NjNhOGU3YWFjNzEzNWRlYmU=
9
+ NzRlYTIyZDc5ZTE5Zjc1ODZkNzg3YjhjMmM1MTJmZjk4OWMwZWUwMzNiOTVl
10
+ NDViNDM2ZjFmMTdjZTk5MjkzNzg0NjliM2U4MTBmOWQ1Nzg5OGE2ZDRlOTUz
11
+ YWI0NTIzNjI5NjZlYjBkMTE2NGJiYjFiZDAyMzk3MzU4MGEzOWE=
12
12
  data.tar.gz: !binary |-
13
- OTJhNDI4YzJkNjhhYTkyODc2NjNmOTllMzM2NWUwNjlhY2IxNzhhMzlkNWVj
14
- MzY0ZmJjZDlmYWVmYmRkMzNhMWRiMGFlNTAzMDRjMGI5ODJiMDk4NmFjYzAy
15
- ZTk5MzE0ZjgwZTliOTQ1NTI5YjM2OTQ3NWRiNDQyODJkZTVjNTA=
13
+ ZjEyNWM2MGVjNjg5Zjk3OGYxOWIzZTQ4NjJjMDY2ODY3NGI5N2JiYmMxNWZl
14
+ ZDM3MjdhMGVhZWY5NzU4MjQ5NzY0ZjA0MWQzNWVlZjEwNTNlNTk4ZWRlNDky
15
+ Y2Q5NWQ2ZTgzYTcyOTZmNzgxZjI1ZTQyNmE3ZmRhYjM5YWNhN2M=
@@ -151,6 +151,16 @@ module UnionStationHooks
151
151
  config[:node_name])
152
152
  end
153
153
 
154
+ def install_postfork_hook
155
+ if defined?(PhusionPassenger)
156
+ PhusionPassenger.on_event(:starting_worker_process) do |forked|
157
+ if forked
158
+ UnionStationHooks.context.clear_connection
159
+ end
160
+ end
161
+ end
162
+ end
163
+
154
164
  def install_event_pre_hook
155
165
  preprocessor = @@config[:event_preprocessor]
156
166
  if preprocessor
@@ -64,7 +64,6 @@ module UnionStationHooks
64
64
  else
65
65
  @node_name = `hostname`.strip
66
66
  end
67
- @random_dev = File.open('/dev/urandom')
68
67
 
69
68
  # This mutex protects the following instance variables, but
70
69
  # not the contents of @connection.
@@ -89,7 +88,6 @@ module UnionStationHooks
89
88
  def clear_connection
90
89
  @mutex.synchronize do
91
90
  @connection.synchronize do
92
- @random_dev = File.open('/dev/urandom') if @random_dev.closed?
93
91
  @connection.unref
94
92
  @connection = Connection.new(nil)
95
93
  end
@@ -99,7 +97,6 @@ module UnionStationHooks
99
97
  def close
100
98
  @mutex.synchronize do
101
99
  @connection.synchronize do
102
- @random_dev.close
103
100
  @connection.unref
104
101
  @connection = nil
105
102
  end
@@ -113,8 +110,6 @@ module UnionStationHooks
113
110
  raise ArgumentError, 'Group name may not be empty'
114
111
  end
115
112
 
116
- txn_id = create_txn_id
117
-
118
113
  Lock.new(@mutex).synchronize do |_lock|
119
114
  if Time.now < @next_reconnect_time
120
115
  return Transaction.new(nil, nil)
@@ -140,7 +135,7 @@ module UnionStationHooks
140
135
 
141
136
  begin
142
137
  @connection.channel.write('openTransaction',
143
- txn_id, group_name, '', category,
138
+ '', group_name, '', category,
144
139
  Utils.encoded_timestamp,
145
140
  key,
146
141
  true,
@@ -149,20 +144,21 @@ module UnionStationHooks
149
144
  if result[0] != 'status'
150
145
  raise "Expected UstRouter to respond with 'status', " \
151
146
  "but got #{result.inspect} instead"
152
- elsif result[1] == 'ok'
153
- # Do nothing
154
147
  elsif result[1] == 'error'
155
148
  if result[2]
156
149
  raise "Unable to close transaction: #{result[2]}"
157
150
  else
158
151
  raise 'Unable to close transaction (no server message given)'
159
152
  end
160
- else
153
+ elsif result[1] != 'ok'
161
154
  raise "Expected UstRouter to respond with 'ok' or 'error', " \
162
155
  "but got #{result.inspect} instead"
156
+ elsif result.size < 3
157
+ raise 'Expected UstRouter to respond with an autogenerated ' \
158
+ 'transaction ID, but got none'
163
159
  end
164
160
 
165
- return Transaction.new(@connection, txn_id)
161
+ return Transaction.new(@connection, result[2])
166
162
  rescue SystemCallError, IOError
167
163
  @connection.disconnect
168
164
  UnionStationHooks::Log.warn(
@@ -279,19 +275,5 @@ module UnionStationHooks
279
275
  process_ust_router_reply(channel,
280
276
  'UstRouter client initialization error')
281
277
  end
282
-
283
- def random_token(length)
284
- token = ''
285
- @random_dev.read(length).each_byte do |c|
286
- token << RANDOM_CHARS[c % RANDOM_CHARS.size]
287
- end
288
- token
289
- end
290
-
291
- def create_txn_id
292
- result = (Time.now.to_i / 60).to_s(36)
293
- result << "-#{random_token(11)}"
294
- result
295
- end
296
278
  end
297
279
  end
@@ -148,7 +148,7 @@ module UnionStationHooks
148
148
  # @return An ID to be passed later to {#log_writing_rack_body_end}.
149
149
  def log_writing_rack_body_begin
150
150
  return do_nothing_on_null(:log_writing_rack_body_begin) if null?
151
- @transaction.log_activity_begin('writing out response body')
151
+ @transaction.log_activity_begin('app writing out response body')
152
152
  nil
153
153
  end
154
154
 
@@ -162,7 +162,7 @@ module UnionStationHooks
162
162
  # @private
163
163
  def log_writing_rack_body_end(id)
164
164
  return do_nothing_on_null(:log_writing_rack_body_end) if null?
165
- @transaction.log_activity_end('writing out response body')
165
+ @transaction.log_activity_end('app writing out response body')
166
166
  nil
167
167
  end
168
168
 
@@ -159,7 +159,8 @@ module UnionStationHooks
159
159
  do_nothing_on_null(:log_benchmark_block)
160
160
  yield
161
161
  else
162
- log_user_activity_block("Benchmark: #{title}", &block)
162
+ @transaction.log_activity_block(next_benchmark_name,
163
+ title, &block)
163
164
  end
164
165
  end
165
166
 
@@ -283,6 +284,12 @@ module UnionStationHooks
283
284
  "user activity #{result}"
284
285
  end
285
286
 
287
+ def next_benchmark_name
288
+ result = @next_benchmark_number
289
+ @next_benchmark_number += 1
290
+ "benchmark #{result}"
291
+ end
292
+
286
293
  def next_database_query_name
287
294
  result = @next_database_query_number
288
295
  @next_database_query_number += 1
@@ -113,6 +113,7 @@ module UnionStationHooks
113
113
  @transaction = continue_transaction
114
114
  @next_view_rendering_number = 1
115
115
  @next_user_activity_number = 1
116
+ @next_benchmark_number = 1
116
117
  @next_database_query_number = 1
117
118
  end
118
119
 
@@ -39,6 +39,6 @@
39
39
  {
40
40
  :major => 2,
41
41
  :minor => 0,
42
- :tiny => 0,
43
- :string => '2.0.0'
42
+ :tiny => 1,
43
+ :string => '2.0.1'
44
44
  }
@@ -163,6 +163,7 @@ module UnionStationHooks
163
163
  finalize_and_validate_config
164
164
  require_lib('api')
165
165
  create_context
166
+ install_postfork_hook
166
167
  install_event_pre_hook
167
168
  initialize_other_union_station_hooks_gems
168
169
  finalize_install
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: union_station_hooks_core
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.0
4
+ version: 2.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Hongli Lai
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-09-15 00:00:00.000000000 Z
11
+ date: 2015-09-25 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: Union Station Ruby hooks core code.
14
14
  email: info@phusion.nl