Skip to content

ngx_postgres module does not support subrequests in memory #24

@c0de9en

Description

@c0de9en

Пытаюсь дёрнуть постгрес из njs:

function dbtst(r) {
  r.subrequest('/dbtst/302834/', '', function(res) {
    r.warn('DEBUG: res.status=' + res.status + ';');
  });
}

Получаю в логе:

2018/06/29 12:44:55 [error] 30069#30069: *149 postgres: ngx_postgres module does not support subrequests in memory, client: 127.0.0.1, server: localhost, request: "GET /jstst/ HTTP/1.1", subrequest: "/dbtst/302834/", host: "localhost:8009"
2018/06/29 12:44:55 [warn] 30069#30069: *149 js: DEBUG: res.status=500;

В коде ngx_postgres есть такие буковки:

if (r->subrequest_in_memory) {
        /* TODO: add support for subrequest in memory by
         * emitting output into u->buffer instead */

        ngx_log_error(NGX_LOG_ERR, r->connection->log, 0,
                      "postgres: ngx_postgres module does not support"
                      " subrequests in memory");

        dd("returning NGX_HTTP_INTERNAL_SERVER_ERROR");
        return NGX_HTTP_INTERNAL_SERVER_ERROR;
}

В то же время, из lua модуля подобный подзапрос работает. Но lua как раз пытаюсь заменить njs'ом. Как правильнее решить проблему? Понятно, что идеально было бы допилить ngx_postgres, но просить агента ж бесполезно, а сам я врядли смогу сделать приемлемый патч.

Возможно ли добавить опцию в r.subrequest, чтобы можно было делать не in-memory подзапросы?

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions