Commit Graph

252 Commits

Author SHA1 Message Date
Max Romanov
b150f07e80 Added basic port error handler. 2017-08-02 13:36:29 +03:00
Max Romanov
9367dd2bf8 Implicit port read buffer completion.
To disable implicit completion, handler should reset msg->buf field.
2017-08-02 13:21:32 +03:00
Max Romanov
bcf99f87e2 Using port rpc in controller->router configuration update. 2017-08-02 13:20:57 +03:00
Max Romanov
82c0304ab8 Using port rpc in router->master start worker request. 2017-08-02 13:20:53 +03:00
Max Romanov
f2e9afdf42 Port RPC interface introduced.
Usage:
1. Register handlers in incoming port with nxt_port_rpc_register_handler().
2. Use return value as a stream identifier for next nxt_port_socket_write().
2017-08-02 13:14:31 +03:00
Max Romanov
3812ffd336 Added bit flags to type parameter of nxt_port_socket_write().
NXT_PORT_MSG_LAST     - mark message as last;
NXT_PORT_MSG_CLOSE_FD - close fd right after send;

Type constants altered to include last flag for single buffer messages.

Last sign is critical for coming port RPC layer. Handlers unregistered on last
message. Create sync buffer is not convenient, extra parameter is better.
2017-08-02 13:10:48 +03:00
Max Romanov
057c2526ee Assign current request id to prevent port memory release. 2017-07-25 16:18:31 +03:00
Max Romanov
5a756647ff Using engine task to avoid racing condition. 2017-07-25 16:18:31 +03:00
Max Romanov
316c77a9de Fixed building on Solaris by Sun C. 2017-07-25 16:18:31 +03:00
Igor Sysoev
a782faa499 Listening sockets remaining from the previous configuration
were not updated with new parameters.
2017-07-19 22:36:03 +03:00
Igor Sysoev
21de5c1d18 Added application name in process title. 2017-07-18 22:27:13 +03:00
Max Romanov
6b6fefa497 Request-app link introduced to prevent mp destroy for penging requests.
nxt_req_conn_link_t still used for lookup connection by request id.
New nxt_req_app_link_t (ra) allocated from conn->mem_pool using mp_retain().
ra stored in app->requests if there is no free worker to process request.
2017-07-18 00:21:28 +03:00
Max Romanov
31e5992f88 Using correct task for engine post. 2017-07-18 00:21:18 +03:00
Max Romanov
8ad2c3fd3a Work queue thread assertions. Reset thread after fork. 2017-07-18 00:21:17 +03:00
Max Romanov
803855138c Mem pool cleanup introduced.
Used for connection mem pool cleanup, which can be used by buffers.
Used for port mem pool to safely destroy linked process.
2017-07-18 00:21:16 +03:00
Max Romanov
eb675f2d78 Port allocation and destroy changed. Worker process stop introduced. 2017-07-18 00:21:14 +03:00
Igor Sysoev
6fc7b70646 Router configuration retention count fixed. 2017-07-16 19:56:09 +03:00
Igor Sysoev
6044e6f44f Router: joint must be added to engine's joint list in the
engine thread.
2017-07-16 19:55:56 +03:00
Igor Sysoev
b3464d563e Router: joint must be checked before memory pool destruction. 2017-07-14 20:34:38 +03:00
Igor Sysoev
b5d0920491 Router: listening socket configuration retention count fixed. 2017-07-14 20:34:33 +03:00
Igor Sysoev
3ed35d725a Router: using joint job queues instead of arrays to pass
listening socket handlers to worker engines.
2017-07-14 17:17:15 +03:00
Igor Sysoev
668aabac3c Router: using joint jobs to pass listening socket handlers to
worker engines.
2017-07-14 17:17:15 +03:00
Igor Sysoev
c5d791d0c4 Router: restoring listening sockets of the previous configuration. 2017-07-13 16:48:28 +03:00
Igor Sysoev
0324d51b8d Closing new listening sockets on configuration failure. 2017-07-12 21:21:00 +03:00
Max Romanov
7d3fd1c96c Single allocation for app conf and name. 2017-07-12 20:32:19 +03:00
Max Romanov
b0c1e740cf New process port exchange changed. READY message type introduced.
Application process start request DATA message from router to master.
Master notifies router via NEW_PORT message after worker process become ready.
2017-07-12 20:32:16 +03:00
Valentin Bartenev
c38bcb7d70 Controller: proper reconfiguration requests handling.
Now controller serializes all reconfiguration requests
and waits for result from router.
2017-07-12 20:21:17 +03:00
Igor Sysoev
4f4061061b Sending a result of configuration applying back to the controller. 2017-07-11 20:14:50 +03:00
Igor Sysoev
3bccb7f358 Introducing thread-safe nxt_random(). 2017-07-10 21:07:12 +03:00
Valentin Bartenev
eb4c2e4a21 Configuration: nxt_conf_map_object() improvements. 2017-07-10 17:55:51 +03:00
Igor Sysoev
aaf9378dcc Router: a fix in the previous changeset. 2017-07-07 21:20:29 +03:00
Igor Sysoev
b54bcef53d Router: processing application configuration. 2017-07-07 21:09:45 +03:00
Max Romanov
e41425bb1f Router: connection destroy sequence fixed. 2017-07-07 18:16:14 +03:00
Max Romanov
e58f4ef0d0 Memory pool thread safety checks in DEBUG build and usage fixes. 2017-07-07 16:01:34 +03:00
Max Romanov
74cda90e31 Process stop notification from master to all other processes.
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-07-07 16:01:34 +03:00
Max Romanov
264ae98d49 Using engine's task instead of listen's task. 2017-07-07 16:01:34 +03:00
Max Romanov
f319220a6c Redirecting buffer completion handler to specific engine.
There is a case in router where we use port in router connection thread.
Buffers are allocated within connection memory pool which can be used only in
this router thread. sendmsg() can be postponed into main router thread and
completion handler will compare current engine and post itself to correct
engine.
2017-07-07 16:01:34 +03:00
Max Romanov
c56d2af3bc Router: read configuration from port.
Controller: stub to send configuration from POST body "as is" to router.
2017-07-06 18:38:51 +03:00
Igor Sysoev
e1219569f4 An assertion on listening socket close. 2017-07-05 22:55:07 +03:00
Igor Sysoev
4ed0a15cd0 By default a number of router worker threads is set to a number
of CPUs.
2017-07-05 22:53:29 +03:00
Igor Sysoev
4fe5d22dcc Router: processing JSON configuration. 2017-07-05 14:05:21 +03:00
Max Romanov
41e2678110 Python WSGI: SERVER_NAME, SERVER_PORT fixed, REMOTE_ADDR introduced.
Shortcut: do not iterate over String (or Bytes) return object.
Call 'close()' for return object (if present).
2017-07-05 13:31:53 +03:00
Igor Sysoev
d8f371dde9 Setting listen socket fields lost in changeset 10688b89aa16. 2017-06-28 15:16:28 +03:00
Max Romanov
44b3ad17f4 Double buf completion call on connection timeout fixed. 2017-06-26 19:58:43 +03:00
Max Romanov
b8f126dcdf Added basic HTTP request processing in router.
- request to connection mapping in engine;
- requests queue in connection;
- engine port creation;
- connected ports hash for each process;
- engine port data messages processing (app responses);
2017-06-23 19:20:08 +03:00
Igor Sysoev
f888a5310c Using new memory pool implementation. 2017-06-20 19:49:17 +03:00
Igor Sysoev
b1b9f621a4 Memory pools refactoring. 2017-06-19 16:26:19 +03:00
Igor Sysoev
7574c64992 nxt_event_conn_... functions and structures have been renamed
to nxt_conn_...
2017-06-14 15:18:52 +03:00
Igor Sysoev
3e2632688f Router: follow up to HTTP parser changes. 2017-06-14 15:18:43 +03:00
Valentin Bartenev
c5cd7e5e97 Fixed building by GCC 7 (broken in 0b10a73d4993). 2017-06-09 21:38:10 +03:00