Hi Johnathan,

We try to avoid monster patches because they are hard to review. That said,
if everything is focused on adding and supplying tests for a single issue,
then one patch or pull request is probably appropriate.

Best,
Randy

On Tue, Oct 27, 2015 at 4:47 AM, Jonathan Heard (JIRA) <j...@apache.org>
wrote:

>
>     [
> https://issues.apache.org/jira/browse/THRIFT-3397?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14976263#comment-14976263
> ]
>
> Jonathan Heard edited comment on THRIFT-3397 at 10/27/15 11:47 AM:
> -------------------------------------------------------------------
>
> Please can I have some advice about how you like to do things in the
> Thrift team... I'm close to submitting my pull request but would like to
> check a few things.
>
> My local branch for this issue has the following commits:
> 7bca7ff THRIFT-3397 Implemented \-\-server-type flag or C# TestServer in
> line with test/README.md examples. Added '\-\-processor' flag to enable
> selection of new TPrototypeProcessorFactory (--prototype OR
> --processor=prototype)
> 333b77d THRIFT-3397 Remove testStop() method. It's not in the
> ThriftTest.thrift spec and when using TPrototypeFactory it becomes tricky
> to allow a handler the ability to stop its own server.
> a9dced0 THRIFT-3397 Set windows console height to maximum and enlarge
> scrollback buffer
> c52ced6 THRIFT-3397 Added clientID counter and logging delegate to
> TestClient.cs, refactored Console.Writeline in tests to Invoke the delegate
> with an implementation which automatically adds the clientID to the output.
> 965bfc8 THRIFT-3397 TestClient was calling Open then Close on every new
> Transport (i.e. Client thread '-t n') instance before passing it back to
> the caller. Modified so it now does this only once
> 95ee034 THRIFT-3397 Created TProcessorFactory interface, implemented at
> TSingletonProcessorFactory and TPrototypeProcessorFactory and updated
> TServer + implementations to use the singleton factory by default
>
> I have tried to ensure that each commit is limited to a particular change
> to aide traceability, however it looks like most of the existing history
> contains a single commit per JIRA ticket.
>
> What granularity is preferred for change control?  e.g. Should I be
> logging separate JIRA tickets for Library code vs Test code?
>
> This is my first contribution to the project so I want to ensure that I
> get it right.
>
>
> was (Author: jonathanh):
> Please can I have some advice about how you like to do things in the
> Thrift team... I'm close to submitting my pull request but would like to
> check a few things.
>
> My local branch for this issue has the following commits:
> 7bca7ff THRIFT-3397 Implemented --server-type flag or C# TestServer in
> line with test/README.md examples. Added '--processor' flag to enable
> selection of new TPrototypeProcessorFactory (--prototype OR
> --processor=prototype)
> 333b77d THRIFT-3397 Remove testStop() method. It's not in the
> ThriftTest.thrift spec and when using TPrototypeFactory it becomes tricky
> to allow a handler the ability to stop its own server.
> a9dced0 THRIFT-3397 Set windows console height to maximum and enlarge
> scrollback buffer
> c52ced6 THRIFT-3397 Added clientID counter and logging delegate to
> TestClient.cs, refactored Console.Writeline in tests to Invoke the delegate
> with an implementation which automatically adds the clientID to the output.
> 965bfc8 THRIFT-3397 TestClient was calling Open then Close on every new
> Transport (i.e. Client thread '-t n') instance before passing it back to
> the caller. Modified so it now does this only once
> 95ee034 THRIFT-3397 Created TProcessorFactory interface, implemented at
> TSingletonProcessorFactory and TPrototypeProcessorFactory and updated
> TServer + implementations to use the singleton factory by default
>
> I have tried to ensure that each commit is limited to a particular change
> to aide traceability, however it looks like most of the existing history
> contains a single commit per JIRA ticket.
>
> What granularity is preferred for change control?  e.g. Should I be
> logging separate JIRA tickets for Library code vs Test code?
>
> This is my first contribution to the project so I want to ensure that I
> get it right.
>
> > Implement TProcessorFactory in C# to enable per-client processors
> > -----------------------------------------------------------------
> >
> >                 Key: THRIFT-3397
> >                 URL: https://issues.apache.org/jira/browse/THRIFT-3397
> >             Project: Thrift
> >          Issue Type: New Feature
> >          Components: C# - Library
> >    Affects Versions: 0.9.3
> >            Reporter: Jonathan Heard
> >            Priority: Minor
> >              Labels: performance, thread-safety
> >   Original Estimate: 168h
> >  Remaining Estimate: 168h
> >
> > The current TServer implementations in C# take a single instance of a
> TProcessor to be used for all client connections. This is not guaranteed to
> be thread-safe and can become a significant bottleneck.
> > I am implementing a TProcessorFactory interface for C# which is similar
> to the ones already implemented in Java and C++. I'll generate a pull
> request for review soon.
> > The existing solutions implement TProcessorFactory as a class which
> takes a TProcessor and just returns that instance to all clients. I'm
> aiming to improve on that by creating a TProcessorFactory interface and
> then implementing it in two core classes:
> > 1) TSingletonProcessorFactory - this behaves the same as the Java
> 'TProcessorFactory' class.
> > 2) TPrototypeProcessorFactory<Processor,Handler> - this effectively
> returns a 'new Processor(Handler)' giving every new client its own
> processor.
> > In order to avoid breaking the existing API (and in-keeping with the
> Java implementation),  I have changed TServer so that it uses a
> TProcessorFactory instead of TProcessor and updated all relevant
> constructors so they call the TSingletonProcessorFactory for constructors
> using TProcessor. New constructors have been added to enable calling with
> TProcessorFactory. This approach should avoid breaking the established API
> and not break any existing code.
> > I've also updated the TestServer.cs to support these changes.
>
>
>
> --
> This message was sent by Atlassian JIRA
> (v6.3.4#6332)
>

Reply via email to