Varnish VCL Symbol не найден: std.querysort

Я копирую некоторые правила VCL из этот удобный шаблон и работает на последней стабильной версии Varnish4. Однако этот раздел VCL:

vcl 4.0;

sub vcl_init {
    # ...

    # Normalize query arguments
    set req.url = std.querysort(req.url);
}
                  ^

Возвращает эту ошибку:

-- Logs begin at Tue 2016-03-15 10:44:31 UTC, end at Tue 2016-03-15 13:02:10 UTC. --
Mar 15 13:02:10 ip-172-31-10-46 reload-vcl[18044]: Message from VCC-compiler:
Mar 15 13:02:10 ip-172-31-10-46 reload-vcl[18044]: Symbol not found: 'std.querysort' (expected type STRING_LIST):
Mar 15 13:02:10 ip-172-31-10-46 reload-vcl[18044]: ('/etc/varnish/test.vcl' Line 55 Pos 23)
Mar 15 13:02:10 ip-172-31-10-46 reload-vcl[18044]: set req.url = std.querysort(req.url);
Mar 15 13:02:10 ip-172-31-10-46 reload-vcl[18044]: ----------------------#############----------
Mar 15 13:02:10 ip-172-31-10-46 reload-vcl[18044]: Running VCC-compiler failed, exited with 2
Mar 15 13:02:10 ip-172-31-10-46 reload-vcl[18044]: VCL compilation failed

Должен ли я включить мод или как-то определить std?


person NoChecksum    schedule 15.03.2016    source источник


Ответы (1)


Да! Я наткнулся на ответ внутри другого ответа. Добавление import std; в начало скрипта остановило ошибку.

vcl 4.0;
import std;

sub vcl_init {
    # ...

    # Normalize query arguments
    set req.url = std.querysort(req.url);
}
person NoChecksum    schedule 15.03.2016
comment
Спасибо! Лично я бы изменил URL-адрес в vcl_recv вместо vcl_init. Обычно vcl_init используется только для инициализации модов. - person Martijn Heemels; 22.03.2016