Joseph Wu created MESOS-3910:
--------------------------------
Summary: Libprocess: Implement cleanup of the SocketManager in
process::finalize
Key: MESOS-3910
URL: https://issues.apache.org/jira/browse/MESOS-3910
Project: Mesos
Issue Type: Task
Components: libprocess, test
Reporter: Joseph Wu
Assignee: Joseph Wu
The {{socket_manager}} and {{process_manager}} are intricately tied together.
Currently, only the {{process_manager}} is cleaned up by {{process::finalize}}.
To clean up the {{socket_manager}}, we must close all sockets and deallocate
any existing {{HttpProxy}} or {{Encoder}} objects. And we should prevent
further objects from being created/tracked by the {{socket_manager}}.
*Proposal*
# Clean up all processes other than {{gc}}. This will clear all links and
delete all {{HttpProxy}} s while {{socket_manager}} still exists.
# Close all sockets via {{SocketManager::close}}. All of {{socket_manager}} 's
state is cleaned up via {{SocketManager::close}}, including termination of
{{HttpProxy}} (termination is idempotent, meaning that killing {{HttpProxy}} s
via {{process_manager}} is safe).
# At this point, {{socket_manager}} should be empty and only the {{gc}} process
should be running. (Since we're finalizing, assume there are no threads trying
to spawn processes.) {{socket_manager}} can be deleted.
# {{gc}} can be deleted. This is currently a leaked pointer, so we'll also
need to track and delete that.
# {{process_manager}} should be devoid of processes, so we can proceed with
cleanup (join threads, stop the {{EventLoop}}, etc).
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)