示例#1
0
文件: server.c 项目: 3Hren/elliptics
void dnet_server_node_destroy(struct dnet_node *n)
{
	dnet_log(n, DNET_LOG_DEBUG, "Destroying server node.");

	/*
	 * Monitor uses all others, so it should be stopped at first.
	 */
	dnet_monitor_exit(n);

	/*
	 * Cache can be accessed from the io threads, so firstly stop them.
	 * Cache uses backend to dump all ansynced data to the disk, so
	 * backend must be destroyed the last.
	 *
	 * After all of them finish destroying the node, all it's counters and so on.
	 */
	dnet_node_cleanup_common_resources(n);

	dnet_route_list_destroy(n->route);
	n->route = NULL;

	dnet_backend_cleanup_all(n);

	dnet_srw_cleanup(n);

	dnet_counter_destroy(n);
	dnet_locks_destroy(n);
	dnet_local_addr_cleanup(n);
	dnet_notify_exit(n);

	if (n->config_data)
		n->config_data->destroy_config_data(n->config_data);

	free(n);
}
示例#2
0
void dnet_server_node_destroy(struct dnet_node *n)
{
	dnet_log(n, DNET_LOG_DEBUG, "Destroying server node.\n");

	/*
	 * Cache can be accessed from the io threads, so firstly stop them.
	 * Cache uses backend to dump all ansynced data to the disk, so
	 * backend must be destroyed the last.
	 *
	 * After all of them finish destroying the node, all it's counters and so on.
	 */
	dnet_node_cleanup_common_resources(n);

	dnet_srw_cleanup(n);
	dnet_cache_cleanup(n);

	if (n->cache_pages_proportions)
		free(n->cache_pages_proportions);

	if (n->cb && n->cb->backend_cleanup)
		n->cb->backend_cleanup(n->cb->command_private);

	dnet_counter_destroy(n);
	dnet_locks_destroy(n);
	dnet_local_addr_cleanup(n);
	dnet_notify_exit(n);

	if (n->config_data)
		n->config_data->destroy_config_data(n->config_data);

	dnet_monitor_exit(n);

	free(n);
}
示例#3
0
文件: server.c 项目: kod3r/elliptics
void dnet_server_node_destroy(struct dnet_node *n)
{
	dnet_log(n, DNET_LOG_DEBUG, "Destroying server node.\n");

	dnet_srw_cleanup(n);
	dnet_cache_cleanup(n);

	dnet_node_cleanup_common_resources(n);

	if (n->cb && n->cb->backend_cleanup)
		n->cb->backend_cleanup(n->cb->command_private);

	dnet_locks_destroy(n);
	dnet_local_addr_cleanup(n);
	dnet_notify_exit(n);

	if (n->config_data) {
		free(n->config_data->logger_value);
		free(n->config_data->cfg_addrs);
		free(n->config_data->cfg_remotes);
		free(n->config_data->cfg_backend);
		free(n->config_data);
	}

	free(n);
}
示例#4
0
文件: server.c 项目: Inkvi/elliptics
void dnet_server_node_destroy(struct dnet_node *n)
{
	dnet_log(n, DNET_LOG_DEBUG, "Destroying server node at %s, st: %p.\n",
			dnet_dump_node(n), n->st);

	dnet_srw_cleanup(n);

	dnet_node_cleanup_common_resources(n);

	if (n->cb && n->cb->backend_cleanup)
		n->cb->backend_cleanup(n->cb->command_private);

	dnet_locks_destroy(n);
	dnet_notify_exit(n);

	free(n);
}