union_station_hooks_core 2.0.4 → 2.1.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: df35261b0e97879c7efaeace5392fed3d378dbf2
4
- data.tar.gz: 6b58361269c0079bf4dc41c112af455e8b978745
3
+ metadata.gz: dfc9815e53e9b9fdd1ec5ec8406c75dbe63cfad1
4
+ data.tar.gz: 9ff6e5d34e4c703e4a1a3d98272dea5e49b07cfc
5
5
  SHA512:
6
- metadata.gz: 8abba9d2d20485454a869230b2080af25333596e93a6e35bf98b06c42c30a00f5a3d49c41f40c33e1eb18c4781ee03324a44fabd5c7963402c09d41026399d2c
7
- data.tar.gz: 637063a376809286d98950e33a399b173820a26cf49a3c997a02c749b531363c382e9f2245d87700b127eef4b85a573597ffb6125984b2184eeb011b6ab0c9ff
6
+ metadata.gz: 95656628e3239ee71c71b21bf5d093150934f68dcd3cee2642d224c90f1b670304248b173b9b1d60503cd5df6ea75316a7c6a36118ccdb18870aa3624f92050c
7
+ data.tar.gz: a3fa7113d2d569c3c1c3a23dcb1efd2853bfaee3434f116b3c128a9b8e143a7f667a6018d90cdd38bcd4fba685587f8f6a4c6f641a6a416e6b4337b3cc1bad52
data/LICENSE.md CHANGED
@@ -1,4 +1,4 @@
1
- Copyright (c) 2010-2015 Phusion Holding B.V.
1
+ Copyright (c) 2010-2016 Phusion Holding B.V.
2
2
 
3
3
  Permission is hereby granted, free of charge, to any person obtaining a copy
4
4
  of this software and associated documentation files (the "Software"), to deal
@@ -118,6 +118,34 @@ module UnionStationHooks
118
118
  end
119
119
  end
120
120
 
121
+ # Logs an exception that did NOT occur during a request.
122
+ #
123
+ # This method should be used for logging exceptions outside the
124
+ # request-response cycle, e.g. exceptions in threads. If you want to
125
+ # log a request that occurred during a request, use
126
+ # {RequestReporter#log_exception} instead. That method will also log
127
+ # any related request-specific information, while this method does not.
128
+ #
129
+ # @param [Exception] exception
130
+ # @since 2.1.0
131
+ def log_exception(exception)
132
+ transaction = context.new_transaction(app_group_name, :exceptions, key)
133
+ begin
134
+ return do_nothing_on_null(:log_exception) if transaction.null?
135
+
136
+ base64_message = exception.message
137
+ base64_message = exception.to_s if base64_message.empty?
138
+ base64_message = Utils.base64(base64_message)
139
+ base64_backtrace = Utils.base64(exception.backtrace.join("\n"))
140
+
141
+ transaction.message("Message: #{base64_message}")
142
+ transaction.message("Class: #{exception.class.name}")
143
+ transaction.message("Backtrace: #{base64_backtrace}")
144
+ ensure
145
+ transaction.close
146
+ end
147
+ end
148
+
121
149
  # Returns an opaque object (a {TimePoint}) that represents a collection
122
150
  # of metrics about the current time.
123
151
  #
@@ -59,10 +59,8 @@ module UnionStationHooks
59
59
  @server_address = ust_router_address
60
60
  @username = username
61
61
  @password = password
62
- if node_name && !node_name.empty?
63
- @node_name = node_name
64
- else
65
- @node_name = `hostname`.strip
62
+ if node_name && node_name.empty?
63
+ @node_name = nil
66
64
  end
67
65
 
68
66
  # This mutex protects the following instance variables, but
@@ -271,7 +269,11 @@ module UnionStationHooks
271
269
  end
272
270
 
273
271
  def handshake_initialization(channel)
274
- channel.write('init', @node_name)
272
+ if @node_name
273
+ channel.write('init', @node_name)
274
+ else
275
+ channel.write('init')
276
+ end
275
277
  process_ust_router_reply(channel,
276
278
  'UstRouter client initialization error')
277
279
  end
@@ -166,6 +166,10 @@ module UnionStationHooks
166
166
 
167
167
  # Logs an exception that occurred during a request.
168
168
  #
169
+ # If you want to use an exception that occurred outside the
170
+ # request/response cycle, e.g. an exception that occurred in a thread,
171
+ # use {UnionStationHooks.log_exception} instead.
172
+ #
169
173
  # If {#log_controller_action_block} or {#log_controller_action}
170
174
  # was called during the same request, then the information passed to
171
175
  # those methods will be included in the exception report.
@@ -220,6 +220,24 @@ module UnionStationHooks
220
220
  end
221
221
  end
222
222
 
223
+ # Assert that the dump file eventually exists and that its contents
224
+ # eventually match the given regex.
225
+ def eventually_expect_dump_file_to_match(regex, category = 'requests')
226
+ wait_for_dump_file_existance(category)
227
+ eventually do
228
+ read_dump_file(category) =~ regex
229
+ end
230
+ end
231
+
232
+ # Assert that the dump file (if it ever exists) its contents will never match
233
+ # the given regex.
234
+ def never_expect_dump_file_to_match(regex, category = 'requests')
235
+ should_never_happen do
236
+ File.exist?(dump_file_path(category)) &&
237
+ read_dump_file(category) =~ regex
238
+ end
239
+ end
240
+
223
241
  # Makes `UnionStationHooks::Log.warn` not print anything.
224
242
  def silence_warnings
225
243
  UnionStationHooks::Log.warn_callback = lambda { |_message| }
@@ -125,7 +125,7 @@ module UnionStationHooks
125
125
  log_activity_end(name, end_time, has_error)
126
126
  end
127
127
 
128
- def close(should_flush_to_disk = false)
128
+ def close
129
129
  return if !@connection
130
130
 
131
131
  @connection.synchronize do
@@ -140,9 +140,6 @@ module UnionStationHooks
140
140
  Utils.encoded_timestamp, true)
141
141
  Utils.process_ust_router_reply(@connection.channel,
142
142
  "Error handling reply for 'closeTransaction' message")
143
- if should_flush_to_disk
144
- flush_to_disk
145
- end
146
143
  end
147
144
  ensure
148
145
  @connection.unref
@@ -175,11 +172,5 @@ module UnionStationHooks
175
172
  @connection.disconnect
176
173
  raise e
177
174
  end
178
-
179
- def flush_to_disk
180
- @connection.channel.write('flush')
181
- Utils.process_ust_router_reply(@connection.channel,
182
- "Error handling reply for 'flush' message")
183
- end
184
175
  end
185
176
  end
@@ -1,5 +1,5 @@
1
1
  # Union Station - https://www.unionstationapp.com/
2
- # Copyright (c) 2010-2015 Phusion Holding B.V.
2
+ # Copyright (c) 2010-2016 Phusion Holding B.V.
3
3
  #
4
4
  # "Union Station" and "Passenger" are trademarks of Phusion Holding B.V.
5
5
  #
@@ -38,7 +38,7 @@
38
38
 
39
39
  {
40
40
  :major => 2,
41
- :minor => 0,
42
- :tiny => 4,
43
- :string => '2.0.4'
41
+ :minor => 1,
42
+ :tiny => 1,
43
+ :string => '2.1.1'
44
44
  }
@@ -56,6 +56,7 @@ end
56
56
  # * {UnionStationHooks.begin_rack_request} and
57
57
  # {UnionStationHooks.end_rack_request}
58
58
  # * {UnionStationHooks::RequestReporter}
59
+ # * {UnionStationHooks.log_exception}
59
60
  #
60
61
  # ## Rack example
61
62
  #
@@ -323,6 +324,12 @@ module UnionStationHooks
323
324
  nil
324
325
  end
325
326
 
327
+ def log_exception(_exception)
328
+ # When `initialize!` is called, the definition in
329
+ # `api.rb` will override this implementation.
330
+ nil
331
+ end
332
+
326
333
  private
327
334
 
328
335
  def finalize_and_validate_config
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.4
4
+ version: 2.1.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-12-01 00:00:00.000000000 Z
11
+ date: 2016-02-15 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: Union Station Ruby hooks core code.
14
14
  email: info@phusion.nl
@@ -58,7 +58,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
58
58
  version: '0'
59
59
  requirements: []
60
60
  rubyforge_project:
61
- rubygems_version: 2.4.8
61
+ rubygems_version: 2.4.5.1
62
62
  signing_key:
63
63
  specification_version: 4
64
64
  summary: Union Station Ruby hooks core code