MCPcopy Create free account
hub / github.com/apache/cloudberry / ic_proxy_server_main

Function ic_proxy_server_main

contrib/interconnect/proxy/ic_proxy_main.c:526–604  ·  view source on GitHub ↗

* The main loop of the ic-proxy. */

Source from the content-addressed store, hash-verified

524 * The main loop of the ic-proxy.
525 */
526int
527ic_proxy_server_main(void)
528{
529 char path[MAXPGPATH];
530
531 elogif(gp_log_interconnect >= GPVARS_VERBOSITY_TERSE,
532 LOG, "ic-proxy: server setting up");
533
534 ic_proxy_pkt_cache_init(IC_PROXY_MAX_PKT_SIZE);
535
536 uv_loop_init(&ic_proxy_server_loop);
537
538 ic_proxy_reload_addresses(&ic_proxy_server_loop);
539
540 ic_proxy_router_init(&ic_proxy_server_loop);
541 ic_proxy_peer_table_init();
542 ic_proxy_client_table_init();
543
544 ic_proxy_peer_listening = false;
545 ic_proxy_peer_relistening = false;
546 ic_proxy_client_listening = false;
547
548 uv_signal_init(&ic_proxy_server_loop, &ic_proxy_server_signal_hup);
549 uv_signal_start(&ic_proxy_server_signal_hup, ic_proxy_server_on_signal, SIGHUP);
550
551 uv_signal_init(&ic_proxy_server_loop, &ic_proxy_server_signal_int);
552 uv_signal_start(&ic_proxy_server_signal_int, ic_proxy_server_on_signal, SIGINT);
553
554 /* on master */
555 uv_signal_init(&ic_proxy_server_loop, &ic_proxy_server_signal_term);
556 uv_signal_start(&ic_proxy_server_signal_term, ic_proxy_server_on_signal, SIGTERM);
557
558 /* on segments */
559 uv_signal_init(&ic_proxy_server_loop, &ic_proxy_server_signal_stop);
560 uv_signal_start(&ic_proxy_server_signal_stop, ic_proxy_server_on_signal, SIGQUIT);
561
562 /* TODO: we could stop the timer if all the peers are connected */
563 uv_timer_init(&ic_proxy_server_loop, &ic_proxy_server_timer);
564 uv_timer_start(&ic_proxy_server_timer, ic_proxy_server_on_timer, 100, 1000);
565
566 /* monitor the postmaster pipe to check whether postmaster is still alive */
567 uv_pipe_init(&ic_proxy_server_loop, &ic_proxy_postmaster_pipe, false);
568 uv_pipe_open(&ic_proxy_postmaster_pipe, postmaster_alive_fds[POSTMASTER_FD_WATCH]);
569 uv_read_start((uv_stream_t *)&ic_proxy_postmaster_pipe, ic_proxy_pkt_cache_alloc_buffer,
570 ic_proxy_server_on_read_postmaster_pipe);
571
572 elogif(gp_log_interconnect >= GPVARS_VERBOSITY_TERSE, LOG,
573 "ic-proxy: server running");
574
575 /* We're now ready to receive signals */
576 BackgroundWorkerUnblockSignals();
577
578 /*
579 * return non-zero value so we are restarted by the postmaster
580 */
581 ic_proxy_server_exit_code = 1;
582 uv_run(&ic_proxy_server_loop, UV_RUN_DEFAULT);
583 uv_loop_close(&ic_proxy_server_loop);

Callers

nothing calls this directly

Tested by

no test coverage detected