Commit Graph

105 Commits

Author SHA1 Message Date
R. Tyler Croy 5581fe0d3a
Implement some Connection category commands 2019-01-06 16:53:13 -08:00
R. Tyler Croy ba41d474dc
Document the Connection command status 2019-01-06 16:24:21 -08:00
R. Tyler Croy 327c53f969
Catalogue the commands implemented from the Strings section 2019-01-06 16:16:27 -08:00
R. Tyler Croy 46e7ef21f5
Fix the table header for the Keys table 2019-01-06 16:12:30 -08:00
R. Tyler Croy 8d8b28eaa0
Start documenting compatibility by section 2019-01-06 16:11:26 -08:00
R. Tyler Croy 35c7c9463c
Add a no-opped unit test for Handle_Del 2019-01-06 16:00:11 -08:00
R. Tyler Croy fe40a7d638
Add support for the DEL command 2019-01-06 15:53:05 -08:00
R. Tyler Croy 033557f713
Reformat all the Mozzoni code to be a bit more readable
Just using GPS' built in "Format Selection"
2019-01-06 15:26:15 -08:00
R. Tyler Croy 3795b028c3
Add support for the EXISTS command 2019-01-06 15:19:18 -08:00
R. Tyler Croy 5e8b1cad12
Always regenerate the gnattest harness just to be sure it always works 2019-01-06 12:37:50 -08:00
R. Tyler Croy d73bb4d269
No-op the tests for Mozzoni.Commands.Keys for the moment 2019-01-06 12:37:05 -08:00
R. Tyler Croy 96b9a9a458
Add some tests for Mozzon.Commands; 2019-01-06 12:37:04 -08:00
R. Tyler Croy c772aabe9f
Implement some basic sanity-checking test cases for Mozzoni.Client
While this doesn't really give me much confidence right now, it does get us
closer to some form of functionally passing unit tests
2019-01-06 12:37:04 -08:00
R. Tyler Croy 24f48ff91b
Add some simplistic unit tests for Mozzoni.Dispatch 2019-01-06 11:41:44 -08:00
R. Tyler Croy 1bc7cf2008
Refactor out the Epoll shim and incorporate async-ada as well.
This is still using the raw epoll interfaces in the main subprogram, but I would
like to see some nicer abstraction happen here.
2019-01-06 11:19:30 -08:00
R. Tyler Croy d972d64a11
Add a helpful little run target to the makefile 2019-01-05 21:32:04 -08:00
R. Tyler Croy e1f6c6dc30
Add cloning instructions to the readme 2019-01-05 21:29:33 -08:00
R. Tyler Croy 4dfb0104f6
Drop Alog in favor of Logga
This cleans up a lot of silly build system hacks
2019-01-05 21:28:48 -08:00
R. Tyler Croy c39ee3abbc
Add more information on getting started with Mozzoni to the readme 2019-01-05 15:23:48 -08:00
R. Tyler Croy c05aa19c5d
Make the Makefile a wee bit more self-documenting
Clever little hack, I like it!
2019-01-05 14:51:00 -08:00
R. Tyler Croy 42ed075e0d
Remove some unnecessary log messages and avoid creating too many strings in Keys
I'm hunting down some performance challenges in gprof, and these don't seem to
have had any effect
2019-01-05 12:40:02 -08:00
R. Tyler Croy 853b471baf
Add new epoll(7) improved metrics! 2019-01-05 11:41:29 -08:00
R. Tyler Croy 604c7da21e
Commit some changes to the generated test files 2019-01-05 11:39:34 -08:00
R. Tyler Croy bafdaecae7
Re-order the epoll event loop a bit to handle EPOLLIN | EPOLLRDHUP events
These events are associated with normal shutdowns of the socket wherein we have
the last few bytes to read on the socket before shutting it down.
2019-01-05 11:38:29 -08:00
R. Tyler Croy f34e8eaa10
EPOLLET just makes everything more complicated and worse
Removing this since it's not necessary and very easy to screw up :-/
2019-01-05 11:37:28 -08:00
R. Tyler Croy 260dc13ba7
Log which descriptor is being disconnected 2019-01-05 10:23:47 -08:00
R. Tyler Croy 205e5d60c7
Refactor and rework the epoll utilization in the main subprogram
The primary issue addressed here is the creation of a new stack-allocated
Event_Type whenever we're added a socket to the epoll file descriptor. The
behavior previously was re-using the same object, and I _believe_ resulting in
only one socket (last one wins) being monitored.

With this change we're properly handling concurrent connections
2019-01-05 09:54:02 -08:00
R. Tyler Croy 04c5d631f3
Add a comment about what we're likely getting with an EINTR in Read() 2019-01-05 09:53:09 -08:00
R. Tyler Croy b1b408f429
Modify the Epoll interface to properly handle the Event_Type
The removal of `aliased` for the Data_Type seems to correct any interop issues
with the Event_Type in and out of epoll_wait(2)

👏
2019-01-05 09:51:56 -08:00
R. Tyler Croy 7d01ee6117
Tweak the buffer sizes a bit
Still seeing weird behavior where the event loop disconnects clients even though
the clients don't believe they should yet be disconnected.

Basically ./redis-benchmark and mozzonid disagree after some amount of time
about who should be connected and who shouldn't
2018-12-25 17:39:54 -08:00
R. Tyler Croy ecaa1951e7
Properly handle EINTR from read(2) and retry
I believe something is causing this to erroneously happen, resulting in a
performance loss
2018-12-25 17:30:18 -08:00
R. Tyler Croy c02799024a
fixup! Support disconnecting when the Epoll event is EPOLLHUP 2018-12-25 17:30:12 -08:00
R. Tyler Croy 9f2d5c3710
Support disconnecting when the Epoll event is EPOLLHUP
This _appears _to be working fine, not 100% certain however
2018-12-25 17:20:29 -08:00
R. Tyler Croy c71fc440da
Entering 's' should dump some debugging status 2018-12-25 17:19:57 -08:00
R. Tyler Croy 8162c06d53
Refactor an unnecessary procedure out of the main subprogram
Not needed if we're only calling it once
2018-12-25 17:19:33 -08:00
R. Tyler Croy d8a1f0081c
Add the necessary supporting code to close and deregister clients when they're done 2018-12-25 17:19:01 -08:00
R. Tyler Croy 682b508e0e
Remove the fake-client script 2018-12-25 15:48:13 -08:00
R. Tyler Croy edd16a5711
Tighten up the Epoll binding properly 2018-12-25 15:47:51 -08:00
R. Tyler Croy 7e01d74602
Ignore some auto-generated files in the root directory 2018-12-24 14:28:40 -08:00
R. Tyler Croy 1f173a2e69
Remove a number of inefficient logging statements
These logger statements result in significant amounts of CPU time spent logging
or allocating/finalizing unbounded strings. That's not great :-/
2018-12-24 14:27:03 -08:00
R. Tyler Croy 92649019ee
Add support for generating profiling output from the daemon 2018-12-24 14:26:08 -08:00
R. Tyler Croy cb71b71326
Refactor the main subprogram to add more log messages 2018-12-24 11:47:51 -08:00
R. Tyler Croy c8afe67ce9
Update the epoll_wait(2) mapping to take an array more properly 2018-12-24 11:47:29 -08:00
R. Tyler Croy 08bf4032a4
Reduce the Epoll Events array to just one element
It appears that there is some marshalling between Ada and C that is resulting in
the boundaries of this array of pointers to not work properly. With larger array
sizes, whenever there are concurrent connections to Mozzoni it results in
invalid Polled_Event.Data.FD values.

This is a **hack** right now, and the underlying bug still remains at large.
2018-12-24 11:45:55 -08:00
R. Tyler Croy 502353f431
Add a bit more clear logging and error handling inside of the main procedure
Right now when benchmarking mozzoni it is getting an EINVAL on read(2). So
something is fishy with the epoll(2) support here
2018-12-21 21:36:27 -08:00
R. Tyler Croy 0a4e313371
Finish up the support for the SET command and its options
This includes a number of tidying up in the acceptance tests. Along with the
cleaning up, I discovered some logic errors in the code handling requests, etc
2018-12-21 21:01:43 -08:00
R. Tyler Croy 525d81adbe
Remove the unused Mozzoni.Parser package 2018-12-21 16:45:43 -08:00
R. Tyler Croy 1dd732ae14
Ensure the right flags are present for running other gprbuild related tasks 2018-12-21 16:45:43 -08:00
R. Tyler Croy e9a8861298
Use a simple aggregate project to ensure that ALOG_VERSION is *always* set
This is silly, but a reasonable hack IMO

Fixes #1
2018-12-19 21:06:13 -08:00
R. Tyler Croy 80a591a352
Incorporate a local hacked version of Alog
Thus far ALOG_VERSION needs to be set, doesn't seem to be a good way around that
2018-12-19 21:06:08 -08:00