History log of /unit/src/nxt_port.c (Results 1 – 25 of 58)
Revision (<<< Hide revision tags) (Show revision tags >>>) Date Author Comments
# 2050:d1298cc3f385 03-Dec-2021 Valentin Bartenev

Merged with the 1.26 branch.


Revision tags: 1.26.1-1, 1.26.1
# 2015:4570130dd183 24-Nov-2021 Max Romanov

Fixing alerts on router restart.

Splitting the process type connectivity matrix to 'keep ports' and 'send
ports'; the 'keep ports' matrix is used to clean up unnecessary ports after
forking a new pr

Fixing alerts on router restart.

Splitting the process type connectivity matrix to 'keep ports' and 'send
ports'; the 'keep ports' matrix is used to clean up unnecessary ports after
forking a new process, and the 'send ports' matrix determines which process
types expect to get created process ports.

Unfortunately, the original single connectivity matrix no longer works because
of an application stop delay caused by prototypes. Existing applications
should not get the new router port at the moment.

show more ...


# 2014:f8a0992944df 24-Nov-2021 Max Romanov

Sending shared port to application prototype.

Application process started with shared port (and queue) already configured.
But still waits for PORT_ACK message from router to start request processin

Sending shared port to application prototype.

Application process started with shared port (and queue) already configured.
But still waits for PORT_ACK message from router to start request processing
(so-called "ready state").

Waiting for router confirmation is necessary. Otherwise, the application may
produce response and send it to router before the router have the information
about the application process. This is a subject of further optimizations.

show more ...


Revision tags: 1.26.0-1, 1.26.0
# 1998:c8790d2a89bb 09-Nov-2021 Tiago Natel de Moura

Introducing application prototype processes.


# 1997:a8a3f1d243ee 09-Nov-2021 Tiago Natel de Moura

Changed nxt_process_* for reuse.

This enables the reuse of process creation functions.


Revision tags: 1.25.0-1, 1.25.0, 1.24.0-1, 1.24.0, 1.23.0-1, 1.23.0, 1.22.0-1, 1.22.0
# 1789:959b19fff9cf 03-Feb-2021 Max Romanov

Fixing shared app queue unmap size.

Shared app queue takes more memory than port memory. To unmap all memory pages
correct size need to be specified for munmap() call. Otherwise 4 Mb memory
leaked

Fixing shared app queue unmap size.

Shared app queue takes more memory than port memory. To unmap all memory pages
correct size need to be specified for munmap() call. Otherwise 4 Mb memory
leaked on each configured application removal.

The issue was introduced in 1d84b9e4b459.

show more ...


Revision tags: 1.21.0-1, 1.21.0, 1.20.0-1, 1.20.0, 1.19.0-1, 1.19.0
# 1558:026e4b909b61 11-Aug-2020 Max Romanov

Style fixes for 2 file descriptors transfer over port.

Two consecutive fd and fd2 fields replaced with array.


# 1555:1d84b9e4b459 11-Aug-2020 Max Romanov

Introducing application and port shared memory queues.

The goal is to minimize the number of syscalls needed to deliver a message.


# 1547:cbcd76704c90 11-Aug-2020 Max Romanov

Introducing the shared application port.

This is the port shared between all application processes which use it to pass
requests for processing. Using it significantly simplifies the request
proces

Introducing the shared application port.

This is the port shared between all application processes which use it to pass
requests for processing. Using it significantly simplifies the request
processing code in the router. The drawback is 2 more file descriptors per each
configured application and more complex libunit message wait/read code.

show more ...


Revision tags: 1.18.0-1, 1.18.0
# 1488:6976d36be926 09-Mar-2020 Tiago Natel de Moura

Refactor of process management.

The process abstraction has changed to:

setup(task, process)
start(task, process_data)
prefork(task, process, mp)

The prefork() occurs in the main process rig

Refactor of process management.

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.

show more ...


Revision tags: 1.17.0-1, 1.17.0, 1.16.0-1, 1.16.0, 1.15.0-1, 1.15.0, 1.14.0-1, 1.14.0
# 1302:d4c6a91f7091 26-Nov-2019 Tiago Natel

Refactor of process init.

Introduces the functions nxt_process_init_create() and
nxt_process_init_creds_set().


Revision tags: 1.13.0-1, 1.13.0
# 1254:aae6699f4eee 29-Oct-2019 Hong Zhi Dao

Process port refactoring.

- 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_p

Process port refactoring.

- 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.

show more ...


Revision tags: 1.12.0-1, 1.12.0, 1.11.0-2, 1.11.0-1, 1.11.0
# 1180:9424f6fa0d1a 18-Sep-2019 Max Romanov

Fixing master process crash after failed fork.

This closes #312 issue on GitHub.


Revision tags: 1.10.0-2, 1.10.0-1, 1.10.0
# 1131:ec7d924d8dfb 20-Aug-2019 Max Romanov

Introducing websocket support in router and libunit.


Revision tags: 1.9.0-1, 1.9.0
# 1008:84f2370bd642 11-Mar-2019 Andrey Zelenkov

Style.


Revision tags: 1.8.0-1, 1.8.0, 1.7.1-1, 1.7.1, 1.7-1, 1.7, 1.6-1, 1.6, 1.5-1, 1.5
# 799:fdd5d8ee8165 02-Oct-2018 Max Romanov

Making port fd blocking on app side and non-blocking in Unit.

This issue was introduced in libunit commit (e0f0cd7d244a). All port
sockets in application should be in blocking mode whereas Unit its

Making port fd blocking on app side and non-blocking in Unit.

This issue was introduced in libunit commit (e0f0cd7d244a). All port
sockets in application should be in blocking mode whereas Unit itself
operates non-blocking sockets.

Having non-blocking sockets in application may cause send error during
intensive response packets generation.

See https://mailman.nginx.org/pipermail/unit/2018-October/000080.html.

show more ...


Revision tags: 1.4-2, 1.4
# 761:43683916898a 07-Sep-2018 Max Romanov

Misspelled variable names fixed.


# 753:0f0094dc0f51 10-Aug-2018 Max Romanov

Introducing app joint to accurate app release.

For accurate app descriptor release, it is required to count the number of
use counts. Use count increased when:
- app linked to configuration app que

Introducing app joint to accurate app release.

For accurate app descriptor release, it is required to count the number of
use counts. Use count increased when:
- app linked to configuration app queue;
- socket conf stores pointer to app;
- request for start app process posted to router service thread;

Application port has pointer to app, but it does not increase use count
to avoid use count loop.

Timer needs a pointer to nxt_timer_t which is stored in engine timers tree.
nxt_timer_t now resides in nxt_app_joint_t and does not lock the application.

Start process port RPC handlers is also linked to nxt_app_joint_t.

App joint (nxt_app_joint_t) is a 'weak pointer':
- single threaded;
- use countable;
- store pointer to nxt_app_t (which can be NULL);

nxt_app_t has pointer to nxt_app_joint_t and update its pointer to app.

show more ...


Revision tags: 1.3
# 697:b73f6d3709c2 18-Jun-2018 Igor Sysoev

Fixed exit status on start failure.

This and previous commit close #131 issue on GitHub.


# 696:9476693a47bd 18-Jun-2018 Igor Sysoev

Removing Unix control socket on start failure.

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 re

Removing Unix control socket on start failure.

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.

show more ...


Revision tags: 1.2, 1.1, 1.0, 0.7
# 583:39771486d997 21-Mar-2018 Max Romanov

Triggering RPC error for all handlers on port close.

This is required to avoid crashes and memory leaks on Unit exit.


# 564:762f8c976ead 05-Mar-2018 Valentin Bartenev

Reduced number of critical log levels.


# 551:220b0834790b 20-Feb-2018 Max Romanov

Removed unwanted assertions.


Revision tags: 0.6, 0.5
# 507:fa714d76592b 29-Jan-2018 Max Romanov

Introducing extended app process management.

- Pre-fork 'processes.spare' application processes;
- fork more processes to keep 'processes.spare' idle processes;
- fork on-demand up to 'processes.max

Introducing extended app process management.

- Pre-fork 'processes.spare' application processes;
- fork more processes to keep 'processes.spare' idle processes;
- fork on-demand up to 'processes.max' count;
- scale down idle application processes above 'processes.spare' after
'processes.idle_timeout';
- number of concurrently started application processes also limited by
'processes.spare' (or 1, if spare is 0).

show more ...


Revision tags: 0.4, 0.3
# 430:3a24c399394f 28-Dec-2017 Igor Sysoev

Changed nxt_mp_retain() and nxt_mp_release() interfaces.


123