Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Made a start on asynchronous code #117

Closed
wants to merge 9 commits into from
Closed

Conversation

chrisleow
Copy link

Hi All,

I've made a start on converting all your good work to be fully asynchronous. I've updated the clients (RiakClient, RiakAsyncClient), nodes, endpoints, clusters etc... All unit tests have been updated are working apart from the Async client ones, which I've commented out for now. Integration tests are broken, because of batching.

All the major files should now have method should return "Task<....>", which leads to some pretty long method signatures!

The following has not been done:

  • Batching, not sure what it does exactly, so I've left it for now.
  • RiakConnection is a wrapper around sync code, so it's STILL BLOCKING.
  • Integration tests are not updated.
  • No testing done against live clients, code will probably have a few completely fatal bugs.

I hope we can test against this internal fix-up of the code for asynchronous dev, and then it should be quite easy to convert RiakConnection to be completely non-blocking with some asynchronous socket-fu.

OJ and others added 8 commits February 20, 2013 15:50
…nd all connection code, up tho the level of RiakConnection.cs which is STILL BLOCKING. Have NOT ported Batching, as I don't quite understand it! All unit tests pass, but have not tested on a real DB yet.
…ynchronous. Tested with a console app, as I can't get the cluster going on my local machine...
@OJ
Copy link
Contributor

OJ commented May 2, 2013

Hi Chris,

Thanks very much for all your effort on this. We'll do our best to review your changes over the coming days and get back to you.

Cheers
OJ

@chrisleow
Copy link
Author

Hi OJ, happy to help :)

Just in case you're not aware, I've committed the rest of the code and tested it briefly, so it all appears to work. That is, everything is asynchronous and non-blocking.

Chris

@peschkaj
Copy link
Contributor

Howdy @chrisleow, we've been sitting on this for two months while we pushed out CorrugatedIron 1.4.0. Now that we're on feature parity with Riak, we're ready to take a look at better async/nonblocking support in CorrugatedIron.

After finding some an idle connection bug in our connection pool, we're going to scrap our existing work and put together a new connection pooling implementation that avoids the problems we've run into.

Apologies for sitting on this for so long without a yay or nay on our side. Since we're going to be gutting the connections, this merge would be painful. Thank you, though, for putting the work in on it.

@peschkaj peschkaj closed this Jul 18, 2013
@chrisleow
Copy link
Author

Ok no problem, good luck!

@OJ
Copy link
Contributor

OJ commented Jul 19, 2013

Thanks for your contribution Chris! Please don't think we've ditched your efforts at all. Much of what you've done has influenced what we're doing with our final implementation. Your name will definitely be included in the credits.

Thanks!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants