[ https://issues.apache.org/jira/browse/THRIFT-4176?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15973260#comment-15973260 ]
Allen George edited comment on THRIFT-4176 at 4/18/17 6:44 PM: --------------------------------------------------------------- [~codesf] That's a very fair point. For some reason I assumed it was a requirement to have different server implementations. I think most Rust users would really like to see both a server and client based on async sockets in [Tokio|https://tokio.rs]. Unfortunately Tokio is fairly new, and, I need some time getting up to speed on it. It's mostly the "needs to mature a bit" aspect that keeps me from using it. I have been working a bit on this ticket [here|https://github.com/allengeorge/thrift/commit/66198a10a8e243cc73478af89fa3fb137acbfd8c] (ignore the commit date - I'm rebasing), but most of the changes center around making components threadsafe and more ergonomic. With that in mind, how about this as a plan forward: # Replace the current single-threaded, synchronous {{TSimpleServer}} with a {{TThreadpoolServer}} based on Rust stdlib synchronous sockets. A threadpool-based server is probably good enough for most people right now, because you can configure it to get either simple-server-like behavior or unbounded-threaded-server behavior. # As soon as the new threadpool-server is in, work on a Tokio-based replacement. This is a much longer-term project because I'll have to rework many IO components to be async. This means that at any point and time we'll only have a single Rust server type and avoid the situation in THRIFT-3096. Does that sound like a reasonable approach? And, [~jking3] hopefully we don't have the same issue with the Rust codebase :) was (Author: allengeorge): [~codesf] That's a very fair point. For some reason I assumed it was a requirement to have different server implementations. I think most Rust users would really like to see both a server and client based on async sockets in [Tokio|tokio.rs]. Unfortunately Tokio is fairly new, and, I need some time getting up to speed on it. It's mostly the "needs to mature a bit" aspect that keeps me from using it. I have been working a bit on this ticket [here|https://github.com/allengeorge/thrift/commit/66198a10a8e243cc73478af89fa3fb137acbfd8c] (ignore the commit date - I'm rebasing), but most of the changes center around making components threadsafe and more ergonomic. With that in mind, how about this as a plan forward: # Replace the current single-threaded, synchronous {{TSimpleServer}} with a {{TThreadpoolServer}} based on Rust stdlib synchronous sockets. A threadpool-based server is probably good enough for most people right now, because you can configure it to get either simple-server-like behavior or unbounded-threaded-server behavior. # As soon as the new threadpool-server is in, work on a Tokio-based replacement. This is a much longer-term project because I'll have to rework many IO components to be async. This means that at any point and time we'll only have a single Rust server type and avoid the situation in THRIFT-3096. Does that sound like a reasonable approach? And, [~jking3] hopefully we don't have the same issue with the Rust codebase :) > Implement a threaded and threadpool server type for Rust > -------------------------------------------------------- > > Key: THRIFT-4176 > URL: https://issues.apache.org/jira/browse/THRIFT-4176 > Project: Thrift > Issue Type: Improvement > Components: Rust - Library > Reporter: Allen George > Assignee: Allen George > > Currently the Rust client library only provides a single-threaded server. Add > both a multi-threaded server and a threadpool-based server and add the > relevant options to the cross-test code as well. -- This message was sent by Atlassian JIRA (v6.3.15#6346)