Ngx_openresty devel version 1.2.4.11 released

Hello, folks!

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

http://openresty.org/#Download

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

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

  • upgraded LuaNginxModule to 0.7.7.

    • feature: added ngx.req.start_time() to return the request
      starting time in seconds (the milliseconds part is the
      decimal part just as in ngx.now). thanks Matthieu T. for
      the patch.

    • feature: setting ngx.status or calling ngx.exit(N) (where "N

      = 300") after sending out response headers no longer yields
      a Lua exception but only leaves an error message in the
      error.log file, which is useful for Lua land debugging.
      thanks Matthieu T. for requesting this.

    • feature: the user can now call ngx.exit(444) to abort
      pending subrequests in other “light threads” from within a
      “light thread”.

    • feature: added new dtrace static probe
      “http-lua-user-thread-wait”.

    • bugfix: ngx.location.capture and ngx.location.capture_multi
      might hang infinitely because the parent request might not
      be waken up right after the first time the “post_subrequest”
      callback was called.

    • bugfix: the “light thread” object created by
      ngx.thread.spawn() or ngx.on_abort() might be prematurely
      collected by the Lua GC because we did not correctly
      register its coroutine object into the Lua regsitry table.
      this bug may crash the Lua VM and Nginx workers under load.
      thanks Zhu Dejiang for reporting this issue.

    • bugfix: ngx.thread.wait() might hang infinitely when more
      than 4 user “light threads” are created in the same request
      handler due to the incorrect use of “ngx_array_t” for
      “ngx_list_t”. thanks Junwei Shi for reporting this issue.

    • bugfix: when a user coroutine or user “light thread” dies
      with an error, our Lua backtrace dumper written in C may
      access one of its dead parent threads (if any) which could
      lead to segmentation faults.

    • bugfix: ngx.exit(N) incorrectly threw out Lua exceptions
      when “N” was 408, 499, or 444 and the response header was
      already sent. thanks Kindy Lin for reporting this issue.

    • bugfix: when the user callback function registered by
      ngx.on_abort() discarded the client abort event, the request
      would be aborted by force when the next client abort event
      happened.

    • bugfix: an English typo in the error message for
      init_by_lua*.

  • applied slab_alloc_no_memory_as_info.patch to lower the log
    level of the error message “ngx_slab_alloc() failed: no memory”
    from “crit” to “info”.

  • bugfix: the upstream_pipelining patch introduced a regression
    that when “upstream_next” is in action, Nginx might hang. thanks
    Kindy Lin for reporting this issue.

  • bugfix: include the latest chagnes in the LuaJIT 2.0 git
    repository (up to git commit 2ad9834d).

The HTML version of the change log with lots of helpful hyper-links
can be browsed here:

http://openresty.org/#ChangeLog1002004

OpenResty (aka. ngx_openresty) is a full-fledged web application server
by
bundling the standard Nginx core, lots of 3rd-party Nginx modules and
Lua
libraries, 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

Have fun!
-agentzh