<feed xmlns='http://www.w3.org/2005/Atom'>
<title>unit.git, branch 0.2</title>
<subtitle>Universal Web Application Server</subtitle>
<link rel='alternate' type='text/html' href='https://git.sigsegv.uk/unit.git/'/>
<entry>
<title>Introduced deb packages building tools.</title>
<updated>2017-10-19T15:23:32+00:00</updated>
<author>
<name>Andrei Belov</name>
<email>defan@nginx.com</email>
</author>
<published>2017-10-19T15:23:32+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sigsegv.uk/unit.git/commit/?id=156877f3c99b54c78e3cae111542f5519a97a68a'/>
<id>156877f3c99b54c78e3cae111542f5519a97a68a</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Introduced rpm packages building tools.</title>
<updated>2017-10-19T15:23:31+00:00</updated>
<author>
<name>Andrei Belov</name>
<email>defan@nginx.com</email>
</author>
<published>2017-10-19T15:23:31+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sigsegv.uk/unit.git/commit/?id=eabe25d98e6805221025daf7bc60d881af1af6b1'/>
<id>eabe25d98e6805221025daf7bc60d881af1af6b1</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Fixing Go package build.</title>
<updated>2017-10-19T15:20:08+00:00</updated>
<author>
<name>Max Romanov</name>
<email>max.romanov@nginx.com</email>
</author>
<published>2017-10-19T15:20:08+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sigsegv.uk/unit.git/commit/?id=c8a8a7c2120e276777f97dcee6d489788417792a'/>
<id>c8a8a7c2120e276777f97dcee6d489788417792a</id>
<content type='text'>
Go package build was broken by change 365:28b2a468be43.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Go package build was broken by change 365:28b2a468be43.
</pre>
</div>
</content>
</entry>
<entry>
<title>Added version 0.2 CHANGES.</title>
<updated>2017-10-19T14:54:29+00:00</updated>
<author>
<name>Igor Sysoev</name>
<email>igor@sysoev.ru</email>
</author>
<published>2017-10-19T14:54:29+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sigsegv.uk/unit.git/commit/?id=f9f852008fcbe94c099d9d42cef010d74fea2574'/>
<id>f9f852008fcbe94c099d9d42cef010d74fea2574</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Added changelogs generation tools.</title>
<updated>2017-10-19T14:48:58+00:00</updated>
<author>
<name>Andrei Belov</name>
<email>defan@nginx.com</email>
</author>
<published>2017-10-19T14:48:58+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sigsegv.uk/unit.git/commit/?id=8ca14503b7cecc90a499d13bf3cbcab4fd7e48d7'/>
<id>8ca14503b7cecc90a499d13bf3cbcab4fd7e48d7</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Fixed controller restarting.</title>
<updated>2017-10-19T14:43:54+00:00</updated>
<author>
<name>Valentin Bartenev</name>
<email>vbart@nginx.com</email>
</author>
<published>2017-10-19T14:43:54+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sigsegv.uk/unit.git/commit/?id=e7d81186b59b5e0681a099cc993365961b09752e'/>
<id>e7d81186b59b5e0681a099cc993365961b09752e</id>
<content type='text'>
Previously, stored configuration wasn't reread on controller
process restart, which resulted in segmentation fault.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Previously, stored configuration wasn't reread on controller
process restart, which resulted in segmentation fault.
</pre>
</div>
</content>
</entry>
<entry>
<title>Keep application worker until response for all requests received.</title>
<updated>2017-10-19T14:37:26+00:00</updated>
<author>
<name>Max Romanov</name>
<email>max.romanov@nginx.com</email>
</author>
<published>2017-10-19T14:37:26+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sigsegv.uk/unit.git/commit/?id=fc6520d722d939230b8f9652dfc0a3040622d3df'/>
<id>fc6520d722d939230b8f9652dfc0a3040622d3df</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Filtering process to keep connection.</title>
<updated>2017-10-19T14:37:19+00:00</updated>
<author>
<name>Max Romanov</name>
<email>max.romanov@nginx.com</email>
</author>
<published>2017-10-19T14:37:19+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sigsegv.uk/unit.git/commit/?id=b3aab8c66fa7269147a6696c98a52971020be6e8'/>
<id>b3aab8c66fa7269147a6696c98a52971020be6e8</id>
<content type='text'>
- Main process should be connected to all other processes.
- Controller should be connected to Router.
- Router should be connected to Controller and all Workers.
- Workers should be connected to Router worker thread ports only.

This filtering helps to avoid unnecessary communication and various errors
during massive application workers stop / restart.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
- Main process should be connected to all other processes.
- Controller should be connected to Router.
- Router should be connected to Controller and all Workers.
- Workers should be connected to Router worker thread ports only.

This filtering helps to avoid unnecessary communication and various errors
during massive application workers stop / restart.
</pre>
</div>
</content>
</entry>
<entry>
<title>Introducing mmap_handler to count references to shared memory.</title>
<updated>2017-10-19T14:37:02+00:00</updated>
<author>
<name>Max Romanov</name>
<email>max.romanov@nginx.com</email>
</author>
<published>2017-10-19T14:37:02+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sigsegv.uk/unit.git/commit/?id=6031c63225838d6bc266c4f015d9a1085f600324'/>
<id>6031c63225838d6bc266c4f015d9a1085f600324</id>
<content type='text'>
                          "All problems in computer science can be
                           solved by another level of indirection"

                                                   Butler Lampson

Completion handlers for application response buffers executed after
sending the data to client.  Application worker can be stopped right
after send response buffers to router.  Worker stop causes removal
of all data structures for the worker.

To prevent shared memory segment unmap, need to count the number of
buffers which uses it.  So instead of direct reference to shared
memory, need to reference to intermediate 'handler' structure with
use counter and pointer to shared memory.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
                          "All problems in computer science can be
                           solved by another level of indirection"

                                                   Butler Lampson

Completion handlers for application response buffers executed after
sending the data to client.  Application worker can be stopped right
after send response buffers to router.  Worker stop causes removal
of all data structures for the worker.

To prevent shared memory segment unmap, need to count the number of
buffers which uses it.  So instead of direct reference to shared
memory, need to reference to intermediate 'handler' structure with
use counter and pointer to shared memory.
</pre>
</div>
</content>
</entry>
<entry>
<title>Supporting concurrent shared memory fd receive in router.</title>
<updated>2017-10-19T14:36:56+00:00</updated>
<author>
<name>Max Romanov</name>
<email>max.romanov@nginx.com</email>
</author>
<published>2017-10-19T14:36:56+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sigsegv.uk/unit.git/commit/?id=6532e46465276efcedae299ce290eb8dff0ece57'/>
<id>6532e46465276efcedae299ce290eb8dff0ece57</id>
<content type='text'>
Two different router threads may send different requests to single
application worker.  In this case shared memory fds from worker
to router will be send over 2 different router ports.  These fds
will be received and processed by different threads in any order.

This patch made possible to add incoming shared memory segments in
arbitrary order.  Additionally, array and memory pool are no longer
used to store segments because of pool's single threaded nature.

Custom array-like structure nxt_port_mmaps_t introduced.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Two different router threads may send different requests to single
application worker.  In this case shared memory fds from worker
to router will be send over 2 different router ports.  These fds
will be received and processed by different threads in any order.

This patch made possible to add incoming shared memory segments in
arbitrary order.  Additionally, array and memory pool are no longer
used to store segments because of pool's single threaded nature.

Custom array-like structure nxt_port_mmaps_t introduced.
</pre>
</div>
</content>
</entry>
</feed>
