yahns Ruby server user/dev discussion
 help / color / mirror / code / Atom feed
Search results ordered by [date|relevance]  view[summary|nested|Atom feed]
thread overview below | download mbox.gz: |
* [ANN] yahns 1.11.0 -_- sleepy app server for Ruby
@ 2015-12-13  2:26  4% Eric Wong
  0 siblings, 0 replies; 2+ results
From: Eric Wong @ 2015-12-13  2:26 UTC (permalink / raw)
  To: ruby-talk; +Cc: yahns-public

A Free Software, multi-threaded, non-blocking network application server
designed for low _idle_ power consumption.  It is primarily optimized
for applications with occasional users which see little or no traffic.
yahns currently hosts Rack/HTTP applications, but may eventually support
other application types.  Unlike some existing servers, yahns is
extremely sensitive to fatal bugs in the applications it hosts.

Changes:

    yahns 1.11.0 - more minor updates

    There's some minor test case fixes and documentation updates.

    For OpenSSL users running the Ruby 2.3.0 preview releases,
    we now use `exception: false' for for accept_nonblock to reduce
    exceptions.  Non-SSL I/O still uses kgio for now.

    6 changes since 1.10.0:
          wbuf: fix typo in bug check for sendfile gem
          test_wbuf: deal with proper zero-copy for Unix sockets
          README: clarify and update copyright year
          doc: document and reference sd_listen_fds(3) behavior
          test_server: fix race condition in hooks test
          openssl_client: use `exception: false' for accept_nonblock

Please note the disclaimer:

  yahns is extremely sensitive to fatal bugs in the apps it hosts.  There
  is no (and never will be) any built-in "watchdog"-type feature to kill
  stuck processes/threads.  Each yahns process may be handling thousands
  of clients; unexpectedly killing the process will abort _all_ of those
  connections.  Lives may be lost!

  yahns hackers are not responsible for your application/library bugs.
  Use an application server which is tolerant of buggy applications
  if you cannot be bothered to fix all your fatal bugs.

* git clone git://yhbt.net/yahns
* http://yahns.yhbt.net/README
* http://yahns.yhbt.net/NEWS.atom.xml
* we only accept plain-text email yahns-public@yhbt.net
* and archive all the mail we receive: http://yhbt.net/yahns-public/
* nntp://news.public-inbox.org/inbox.comp.lang.ruby.yahns

^ permalink raw reply	[relevance 4%]

* [PATCH] test_wbuf: deal with proper zero-copy for Unix sockets
@ 2015-12-01  3:48  7% Eric Wong
  0 siblings, 0 replies; 2+ results
From: Eric Wong @ 2015-12-01  3:48 UTC (permalink / raw)
  To: yahns-public

Linux 4.2 gained the ability to do true zero-copy sendfile support
for Unix sockets; so buffer space is accounted differently.
Previously Linux only avoided copies in userspace when doing
sendfile for Unix sockets, not internally within the kernel.

This kernel change has no bearing on normal code which would need to
account for concurrent draining by the client; only test code
designed to create a failure condition.
---
 test/test_wbuf.rb | 13 +++++++++++--
 1 file changed, 11 insertions(+), 2 deletions(-)

diff --git a/test/test_wbuf.rb b/test/test_wbuf.rb
index 0eacb08..0d7959c 100644
--- a/test/test_wbuf.rb
+++ b/test/test_wbuf.rb
@@ -71,8 +71,17 @@ class TestWbuf < Testcase
       end while true
     end
     wbuf = Yahns::Wbuf.new([], true, Dir.tmpdir, :wait_writable)
-    assert_equal :wait_writable, wbuf.wbuf_write(a, buf)
-    assert_equal :wait_writable, wbuf.wbuf_flush(a)
+
+    rv1 = wbuf.wbuf_write(a, buf)
+    rv2 = wbuf.wbuf_flush(a)
+    case rv1
+    when nil
+      assert_equal true, rv2, 'some kernels succeed with real sendfile'
+    when :wait_writable
+      assert_equal :wait_writable, rv2, 'some block on sendfile'
+    else
+      flunk "unexpected from wbuf_write/flush: #{rv1.inspect} / #{rv2.inspect}"
+    end
 
     # drain the buffer
     Timeout.timeout(10) { b.read(b.nread) until b.nread == 0 }
-- 
EW


^ permalink raw reply related	[relevance 7%]

Results 1-2 of 2 | reverse | options above
-- pct% links below jump to the message on this page, permalinks otherwise --
2015-12-01  3:48  7% [PATCH] test_wbuf: deal with proper zero-copy for Unix sockets Eric Wong
2015-12-13  2:26  4% [ANN] yahns 1.11.0 -_- sleepy app server for Ruby Eric Wong

Code repositories for project(s) associated with this public inbox

	https://yhbt.net/yahns.git/

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).