-
Notifications
You must be signed in to change notification settings - Fork 166
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Modules: removed extra VM creation per server.
Previously, when js_import was declared in http or stream blocks, an extra copy of the VM instance was created for each server block. This was not needed and consumed a lot of memory for configurations with many server blocks. This issue was introduced in 9b67441 (0.8.6) and was partially fixed for location blocks only in 685b64f (0.8.7).
- Loading branch information
Showing
5 changed files
with
194 additions
and
2 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,83 @@ | ||
#!/usr/bin/perl | ||
|
||
# (C) Dmitry Volyntsev | ||
# (c) Nginx, Inc. | ||
|
||
# Tests for http njs module, check for proper location blocks merging. | ||
|
||
############################################################################### | ||
|
||
use warnings; | ||
use strict; | ||
|
||
use Test::More; | ||
|
||
BEGIN { use FindBin; chdir($FindBin::Bin); } | ||
|
||
use lib 'lib'; | ||
use Test::Nginx; | ||
|
||
############################################################################### | ||
|
||
select STDERR; $| = 1; | ||
select STDOUT; $| = 1; | ||
|
||
my $t = Test::Nginx->new()->has(qw/http/) | ||
->write_file_expand('nginx.conf', <<'EOF'); | ||
%%TEST_GLOBALS%% | ||
daemon off; | ||
events { | ||
} | ||
http { | ||
%%TEST_GLOBALS_HTTP%% | ||
js_import main.js; | ||
server { | ||
listen 127.0.0.1:8080; | ||
server_name localhost; | ||
location /a { | ||
js_content main.version; | ||
} | ||
location /b { | ||
js_content main.version; | ||
} | ||
location /c { | ||
js_content main.version; | ||
} | ||
location /d { | ||
js_content main.version; | ||
} | ||
} | ||
} | ||
EOF | ||
|
||
$t->write_file('main.js', <<EOF); | ||
function version(r) { | ||
r.return(200, njs.version); | ||
} | ||
export default {version}; | ||
EOF | ||
|
||
$t->try_run('no njs available')->plan(1); | ||
|
||
############################################################################### | ||
|
||
$t->stop(); | ||
|
||
my $content = $t->read_file('error.log'); | ||
my $count = () = $content =~ m/ js vm init/g; | ||
ok($count == 1, 'http js block imported once'); | ||
|
||
############################################################################### |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,78 @@ | ||
#!/usr/bin/perl | ||
|
||
# (C) Dmitry Volyntsev | ||
# (c) Nginx, Inc. | ||
|
||
# Tests for http njs module, check for proper server blocks merging. | ||
|
||
############################################################################### | ||
|
||
use warnings; | ||
use strict; | ||
|
||
use Test::More; | ||
|
||
BEGIN { use FindBin; chdir($FindBin::Bin); } | ||
|
||
use lib 'lib'; | ||
use Test::Nginx; | ||
|
||
############################################################################### | ||
|
||
select STDERR; $| = 1; | ||
select STDOUT; $| = 1; | ||
|
||
my $t = Test::Nginx->new()->has(qw/http/) | ||
->write_file_expand('nginx.conf', <<'EOF'); | ||
%%TEST_GLOBALS%% | ||
daemon off; | ||
events { | ||
} | ||
http { | ||
%%TEST_GLOBALS_HTTP%% | ||
js_import main.js; | ||
server { | ||
listen 127.0.0.1:8080; | ||
} | ||
server { | ||
listen 127.0.0.1:8081; | ||
} | ||
server { | ||
listen 127.0.0.1:8082; | ||
} | ||
server { | ||
listen 127.0.0.1:8083; | ||
} | ||
} | ||
EOF | ||
|
||
$t->write_file('main.js', <<EOF); | ||
function version(r) { | ||
r.return(200, njs.version); | ||
} | ||
export default {version}; | ||
EOF | ||
|
||
$t->try_run('no njs available')->plan(1); | ||
|
||
############################################################################### | ||
|
||
$t->stop(); | ||
|
||
my $content = $t->read_file('error.log'); | ||
my $count = () = $content =~ m/ js vm init/g; | ||
ok($count == 1, 'http js block imported once'); | ||
|
||
############################################################################### |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters