Ngx_openresty devel version 1.2.3.1 released

Hi, guys!

I am happy to announce the new development version of ngx_openresty,
1.2.3.1:

OpenResty® - Open source

Special thanks go to all our contributors and users for making this
happen!

Below is the complete change log for this release, as compared to the
last (stable) release, 1.2.1.14:

  • upgraded the Nginx core to 1.2.3.

  • upgraded LuaNginxModule to 0.6.2.

    • feature: (re)implemented the standard Lua coroutine API,
      which means that the user is now free to create and run
      their own coroutines within the boilerplate coroutine
      created automatically by LuaNginxModule. thanks chaoslawful
      and jinglong for the design and implementation.

    • feature: added new dtrace static probes for the user
      coroutine mechanism: “http-lua-coroutine-create” and
      “http-lua-coroutine-resume”.

    • feature: added new dtrace static probes for the cosocket
      mechanism: “http-lua-socket-tcp-send-start”,
      “http-lua-socket-tcp-receive-done”, and
      “http-lua-socket-tcp-keepalive-buf-unread”.

    • bugfix: the send timeout timer for downstream output was not
      deleted in time in our write event handler, which might
      result in request abortion for long running requests. thanks
      Demiao Lin (ldmiao) for reporting this issue.

    • bugfix: tcpsock:send() might send garbage if it was not the
      first call: we did not properly initialize the chain writer
      ctx for every “send()” call. thanks Zhu Dejiang for
      reporting this issue.

    • bugfix: the “ngx_http_lua_probe.h” header file was not
      listed in the “NGX_ADDON_DEPS” list in the “config” file.

    • optimize: removed unnecessary code that was for the old
      coroutine abortion mechanism based on Lua exceptions. we no
      longer need that at all because we have switched to using
      coroutine yield to abort the current coroutine for
      “ngx.exec”, “ngx.exit”, “ngx.redirect”, and
      “ngx.req.set_uri(uri, true)”.

  • upgraded LuaRestyDNSLibrary to 0.06.

    • feature: added support for MX type resource records.

    • feature: unrecognized types of resource records will return
      their raw resource data (RDATA) as the “rdata” Lua table
      field.

  • upgraded LuaRestyRedisLibrary to 0.13.

    • feature: added new method read_reply, mostly for using the
      Redis Pub/Sub API.

    • feature: added new class method add_commands to allow adding
      support for new Redis commands on-the-fly. thanks Praveen
      Saxena for requesting this feature.

    • docs: added a code sample for using the Redis transactions.

  • upgraded DrizzleNginxModule to 0.1.4.

    • bugfix: the “open socket #N left in connection” alerts would
      appear in the nginx error log file when the MySQL/Drizzle
      connection pool was used and the worker process was shutting
      down.
  • upgraded PostgresNginxModule to 1.0rc2.

    • bugfix: the “open socket #N left in connection” alerts would
      appear in the nginx error log file when the PostgreSQL
      connection pool was used and the worker process was shutting
      down.

    • bugfix: removed the useless http-cache related code from
      “ngx_postgres_upstream_finalize_request” to suppress clang
      warnings.

  • added more dtrace static probes to the Nginx core: “timer-add”,
    “timer-del”, and “timer-expire”.

  • added more systemtap tapset functions: “ngx_chain_next”,
    “ngx_chain_writer_ctx_out”, “ngx_chain_dump”, and
    “ngx_iovec_dump”.

The HTML version of the change contains some helpful hyper-links and
can be browsed here:

http://openresty.org/#ChangeLog1002003

OpenResty (aka. ngx_openresty) is a full-fledged web application
server by bundling the standard Nginx core, lots of 3rd-party Nginx
modules, as well as most of their external dependencies. See
OpenResty’s homepage for details:

http://openresty.org/

We have been running extensive testing on our Amazon EC2 test cluster
and ensure that all the components (including the Nginx core) play
well together. The latest test report can always be found here:

http://qa.openresty.org

Enjoy!
-agentzh