summaryrefslogtreecommitdiffhomepage
path: root/src/nxt_main_process.h (unfollow)
AgeCommit message (Collapse)AuthorFilesLines
2021-11-09Introducing application prototype processes.Tiago Natel de Moura1-0/+1
2021-10-09Configuration: automatic migration to the new "share" behavior.Zhidao HONG1-0/+1
2020-03-09Refactor of process management.Tiago Natel de Moura1-14/+5
The process abstraction has changed to: setup(task, process) start(task, process_data) prefork(task, process, mp) The prefork() occurs in the main process right before fork. The file src/nxt_main_process.c is completely free of process specific logic. The creation of a process now supports a PROCESS_CREATED state. The The setup() function of each process can set its state to either created or ready. If created, a MSG_PROCESS_CREATED is sent to main process, where external setup can be done (required for rootfs under container). The core processes (discovery, controller and router) doesn't need external setup, then they all proceeds to their start() function straight away. In the case of applications, the load of the module happens at the process setup() time and The module's init() function has changed to be the start() of the process. The module API has changed to: setup(task, process, conf) start(task, data) As a direct benefit of the PROCESS_CREATED message, the clone(2) of processes using pid namespaces now doesn't need to create a pipe to make the child block until parent setup uid/gid mappings nor it needs to receive the child pid.
2019-11-26Refactor of process init.Tiago Natel1-4/+1
Introduces the functions nxt_process_init_create() and nxt_process_init_creds_set().
2018-09-20Controller: certificates storage interface.Valentin Bartenev1-0/+8
2018-08-10Stopping all application processes if router process dies.Max Romanov1-1/+1
Unit master process restarts the router if the router accidentally dies. New router process receives the configuration from controller and starts configured applications. The information of running applications cannot be transferred to router because currently there is no persistent application identifier. To avoid orphan application processes started by died router, master process stops all currently running applications once it receives SIGCHLD for router process.
2017-09-15Introducing named port message handlers to avoid misprints.Max Romanov1-5/+4
2017-08-29The master process has been renamed to the main process.Igor Sysoev1-6/+6
2017-08-17The new module configuration interface.Igor Sysoev1-0/+2
Configuration and building example: ./configure ./configure python ./configure php ./configure go make all or ./configure make nginext ./configure python make python ./configure php make php ./configure go make go Modules configuration options and building examples: ./configure python --module=python2 --config=python2.7-config make python2 ./configure php --module=php7 --config=php7.0-config --lib-path=/usr/local/php7.0 make php7 ./configure go --go=go1.6 --go-path=${HOME}/go1.6 make go1.6
2017-08-02Listening socket creation and binding operations are passedIgor Sysoev1-0/+11
to the master process.
2017-07-12New process port exchange changed. READY message type introduced.Max Romanov1-3/+3
Application process start request DATA message from router to master. Master notifies router via NEW_PORT message after worker process become ready.
2017-07-12Controller: proper reconfiguration requests handling.Valentin Bartenev1-0/+1
Now controller serializes all reconfiguration requests and waits for result from router.
2017-07-06Router: read configuration from port.Max Romanov1-0/+1
Controller: stub to send configuration from POST body "as is" to router.
2017-06-23Application-side message processing.Max Romanov1-0/+1
Usage on the router side: nxt_app_wmsg_t wmsg; nxt_app_parse_ctx_t parse_ctx; nxt_app_http_req_init(task, &parse_ctx); /* parse incoming request data */ if (nxt_app_http_req_parse(task, &parse_ctx, buf) == NXT_DONE) { /* choose app */ nxt_app = nxt_select_app(... &parse_ctx.r ...); /* find port */ wmsg.port = nxt_get_app_port(... nxt_app ...); wmsg.buf = &wmsg.write; /* fill write message buffer in shared mem */ nxt_app->prepare_msg(task, &parse_ctx.r, &wmsg); /* send message to app for processing */ nxt_port_socket_write(task, wmsg.port, NXT_PORT_MSG_DATA, -1, 0, 0, wmsg.write); }
2017-03-09Processes refactoring.Igor Sysoev1-6/+10
The cycle has been renamed to the runtime.
2017-02-07Event engines refactoring.Igor Sysoev1-1/+1
2017-01-23Introducing tasks.Igor Sysoev1-2/+3