Skip to content

Commit e105c0e

Browse files
committed
Move AsyncActor module to Stackdriver::Core. Refactor debugger actor classes.
1 parent 26c279e commit e105c0e

10 files changed

Lines changed: 451 additions & 341 deletions

File tree

google-cloud-debugger/lib/google/cloud/debugger/agent.rb

Lines changed: 16 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -13,13 +13,13 @@
1313
# limitations under the License.
1414

1515

16-
require "google/cloud/debugger/async_actor"
1716
require "google/cloud/debugger/breakpoint_manager"
1817
require "google/cloud/debugger/debuggee"
1918
require "google/cloud/debugger/debugger_c"
2019
require "google/cloud/debugger/tracer"
2120
require "google/cloud/debugger/transmitter"
2221
require "google/cloud/logging"
22+
require "stackdriver/core/async_actor"
2323

2424
module Google
2525
module Cloud
@@ -53,7 +53,7 @@ class Agent
5353

5454
##
5555
# @private Debugger Agent is an asynchronous actor
56-
include AsyncActor
56+
include Stackdriver::Core::AsyncActor
5757

5858
##
5959
# @private The gRPC Service object.
@@ -120,6 +120,9 @@ def initialize service, logger: nil, module_name:, module_version:
120120
@transmitter = Transmitter.new self, service
121121

122122
@logger = logger || default_logger
123+
124+
# Agent actor thread needs to force exit immediately.
125+
set_cleanup_options timeout: 0
123126
end
124127

125128
##
@@ -167,6 +170,13 @@ def run_backgrounder
167170
@last_exception = e
168171
end
169172

173+
##
174+
# @private Callback function to be invoked when the agent actor is about
175+
# to be stopped.
176+
def cleanup_callback
177+
tracer.stop
178+
end
179+
170180
private
171181

172182
##
@@ -197,19 +207,10 @@ def ensure_debuggee_registration
197207
end
198208

199209
##
200-
# @private Override AsyncActor#async_stop to immediately kill the child
201-
# thread instead of waiting for it to return, because the breakpoints
202-
# are queried with a hanging long poll mechanism.
203-
def async_stop
204-
@startup_lock.synchronize do
205-
unless @thread.nil?
206-
tracer.stop
207-
208-
@async_state = :stopped
209-
@thread.kill
210-
@thread.join
211-
end
212-
end
210+
# @private Override the #backgrounder_stoppable? method from AsyncActor
211+
# module. The actor can be stopped unconditionally.
212+
def backgrounder_stoppable?
213+
true
213214
end
214215

215216
##

google-cloud-debugger/lib/google/cloud/debugger/async_actor.rb

Lines changed: 0 additions & 290 deletions
This file was deleted.

0 commit comments

Comments
 (0)