summaryrefslogtreecommitdiffhomepage
path: root/src/nxt_runtime.h (follow)
AgeCommit message (Collapse)AuthorFilesLines
2020-03-09Refactor of process management.Tiago Natel de Moura1-0/+1
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.
2020-03-12Using disk file to store large request body.Max Romanov1-0/+1
This closes #386 on GitHub.
2019-12-06Moved credential-related code to nxt_credential.c.Tiago Natel1-1/+1
This is required to avoid include cycles, as some nxt_clone_* functions depend on the credential structures, but nxt_process depends on clone structures.
2019-10-29Process port refactoring.Hong Zhi Dao1-6/+4
- Introduced nxt_runtime_process_port_create(). - Moved nxt_process_use() into nxt_process.c from nxt_runtime.c. - Renamed nxt_runtime_process_remove_pid() as nxt_runtime_process_remove(). - Some public functions transformed to static. This closes #327 issue on GitHub.
2019-09-19Initial applications isolation support using Linux namespaces.Tiago de Bem Natel de Moura1-0/+1
2018-10-23Removed unused "--upstream" command line option.Valentin Bartenev1-1/+0
2018-09-20Controller: certificates storage interface.Valentin Bartenev1-0/+2
2018-09-20Added SSL/TLS support on connection level.Igor Sysoev1-0/+4
2018-08-06Unit application library.Max Romanov1-4/+1
Library now used in all language modules. Old 'nxt_app_*' code removed. See src/test/nxt_unit_app_test.c for usage sample.
2018-06-18Fixed exit status on start failure.Igor Sysoev1-2/+4
This and previous commit close #131 issue on GitHub.
2018-06-18Removing Unix control socket on start failure.Igor Sysoev1-15/+1
The bug had appeared in 5cc5002a788e when process type has been converted to bitmask. This commit reverts the type back to a number. This commit is related to #131 issue on GitHub.
2018-06-18Removed unused single process type.Igor Sysoev1-1/+0
2018-03-29Removed unused macros and functions.Igor Sysoev1-19/+0
2017-12-27Introducing application 'atexit' hook.Max Romanov1-1/+2
Finalizing Python interpreter. This closes #65 issue on GitHub.
2017-10-04Introducing process use counter.Max Romanov1-1/+1
This helps to decouple process removal from port memory pool cleanups.
2017-10-04Introducing use counters for port and app. Thread safe port write.Max Romanov1-4/+4
Use counter helps to simplify logic around port and application free. Port 'post' function introduced to simplify post execution of particular function to original port engine's thread. Write message queue is protected by mutex which makes port write operation thread safe.
2017-09-10Configuration persistence.Valentin Bartenev1-0/+3
Now configuration survives server reloads.
2017-08-29The master process has been renamed to the main process.Igor Sysoev1-3/+3
2017-08-26Added configure and command line option --control.Igor Sysoev1-0/+1
2017-08-26Added configure and command line option --modules.Igor Sysoev1-0/+1
2017-08-26Added configure option --pid=FILE.Igor Sysoev1-3/+0
A pid file name can be relative. The default pid file name is "nginext.pid".
2017-08-26Added configure options --prefix=PATH and --log=FILE.Igor Sysoev1-1/+1
A prefix is prepended to all relative names at configure stage. There is no prefix by default. A log file name can be relative. The default log file name is "nginext.log".
2017-08-24Removed configure option --no-threads.Igor Sysoev1-4/+0
2017-08-24Removed command line option --workers.Igor Sysoev1-1/+0
2017-08-17The new module configuration interface.Igor Sysoev1-0/+1
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-02Runtime processes protected with mutex.Max Romanov1-2/+1
2017-08-02Using port rpc in controller->router configuration update.Max Romanov1-3/+0
2017-07-12New process port exchange changed. READY message type introduced.Max Romanov1-1/+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/+3
Now controller serializes all reconfiguration requests and waits for result from router.
2017-07-07Process stop notification from master to all other processes.Max Romanov1-2/+19
New port message type introduced NXT_PORT_MSG_REMOVE_PID. Default handler removes process description from nxt_runtime_t with all ports, incoming and outgoing mmaps etc.
2017-06-23Application-side message processing.Max Romanov1-0/+2
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-06-23lvlhash for ports moved to separate files for future re-use.Max Romanov1-1/+1
2017-06-23Runtime ports fix, add enumeration macros.Max Romanov1-0/+19
2017-06-20Using new memory pool implementation.Igor Sysoev1-2/+2
2017-05-31Skeleton of router configuration and request processing.Igor Sysoev1-1/+3
2017-05-12Using shared memory to send data via nxt_port.Max Romanov1-2/+42
Usage: b = nxt_port_mmap_get_buf(task, port, size); b->mem.free = nxt_cpymem(b->mem.free, data, size); nxt_port_socket_write(task, port, NXT_PORT_MSG_DATA, -1, 0, b);
2017-03-09Processes refactoring.Igor Sysoev1-0/+108
The cycle has been renamed to the runtime.