Commit Graph

1613 Commits

Author SHA1 Message Date
Max Romanov
f27953af61 Tests: added Python threading tests. 2020-11-05 00:05:02 +03:00
Max Romanov
8e37b1cbf5 Python: fixing some arguments reference counting. 2020-11-05 00:05:00 +03:00
Max Romanov
8dcb0b9987 Python: request processing in multiple threads.
This closes #459 issue on GitHub.
2020-11-05 00:04:59 +03:00
Max Romanov
4225361f0e Python: introducting macro to simplify minor version check. 2020-11-05 00:04:58 +03:00
Andrei Zeliankou
a29d970f10 Tests: disabled detailed output by default. 2020-11-03 01:32:40 +00:00
Andrei Zeliankou
5182d2c398 Tests: force applications to build for JVM 8.
This change is made to avoid situations when an application
is compiled for a version newer than the Java module used.
2020-11-03 01:31:05 +00:00
Max Romanov
4ba9e1d005 Java: upgrading 3rd-party components. 2020-11-02 21:05:04 +03:00
Valentin Bartenev
d03b217f33 Fixed building test app without debug.
Compilers complained about unused variables after 37e2a3ea1bf1.
2020-11-01 13:22:11 +03:00
Max Romanov
bbe4b97ca1 Java: supporting jsp-file attribute for servlet.
This closes #487 issue on GitHub.
2020-10-30 17:33:36 +03:00
Valentin Bartenev
50af47fd7c Isolation: fixed passing custom options to nmount().
The "iov" array was filled incorrectly when custom mounting options were set.
2020-10-30 07:55:26 +03:00
Tiago Natel de Moura
0390cb3a61 Isolation: mounting of procfs by default when using "rootfs". 2020-10-29 20:30:53 +00:00
Tiago Natel de Moura
417f5d911d Tests: added new ruby isolation test without namespaces. 2020-10-29 14:31:37 +00:00
Tiago Natel de Moura
5ffd88ad7c Isolation: correctly unmount non-dependent paths first.
When mount points reside within other mount points, this
patch sorts them by path length and then unmounts then
in an order reverse to their mounting.  This results in
independent paths being unmounted first.

This fixes an issue in buildbots where dependent paths failed
to unmount, leading to the build script removing system-wide
language libraries.
2020-10-29 14:24:38 +00:00
Max Romanov
6a00bab41e Tests: improving get_application_type() and fixing its name.
This patch also enables multiversion tests running for Java.
2020-10-28 00:01:46 +03:00
Max Romanov
f007ad4dcf Added threading to the libunit test app. 2020-10-28 00:01:46 +03:00
Max Romanov
80a8cb835b Preserving the app port write socket.
The socket is required for intercontextual communication in multithreaded apps.
2020-10-28 00:01:46 +03:00
Max Romanov
d8cc830ea0 Libunit: waking another context with the RPC_READY message. 2020-10-28 00:01:46 +03:00
Max Romanov
4cb8aeb31a Router: introducing the PORT_ACK message.
The PORT_ACK message is the router's response to the application's NEW_PORT
message.  After receiving PORT_ACK, the application is safe to process requests
using this port.

This message avoids a racing condition when the application starts processing a
request from the shared queue and sends REQ_HEADERS_ACK.  The REQ_HEADERS_ACK
message contains the application port ID as reply_port, which the router uses
to send request data.  When the application creates a new port, it
immediately sends it to the main router thread.  Because the request is
processed outside the main thread, a racing condition can occur between the
receipt of the new port in the main thread and the receipt of REQ_HEADERS_ACK
in the worker router thread where the same port is specified as reply_port.
2020-10-28 00:01:46 +03:00
Max Romanov
131b6a7ffa Libunit: releasing cached read buffers when destroying context. 2020-10-28 00:01:46 +03:00
Max Romanov
a5508cec7a Libunit: added a function to discern main and worker contexts. 2020-10-28 00:01:46 +03:00
Max Romanov
28ab1de364 Libunit: gracefully quitting a multicontext application. 2020-10-28 00:01:46 +03:00
Max Romanov
ccee391ab2 Router: broadcasting the SHM_ACK message to all process ports. 2020-10-28 00:01:46 +03:00
Max Romanov
735bb2f127 Added error response logging.
Every internal server error response should have a clear description in log.
2020-10-28 00:01:46 +03:00
Max Romanov
38a9027fe5 Router: checking a buffer before accessing its memory fields.
This fixes the router's crash on buildbot; the reason was an unexpected 'last'
response from the application to the router arriving before the response
headers.  The last buffer is not a memory buffer, so the result of accessing
memory fields is unpredictable.

The unexpected 'last' message was caused by an error in libunit; fixed in
fee8fd855a00.
2020-10-28 00:01:46 +03:00
Max Romanov
00561a961f Libunit: protecting the new mmap from being used in another thread.
Until the mmap is received by the router, only the creator thread may use this
mmap, so the "mmap not found" state in the router is avoided.
2020-10-28 00:01:46 +03:00
Max Romanov
779b1131c5 Router: closing app worker's ports. 2020-10-28 00:01:46 +03:00
Andrei Zeliankou
8956e668cc Tests: fixed isolation detection. 2020-10-27 04:09:52 +00:00
Valentin Bartenev
434c3228d9 Increased request memory pool size.
Previous value was too small, which reduced efficiency of the pool causing
a lot of additional allocations even for simple request and response.
2020-10-26 22:26:02 +03:00
Valentin Bartenev
84136eb49d Configure: using comma instead of space for passing -rpath value.
This variant will be more interoperable across various systems
and it's already used in Ruby module.

Otherwise, configure tests fail on NetBSD with:

  gcc: Missing argument for -Wl,-rpath
2020-10-26 22:24:32 +03:00
Andrei Zeliankou
54837759f3 Tests: fixed unit.log print. 2020-10-19 22:25:29 +01:00
Max Romanov
d8628a43d0 Fixing uninitialized ncpu value on unsupported platforms.
Thanks to @geyslan.

This closes #455 issue on GitHub.
2020-10-14 18:41:31 +03:00
Max Romanov
9dcb7ec4b7 Java: response locale methods implemented.
This closes #479 issue on GitHub.
2020-10-14 16:18:34 +03:00
Igor Sysoev
90b2c9f7d6 Using union instead of "void *". 2020-10-13 12:56:56 +03:00
Igor Sysoev
f541cbcce4 Using C99 style declaration. 2020-10-13 12:56:56 +03:00
Igor Sysoev
edafa954d4 Reordering declarations. 2020-10-13 12:56:56 +03:00
Valentin Bartenev
0919166145 Fixed building with Python 3.9.
PyUnicode_GET_SIZE() in deprecated since 3.3 and will be removed in 3.12.
In version 3.9 it was explicitly marked by deprecation warning causing
compilation error with Unit.

PyUnicode_GET_LENGTH() must be used instead.
2020-10-13 01:37:39 +03:00
Valentin Bartenev
c4f2a58aaf Version bump. 2020-10-13 01:37:39 +03:00
Valentin Bartenev
ad516735a6 Adjusted tag 1.20.0 to include 0e985b300673. 2020-10-08 19:09:16 +03:00
Valentin Bartenev
7d77d50568 Updated 1.20.0 CHANGES to include pytest migration. 2020-10-08 19:04:40 +03:00
Valentin Bartenev
10468ed22b Added tag 1.20.0 for changeset f7e9cf490512 2020-10-08 18:55:50 +03:00
Valentin Bartenev
03d965b49c Generated Dockerfiles for Unit 1.20.0. 2020-10-08 18:32:48 +03:00
Valentin Bartenev
f221ddbe66 Added version 1.20.0 CHANGES. 2020-10-08 18:32:36 +03:00
Konstantin Pavlov
bebc3746ca Regenerated dockerfiles. 2020-09-22 15:55:28 +03:00
Konstantin Pavlov
5a8adce8c2 Ensure docker images are using latest versions of base OS packages. 2020-09-22 15:55:28 +03:00
Konstantin Pavlov
e0f66cbba0 Added jsc11 docker image. 2020-09-22 15:55:28 +03:00
Valentin Bartenev
2821b3347c PHP: compatibility with 8.0.0 RC1.
This closes #474 PR on GitHub.
2020-10-06 18:12:05 +03:00
Andrei Zeliankou
6ec0ff3596 Tests: minor fixes. 2020-10-07 23:18:43 +01:00
Valentin Bartenev
645683f432 Tests: fixed loading selected module version.
Previously, for PHP, Ruby, and Perl the latest version was always loaded
in multi-version tests.
2020-10-07 22:04:54 +03:00
Valentin Bartenev
3f513f434f Router: fixed "not empty" pattern matching.
The "!" pattern should be opposite to "", i.e. match only non-empty values.
But after 3c00af54b937 it was equal to "!*", which is wrong.
2020-10-07 20:06:30 +03:00
Andrei Zeliankou
37390d2a3b Tests: fixed tests to run as root. 2020-10-06 20:30:51 +01:00