You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by "Ted Zlatanov (JIRA)" <ji...@apache.org> on 2010/02/02 22:32:18 UTC

[jira] Created: (CASSANDRA-754) Pluggable API with a simple HTTP+JSON daemon

Pluggable API with a simple HTTP+JSON daemon
--------------------------------------------

                 Key: CASSANDRA-754
                 URL: https://issues.apache.org/jira/browse/CASSANDRA-754
             Project: Cassandra
          Issue Type: New Feature
          Components: Core
            Reporter: Ted Zlatanov
            Priority: Minor


Proposal of a simple pluggable API interface with a HTTP daemon implementation

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Updated: (CASSANDRA-754) Pluggable API with a simple HTTP+JSON daemon

Posted by "Ted Zlatanov (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/CASSANDRA-754?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Ted Zlatanov updated CASSANDRA-754:
-----------------------------------

    Attachment: 0003-renamed-daemon-classes.patch
                0002-renamed-Avro-API-classes.patch
                0001-renamed-API-classes.patch

The 0001-0003 patches simply move code around, no changes are made to the code yet so all the tests will break here.  I did it like this so rebasing will be simpler.

> Pluggable API with a simple HTTP+JSON daemon
> --------------------------------------------
>
>                 Key: CASSANDRA-754
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-754
>             Project: Cassandra
>          Issue Type: New Feature
>          Components: Core
>            Reporter: Ted Zlatanov
>            Assignee: Ted Zlatanov
>            Priority: Minor
>         Attachments: 0001-renamed-API-classes.patch, 0002-renamed-Avro-API-classes.patch, 0003-renamed-daemon-classes.patch, 001-CASSANDRA-754-api-reorg.patch, 001-CASSANDRA-754-api-reorg.patch, 002-CASSANDRA-754-thriftdaemon.patch, 002-CASSANDRA-754-thriftdaemon.patch, 003-CASSANDRA-754-configapi.patch, 003-CASSANDRA-754-configapi.patch, 004-CASSANDRA-754-onedaemon.patch, 005-CASSANDRA-754-avroconfig.patch, 006-CASSANDRA-754-daemonproperties.patch, 006-CASSANDRA-754-daemonproperties.patch, 007-CASSANDRA-754-stringproperties.patch, 100-CASSANDRA-754-rebased-api-reorg.patch, 100-CASSANDRA-754-rebased-api-reorg.patch, 101-CASSANDRA-754-binclass.patch, 101-CASSANDRA-754-binclass.patch, 102-CASSANDRA-754-hadoopfixes.patch
>
>
> Proposal of a simple pluggable API interface with a HTTP daemon implementation

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Commented: (CASSANDRA-754) Pluggable API with a simple HTTP+JSON daemon

Posted by "Ted Zlatanov (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/CASSANDRA-754?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12830187#action_12830187 ] 

Ted Zlatanov commented on CASSANDRA-754:
----------------------------------------

If we're going to validate configurations more thoroughly, as CASSANDRA-671 suggests, I thought it made sense to enumerate all the possible API properties and bail early if they are invalid.  Thinking about it,  I see that future APIs like HTTP and others may need much more dynamic configurations so I'll do as you suggested.  We can deal with CASSANDRA-671 when it's relevant.

> Pluggable API with a simple HTTP+JSON daemon
> --------------------------------------------
>
>                 Key: CASSANDRA-754
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-754
>             Project: Cassandra
>          Issue Type: New Feature
>          Components: Core
>            Reporter: Ted Zlatanov
>            Priority: Minor
>         Attachments: 001-CASSANDRA-754-api-reorg.patch, 001-CASSANDRA-754-api-reorg.patch, 002-CASSANDRA-754-thriftdaemon.patch, 002-CASSANDRA-754-thriftdaemon.patch, 003-CASSANDRA-754-configapi.patch, 003-CASSANDRA-754-configapi.patch, 004-CASSANDRA-754-onedaemon.patch, 005-CASSANDRA-754-avroconfig.patch, 006-CASSANDRA-754-daemonproperties.patch, 006-CASSANDRA-754-daemonproperties.patch
>
>
> Proposal of a simple pluggable API interface with a HTTP daemon implementation

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Updated: (CASSANDRA-754) Pluggable API with a simple HTTP+JSON daemon

Posted by "Ted Zlatanov (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/CASSANDRA-754?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Ted Zlatanov updated CASSANDRA-754:
-----------------------------------

    Attachment: 001-CASSANDRA-754-api-reorg.patch

This patch only changes the directory structure, moving cassandra.{avro,thrift} to cassandra.api.{avro,thrift}

All the relevant source files, interfaces, and bin/cassandra are updated.


> Pluggable API with a simple HTTP+JSON daemon
> --------------------------------------------
>
>                 Key: CASSANDRA-754
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-754
>             Project: Cassandra
>          Issue Type: New Feature
>          Components: Core
>            Reporter: Ted Zlatanov
>            Priority: Minor
>         Attachments: 001-CASSANDRA-754-api-reorg.patch, 001-CASSANDRA-754-http.patch
>
>
> Proposal of a simple pluggable API interface with a HTTP daemon implementation

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Commented: (CASSANDRA-754) Pluggable API with a simple HTTP+JSON daemon

Posted by "Eric Evans (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/CASSANDRA-754?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12835941#action_12835941 ] 

Eric Evans commented on CASSANDRA-754:
--------------------------------------

> The Thrift HTTP+JSON server is an interesting possibility here, it could coexist with the regular Thrift service and still serve the same API. Anyone interested in producing a patch? Or I could put one together...

So having gone through the discussion and arriving where we are now, I can 't see how exposing multiple combinations of transports and encodings from a framework already in use is any different than supporting similar combinations via a pluggable API, the end result is the same, no?

What problem are we trying to solve that can't be solved by a single remote API? Or is it that Thrift and/or Avro with a binary encoding is the wrong choice for the One True API and JSON is the right one?

If I'm being honest, I'm not at all interested in committing a change like this myself, regardless of how it is implemented, and more and more I'm leaning toward an outright veto (not something I would do lightly). 

I am still open to the idea that I'm wrong about this, I just haven't yet heard a compelling argument.

> Pluggable API with a simple HTTP+JSON daemon
> --------------------------------------------
>
>                 Key: CASSANDRA-754
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-754
>             Project: Cassandra
>          Issue Type: New Feature
>          Components: Core
>            Reporter: Ted Zlatanov
>            Assignee: Ted Zlatanov
>            Priority: Minor
>         Attachments: 0001-renamed-API-classes.patch, 0002-renamed-Avro-API-classes.patch, 0003-renamed-daemon-classes.patch, 0004-API-top-level-support.patch, 0005-adjust-references-to-point-to-new-API-classes.patch, 0006-adjust-Hadoop-and-tests.patch, v2-0001-CASSANDRA-754-use-less-specific-descriptors-for-Thrift.txt, v2-0002-start-avro-daemon-using-a-arg-to-startup-script.txt
>
>
> Proposal of a simple pluggable API interface with a HTTP daemon implementation

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Updated: (CASSANDRA-754) Pluggable API with a simple HTTP+JSON daemon

Posted by "Ted Zlatanov (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/CASSANDRA-754?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Ted Zlatanov updated CASSANDRA-754:
-----------------------------------

    Attachment:     (was: 001-CASSANDRA-754-http.patch)

> Pluggable API with a simple HTTP+JSON daemon
> --------------------------------------------
>
>                 Key: CASSANDRA-754
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-754
>             Project: Cassandra
>          Issue Type: New Feature
>          Components: Core
>            Reporter: Ted Zlatanov
>            Priority: Minor
>         Attachments: 001-CASSANDRA-754-http.patch
>
>
> Proposal of a simple pluggable API interface with a HTTP daemon implementation

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Updated: (CASSANDRA-754) Pluggable API with a simple HTTP+JSON daemon

Posted by "Ted Zlatanov (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/CASSANDRA-754?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Ted Zlatanov updated CASSANDRA-754:
-----------------------------------

    Attachment: 100-CASSANDRA-754-rebased-api-reorg.patch

The attached patch consolidates all the 00* patches and rebases against trunk as of now.  Because of the large amount of code I had to move around after rebasing, it would be greatly appreciated if this version could go into trunk so the next patch doesn't take me 4 hours to prepare.  I can make a differential against 007 but it's really painful because of the large drift since we started this ticket.

All the tests, including the embedded service test, pass.  Please see how I get access to the ThriftDaemon and ask it for its port and address.  Much better than the old way.  The test config is also changed to use the API approach, which the ThriftDaemon will automatically pick up through DatabaseDescriptor.

Once this is in I'll gladly start moving common {avro,thrift}/CassandraServer.java methods to the Storage* classes and improving things in general.

> Pluggable API with a simple HTTP+JSON daemon
> --------------------------------------------
>
>                 Key: CASSANDRA-754
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-754
>             Project: Cassandra
>          Issue Type: New Feature
>          Components: Core
>            Reporter: Ted Zlatanov
>            Priority: Minor
>         Attachments: 001-CASSANDRA-754-api-reorg.patch, 001-CASSANDRA-754-api-reorg.patch, 002-CASSANDRA-754-thriftdaemon.patch, 002-CASSANDRA-754-thriftdaemon.patch, 003-CASSANDRA-754-configapi.patch, 003-CASSANDRA-754-configapi.patch, 004-CASSANDRA-754-onedaemon.patch, 005-CASSANDRA-754-avroconfig.patch, 006-CASSANDRA-754-daemonproperties.patch, 006-CASSANDRA-754-daemonproperties.patch, 007-CASSANDRA-754-stringproperties.patch, 100-CASSANDRA-754-rebased-api-reorg.patch
>
>
> Proposal of a simple pluggable API interface with a HTTP daemon implementation

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Updated: (CASSANDRA-754) Pluggable API with a simple HTTP+JSON daemon

Posted by "Ted Zlatanov (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/CASSANDRA-754?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Ted Zlatanov updated CASSANDRA-754:
-----------------------------------

    Attachment: 001-CASSANDRA-754-http.patch

This is a proposal of an embedded HTTP server for Cassandra.  It's started statically right now but will be in the config file eventually.  There are some tests with curl shown in HTTPPluggableAPI.java.  The wrapper code is fairly robust while the actual query layout is very ad-hoc, intended to show my ideas.  It will need lots of polish (to specify ranges, for instance) but I need to know if the whole idea of a pluggable API, as shown in the patch, has a chance to get included in Cassandra.


> Pluggable API with a simple HTTP+JSON daemon
> --------------------------------------------
>
>                 Key: CASSANDRA-754
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-754
>             Project: Cassandra
>          Issue Type: New Feature
>          Components: Core
>            Reporter: Ted Zlatanov
>            Priority: Minor
>         Attachments: 001-CASSANDRA-754-http.patch
>
>
> Proposal of a simple pluggable API interface with a HTTP daemon implementation

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Commented: (CASSANDRA-754) Pluggable API with a simple HTTP+JSON daemon

Posted by "Ted Zlatanov (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/CASSANDRA-754?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12835210#action_12835210 ] 

Ted Zlatanov commented on CASSANDRA-754:
----------------------------------------

Stu, can you delete 001-003 to avoid confusion with 0001-0003?  I deleted all the other old patches by me.

Thanks!

> Pluggable API with a simple HTTP+JSON daemon
> --------------------------------------------
>
>                 Key: CASSANDRA-754
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-754
>             Project: Cassandra
>          Issue Type: New Feature
>          Components: Core
>            Reporter: Ted Zlatanov
>            Assignee: Ted Zlatanov
>            Priority: Minor
>         Attachments: 0001-renamed-API-classes.patch, 0002-renamed-Avro-API-classes.patch, 0003-renamed-daemon-classes.patch, 0004-API-top-level-support.patch, 0005-adjust-references-to-point-to-new-API-classes.patch, 0006-adjust-Hadoop-and-tests.patch, 001-CASSANDRA-754-api-reorg.patch, 002-CASSANDRA-754-thriftdaemon.patch, 003-CASSANDRA-754-configapi.patch
>
>
> Proposal of a simple pluggable API interface with a HTTP daemon implementation

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Commented: (CASSANDRA-754) Pluggable API with a simple HTTP+JSON daemon

Posted by "Gary Dusbabek (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/CASSANDRA-754?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12833893#action_12833893 ] 

Gary Dusbabek commented on CASSANDRA-754:
-----------------------------------------

With avro, the idea is that at some point it will deprecate thrift and eventually (maybe) replace it entirely.  I don't think this project will ever want to support >2 transports because it is a lot of work.  (We still have to work around problems with thrift, and using avro is turning out to be a fair amount of work.)  Making the transport pluggable implies that the community is willing to support that.  Are we?  

I'm not against the changes from a code organization or architecture standpoint.  I just think we should limit the transports we allow for the sake of support.

> Pluggable API with a simple HTTP+JSON daemon
> --------------------------------------------
>
>                 Key: CASSANDRA-754
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-754
>             Project: Cassandra
>          Issue Type: New Feature
>          Components: Core
>            Reporter: Ted Zlatanov
>            Priority: Minor
>         Attachments: 001-CASSANDRA-754-api-reorg.patch, 001-CASSANDRA-754-api-reorg.patch, 002-CASSANDRA-754-thriftdaemon.patch, 002-CASSANDRA-754-thriftdaemon.patch, 003-CASSANDRA-754-configapi.patch, 003-CASSANDRA-754-configapi.patch, 004-CASSANDRA-754-onedaemon.patch, 005-CASSANDRA-754-avroconfig.patch, 006-CASSANDRA-754-daemonproperties.patch, 006-CASSANDRA-754-daemonproperties.patch, 007-CASSANDRA-754-stringproperties.patch, 100-CASSANDRA-754-rebased-api-reorg.patch, 101-CASSANDRA-754-binclass.patch
>
>
> Proposal of a simple pluggable API interface with a HTTP daemon implementation

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Updated: (CASSANDRA-754) Pluggable API with a simple HTTP+JSON daemon

Posted by "Ted Zlatanov (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/CASSANDRA-754?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Ted Zlatanov updated CASSANDRA-754:
-----------------------------------

    Attachment: 005-CASSANDRA-754-avroconfig.patch

Attached patch creates Avro port and address config file sections plus DatabaseDescriptor fields.  All of that will be moved to be part of the API spec in the XML file but for now this will do.

The static parts of the setup() call were moved to CassandraDaemon::setupStatic() with a passed logger for correct logging.  I think I got all the static stuff that's shared.


> Pluggable API with a simple HTTP+JSON daemon
> --------------------------------------------
>
>                 Key: CASSANDRA-754
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-754
>             Project: Cassandra
>          Issue Type: New Feature
>          Components: Core
>            Reporter: Ted Zlatanov
>            Priority: Minor
>         Attachments: 001-CASSANDRA-754-api-reorg.patch, 001-CASSANDRA-754-api-reorg.patch, 002-CASSANDRA-754-thriftdaemon.patch, 002-CASSANDRA-754-thriftdaemon.patch, 003-CASSANDRA-754-configapi.patch, 003-CASSANDRA-754-configapi.patch, 004-CASSANDRA-754-onedaemon.patch, 005-CASSANDRA-754-avroconfig.patch
>
>
> Proposal of a simple pluggable API interface with a HTTP daemon implementation

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Commented: (CASSANDRA-754) Pluggable API with a simple HTTP+JSON daemon

Posted by "Ted Zlatanov (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/CASSANDRA-754?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12835997#action_12835997 ] 

Ted Zlatanov commented on CASSANDRA-754:
----------------------------------------

This is my view, which I've tried to explain before on the mailing list, but with the experience from this ticket mixed in.

A pluggable API can expose any API so that's been shot down by everyone.  The Thrift API over the HTTP+JSON transport exposes, as I understand it, the same internal callback methods as the binary transport.  So there's much less new stuff to support.  IIUC everyone here was concerned about supporting multiple APIs, not about improving access to Cassandra, which is what the HTTP+JSON transport provides.

I think CASSANDRA-475 makes a compelling argument against only providing the current Thrift binary interface.  It's still a useful interface, though, especially for bulk loading and for making bandwidth-efficient queries.

HTTP is a well-supported protocol for monitoring the wire, debugging, load distribution, proxying, and failover (among many, many others).  Those are useful features and Cassandra wouldn't even know or care if they were used at the HTTP level.

Security (authentication and encryption) with HTTP over SSL/TLS is well-understood and supported by almost every client.  The Thrift interface wouldn't need the login() method and all the auth* work could be simplified to just authorization.

Specifically for Cassandra access from Perl, the 64-bit timestamps are a pain to construct in a 32-bit Perl.  The null vs. empty string issues I encountered were annoying.  Perl strings sometimes had to be converted to byte arrays, sometimes not (this is with 0.4).  0.5 and 0.6 will require changes to all that work, I'm sure.  These issues are much less painful with HTTP+JSON and are specific to the *binary* Thrift protocol, not to Thrift itself.

Today's NoSQL data stores are a diverse bunch, but at least CouchDB and Amazon's SimpleDB use an HTTP transport and JSON/XML data encodings.  It works well for them.  I think this is a better analogy than PostgreSQL or MySQL, which are RDBMS's with a common SQL interface language.  Yes, they provide a binary interface, but through it you can talk to them in SQL for most tasks.

> Pluggable API with a simple HTTP+JSON daemon
> --------------------------------------------
>
>                 Key: CASSANDRA-754
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-754
>             Project: Cassandra
>          Issue Type: New Feature
>          Components: Core
>            Reporter: Ted Zlatanov
>            Assignee: Ted Zlatanov
>            Priority: Minor
>         Attachments: 0001-renamed-API-classes.patch, 0002-renamed-Avro-API-classes.patch, 0003-renamed-daemon-classes.patch, 0004-API-top-level-support.patch, 0005-adjust-references-to-point-to-new-API-classes.patch, 0006-adjust-Hadoop-and-tests.patch, v2-0001-CASSANDRA-754-use-less-specific-descriptors-for-Thrift.txt, v2-0002-start-avro-daemon-using-a-arg-to-startup-script.txt
>
>
> Proposal of a simple pluggable API interface with a HTTP daemon implementation

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Updated: (CASSANDRA-754) Pluggable API with a simple HTTP+JSON daemon

Posted by "Ted Zlatanov (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/CASSANDRA-754?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Ted Zlatanov updated CASSANDRA-754:
-----------------------------------

    Attachment:     (was: 005-CASSANDRA-754-avroconfig.patch)

> Pluggable API with a simple HTTP+JSON daemon
> --------------------------------------------
>
>                 Key: CASSANDRA-754
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-754
>             Project: Cassandra
>          Issue Type: New Feature
>          Components: Core
>            Reporter: Ted Zlatanov
>            Assignee: Ted Zlatanov
>            Priority: Minor
>         Attachments: 0001-renamed-API-classes.patch, 0002-renamed-Avro-API-classes.patch, 0003-renamed-daemon-classes.patch, 0004-API-top-level-support.patch, 0005-adjust-references-to-point-to-new-API-classes.patch, 0006-adjust-Hadoop-and-tests.patch, 001-CASSANDRA-754-api-reorg.patch, 002-CASSANDRA-754-thriftdaemon.patch, 003-CASSANDRA-754-configapi.patch, 102-CASSANDRA-754-hadoopfixes.patch
>
>
> Proposal of a simple pluggable API interface with a HTTP daemon implementation

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Updated: (CASSANDRA-754) Pluggable API with a simple HTTP+JSON daemon

Posted by "Ted Zlatanov (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/CASSANDRA-754?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Ted Zlatanov updated CASSANDRA-754:
-----------------------------------

    Attachment:     (was: 004-CASSANDRA-754-onedaemon.patch)

> Pluggable API with a simple HTTP+JSON daemon
> --------------------------------------------
>
>                 Key: CASSANDRA-754
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-754
>             Project: Cassandra
>          Issue Type: New Feature
>          Components: Core
>            Reporter: Ted Zlatanov
>            Assignee: Ted Zlatanov
>            Priority: Minor
>         Attachments: 0001-renamed-API-classes.patch, 0002-renamed-Avro-API-classes.patch, 0003-renamed-daemon-classes.patch, 0004-API-top-level-support.patch, 0005-adjust-references-to-point-to-new-API-classes.patch, 0006-adjust-Hadoop-and-tests.patch, 001-CASSANDRA-754-api-reorg.patch, 002-CASSANDRA-754-thriftdaemon.patch, 003-CASSANDRA-754-configapi.patch, 102-CASSANDRA-754-hadoopfixes.patch
>
>
> Proposal of a simple pluggable API interface with a HTTP daemon implementation

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Commented: (CASSANDRA-754) Pluggable API with a simple HTTP+JSON daemon

Posted by "Stu Hood (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/CASSANDRA-754?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12829194#action_12829194 ] 

Stu Hood commented on CASSANDRA-754:
------------------------------------

As the third remote API to make it into Cassandra, this patch has the unfortunate burden of making the lifecycle for Avro, Thrift and HTTP consistent. I would suggest:
 1. Adding an 'o.a.c.api' package, containing avro, thrift, http.
 2. Moving generic logic out of the CassandraServer classes and into StorageProxy, so that it isn't necessary to call from HTTP->Thrift
 3. Applying IPluggableAPI to the CassandraServer classes for avro and thrift
 4. A single CassandraDaemon class in the service package should give life(cycle) to a configurable set of IPluggableAPIs

Also:
 * HTTPPluggableAPI.doQuery() is huge: break it up into the stages that you mention in the Javadoc
 * HTTPPluggableAPI should implement HTTPHandler directly
 * Inconsistent Http vs HTTP in class names

This is a good start, but there is a long road ahead. Thanks Ted!

> Pluggable API with a simple HTTP+JSON daemon
> --------------------------------------------
>
>                 Key: CASSANDRA-754
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-754
>             Project: Cassandra
>          Issue Type: New Feature
>          Components: Core
>            Reporter: Ted Zlatanov
>            Priority: Minor
>         Attachments: 001-CASSANDRA-754-http.patch
>
>
> Proposal of a simple pluggable API interface with a HTTP daemon implementation

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Commented: (CASSANDRA-754) Pluggable API with a simple HTTP+JSON daemon

Posted by "Gary Dusbabek (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/CASSANDRA-754?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12830244#action_12830244 ] 

Gary Dusbabek commented on CASSANDRA-754:
-----------------------------------------

007 didn't apply: 
> error: patch failed: src/java/org/apache/cassandra/config/DatabaseDescriptor.java:855

> Pluggable API with a simple HTTP+JSON daemon
> --------------------------------------------
>
>                 Key: CASSANDRA-754
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-754
>             Project: Cassandra
>          Issue Type: New Feature
>          Components: Core
>            Reporter: Ted Zlatanov
>            Priority: Minor
>         Attachments: 001-CASSANDRA-754-api-reorg.patch, 001-CASSANDRA-754-api-reorg.patch, 002-CASSANDRA-754-thriftdaemon.patch, 002-CASSANDRA-754-thriftdaemon.patch, 003-CASSANDRA-754-configapi.patch, 003-CASSANDRA-754-configapi.patch, 004-CASSANDRA-754-onedaemon.patch, 005-CASSANDRA-754-avroconfig.patch, 006-CASSANDRA-754-daemonproperties.patch, 006-CASSANDRA-754-daemonproperties.patch, 007-CASSANDRA-754-stringproperties.patch
>
>
> Proposal of a simple pluggable API interface with a HTTP daemon implementation

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Updated: (CASSANDRA-754) Pluggable API with a simple HTTP+JSON daemon

Posted by "Ted Zlatanov (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/CASSANDRA-754?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Ted Zlatanov updated CASSANDRA-754:
-----------------------------------

    Attachment:     (was: 003-CASSANDRA-754-configapi.patch)

> Pluggable API with a simple HTTP+JSON daemon
> --------------------------------------------
>
>                 Key: CASSANDRA-754
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-754
>             Project: Cassandra
>          Issue Type: New Feature
>          Components: Core
>            Reporter: Ted Zlatanov
>            Assignee: Ted Zlatanov
>            Priority: Minor
>         Attachments: 0001-renamed-API-classes.patch, 0002-renamed-Avro-API-classes.patch, 0003-renamed-daemon-classes.patch, 0004-API-top-level-support.patch, 0005-adjust-references-to-point-to-new-API-classes.patch, 0006-adjust-Hadoop-and-tests.patch, 001-CASSANDRA-754-api-reorg.patch, 002-CASSANDRA-754-thriftdaemon.patch, 003-CASSANDRA-754-configapi.patch, 102-CASSANDRA-754-hadoopfixes.patch
>
>
> Proposal of a simple pluggable API interface with a HTTP daemon implementation

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Updated: (CASSANDRA-754) Pluggable API with a simple HTTP+JSON daemon

Posted by "Ted Zlatanov (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/CASSANDRA-754?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Ted Zlatanov updated CASSANDRA-754:
-----------------------------------

    Attachment: 006-CASSANDRA-754-daemonproperties.patch

This patch reorganizes the config file to have API properties.  ThriftPort, ThriftAddress, and ThriftFramed are gone.  Properties are set through maps that are passed to the daemon on startup.  The validation of the data is still done in DatabaseDescriptor; the mechanism for specifying the class of a configuration property is somewhat awkward through IPluggableAPI but I didn't want it to get too elaborate.  FWIW, this would have been much easier with Apache Commons Configuration classes.

The code in src/java/org/apache/cassandra/client/RingCache.java and test/unit/org/apache/cassandra/client/TestRingCache.java has TODO markers because it's currently incorrect.  I don't know the reason RingCache needs to know the current Thrift port; if the assumption is that all the nodes are running on the same Thrift port then it will break when one node doesn't.  If it's just the current Thrift server, perhaps it can iterate through CassandraDaemon.daemons and get the port from the ThriftDaemon if it's in there.  It should handle the case when the Thrift API is not used or configured.

I went with XML properties, as shown in the storage-conf.xml examples.  It wouldn't be hard to rework it the other way.

There's some code duplication between AvroDaemon and ThriftDaemon but I prefer to avoid having a parent class just to handle configuration issues.  Opinions are welcome.

> Pluggable API with a simple HTTP+JSON daemon
> --------------------------------------------
>
>                 Key: CASSANDRA-754
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-754
>             Project: Cassandra
>          Issue Type: New Feature
>          Components: Core
>            Reporter: Ted Zlatanov
>            Priority: Minor
>         Attachments: 001-CASSANDRA-754-api-reorg.patch, 001-CASSANDRA-754-api-reorg.patch, 002-CASSANDRA-754-thriftdaemon.patch, 002-CASSANDRA-754-thriftdaemon.patch, 003-CASSANDRA-754-configapi.patch, 003-CASSANDRA-754-configapi.patch, 004-CASSANDRA-754-onedaemon.patch, 005-CASSANDRA-754-avroconfig.patch, 006-CASSANDRA-754-daemonproperties.patch
>
>
> Proposal of a simple pluggable API interface with a HTTP daemon implementation

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Updated: (CASSANDRA-754) Pluggable API with a simple HTTP+JSON daemon

Posted by "Ted Zlatanov (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/CASSANDRA-754?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Ted Zlatanov updated CASSANDRA-754:
-----------------------------------

    Attachment:     (was: 002-CASSANDRA-745-thriftdaemon.patch)

> Pluggable API with a simple HTTP+JSON daemon
> --------------------------------------------
>
>                 Key: CASSANDRA-754
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-754
>             Project: Cassandra
>          Issue Type: New Feature
>          Components: Core
>            Reporter: Ted Zlatanov
>            Priority: Minor
>         Attachments: 001-CASSANDRA-754-api-reorg.patch, 002-CASSANDRA-754-thriftdaemon.patch, 003-CASSANDRA-754-configapi.patch
>
>
> Proposal of a simple pluggable API interface with a HTTP daemon implementation

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Commented: (CASSANDRA-754) Pluggable API with a simple HTTP+JSON daemon

Posted by "Ted Zlatanov (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/CASSANDRA-754?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12830252#action_12830252 ] 

Ted Zlatanov commented on CASSANDRA-754:
----------------------------------------

I rebased DatabaseDescriptor.java, maybe that's why it doesn't apply.  I tested and it applies cleanly for me.

> Pluggable API with a simple HTTP+JSON daemon
> --------------------------------------------
>
>                 Key: CASSANDRA-754
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-754
>             Project: Cassandra
>          Issue Type: New Feature
>          Components: Core
>            Reporter: Ted Zlatanov
>            Priority: Minor
>         Attachments: 001-CASSANDRA-754-api-reorg.patch, 001-CASSANDRA-754-api-reorg.patch, 002-CASSANDRA-754-thriftdaemon.patch, 002-CASSANDRA-754-thriftdaemon.patch, 003-CASSANDRA-754-configapi.patch, 003-CASSANDRA-754-configapi.patch, 004-CASSANDRA-754-onedaemon.patch, 005-CASSANDRA-754-avroconfig.patch, 006-CASSANDRA-754-daemonproperties.patch, 006-CASSANDRA-754-daemonproperties.patch, 007-CASSANDRA-754-stringproperties.patch
>
>
> Proposal of a simple pluggable API interface with a HTTP daemon implementation

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Updated: (CASSANDRA-754) Pluggable API with a simple HTTP+JSON daemon

Posted by "Stu Hood (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/CASSANDRA-754?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Stu Hood updated CASSANDRA-754:
-------------------------------

    Attachment:     (was: 003-CASSANDRA-754-configapi.patch)

> Pluggable API with a simple HTTP+JSON daemon
> --------------------------------------------
>
>                 Key: CASSANDRA-754
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-754
>             Project: Cassandra
>          Issue Type: New Feature
>          Components: Core
>            Reporter: Ted Zlatanov
>            Assignee: Ted Zlatanov
>            Priority: Minor
>         Attachments: 0001-renamed-API-classes.patch, 0002-renamed-Avro-API-classes.patch, 0003-renamed-daemon-classes.patch, 0004-API-top-level-support.patch, 0005-adjust-references-to-point-to-new-API-classes.patch, 0006-adjust-Hadoop-and-tests.patch
>
>
> Proposal of a simple pluggable API interface with a HTTP daemon implementation

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Updated: (CASSANDRA-754) Pluggable API with a simple HTTP+JSON daemon

Posted by "Ted Zlatanov (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/CASSANDRA-754?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Ted Zlatanov updated CASSANDRA-754:
-----------------------------------

    Attachment:     (was: 001-CASSANDRA-754-api-reorg.patch)

> Pluggable API with a simple HTTP+JSON daemon
> --------------------------------------------
>
>                 Key: CASSANDRA-754
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-754
>             Project: Cassandra
>          Issue Type: New Feature
>          Components: Core
>            Reporter: Ted Zlatanov
>            Priority: Minor
>         Attachments: 001-CASSANDRA-754-api-reorg.patch, 002-CASSANDRA-754-thriftdaemon.patch, 003-CASSANDRA-754-configapi.patch
>
>
> Proposal of a simple pluggable API interface with a HTTP daemon implementation

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Commented: (CASSANDRA-754) Pluggable API with a simple HTTP+JSON daemon

Posted by "Ted Zlatanov (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/CASSANDRA-754?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12830127#action_12830127 ] 

Ted Zlatanov commented on CASSANDRA-754:
----------------------------------------

I have to look into JSVC, I don't know if it will call setup() twice on all the APIs.  Running in the standard way with bin/cassandra works OK for me.

Thanks for all the help, Gary and Stu.

> Pluggable API with a simple HTTP+JSON daemon
> --------------------------------------------
>
>                 Key: CASSANDRA-754
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-754
>             Project: Cassandra
>          Issue Type: New Feature
>          Components: Core
>            Reporter: Ted Zlatanov
>            Priority: Minor
>         Attachments: 001-CASSANDRA-754-api-reorg.patch, 001-CASSANDRA-754-api-reorg.patch, 002-CASSANDRA-754-thriftdaemon.patch, 002-CASSANDRA-754-thriftdaemon.patch, 003-CASSANDRA-754-configapi.patch, 003-CASSANDRA-754-configapi.patch, 004-CASSANDRA-754-onedaemon.patch, 005-CASSANDRA-754-avroconfig.patch, 006-CASSANDRA-754-daemonproperties.patch
>
>
> Proposal of a simple pluggable API interface with a HTTP daemon implementation

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Updated: (CASSANDRA-754) Pluggable API with a simple HTTP+JSON daemon

Posted by "Ted Zlatanov (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/CASSANDRA-754?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Ted Zlatanov updated CASSANDRA-754:
-----------------------------------

    Attachment:     (was: 007-CASSANDRA-754-stringproperties.patch)

> Pluggable API with a simple HTTP+JSON daemon
> --------------------------------------------
>
>                 Key: CASSANDRA-754
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-754
>             Project: Cassandra
>          Issue Type: New Feature
>          Components: Core
>            Reporter: Ted Zlatanov
>            Assignee: Ted Zlatanov
>            Priority: Minor
>         Attachments: 0001-renamed-API-classes.patch, 0002-renamed-Avro-API-classes.patch, 0003-renamed-daemon-classes.patch, 0004-API-top-level-support.patch, 0005-adjust-references-to-point-to-new-API-classes.patch, 0006-adjust-Hadoop-and-tests.patch, 001-CASSANDRA-754-api-reorg.patch, 002-CASSANDRA-754-thriftdaemon.patch, 003-CASSANDRA-754-configapi.patch, 102-CASSANDRA-754-hadoopfixes.patch
>
>
> Proposal of a simple pluggable API interface with a HTTP daemon implementation

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Issue Comment Edited: (CASSANDRA-754) Pluggable API with a simple HTTP+JSON daemon

Posted by "Ted Zlatanov (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/CASSANDRA-754?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12835380#action_12835380 ] 

Ted Zlatanov edited comment on CASSANDRA-754 at 2/18/10 8:18 PM:
-----------------------------------------------------------------

v2: -a/-t plus RPC* options works for me.

The Thrift HTTP+JSON server is an interesting possibility here, it could coexist with the regular Thrift service and still serve the same API.  Anyone interested in producing a patch?  Or I could put one together...

      was (Author: tzz):
    v2: -a/-t plus RPC* options works for me.

The Thrift HTTP+JSON server is an interesting possibility here, it could coexist with the regular Thrift service and still serve the same API.
  
> Pluggable API with a simple HTTP+JSON daemon
> --------------------------------------------
>
>                 Key: CASSANDRA-754
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-754
>             Project: Cassandra
>          Issue Type: New Feature
>          Components: Core
>            Reporter: Ted Zlatanov
>            Assignee: Ted Zlatanov
>            Priority: Minor
>         Attachments: 0001-renamed-API-classes.patch, 0002-renamed-Avro-API-classes.patch, 0003-renamed-daemon-classes.patch, 0004-API-top-level-support.patch, 0005-adjust-references-to-point-to-new-API-classes.patch, 0006-adjust-Hadoop-and-tests.patch, v2-0001-CASSANDRA-754-use-less-specific-descriptors-for-Thrift.txt, v2-0002-start-avro-daemon-using-a-arg-to-startup-script.txt
>
>
> Proposal of a simple pluggable API interface with a HTTP daemon implementation

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Commented: (CASSANDRA-754) Pluggable API with a simple HTTP+JSON daemon

Posted by "Ted Zlatanov (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/CASSANDRA-754?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12829601#action_12829601 ] 

Ted Zlatanov commented on CASSANDRA-754:
----------------------------------------

I'm sure tihs is obvious, but 001-CASSANDRA-754-api-reorg.patch should be applied together with the appropriate `svn mv' commands so the log is not lost.  I couldn't figure out how to do it otherwise in a standalone patch.

I hope you can review these patches soon.  Rebasing them will be a pain if they get stale.

> Pluggable API with a simple HTTP+JSON daemon
> --------------------------------------------
>
>                 Key: CASSANDRA-754
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-754
>             Project: Cassandra
>          Issue Type: New Feature
>          Components: Core
>            Reporter: Ted Zlatanov
>            Priority: Minor
>         Attachments: 001-CASSANDRA-754-api-reorg.patch, 002-CASSANDRA-754-thriftdaemon.patch, 003-CASSANDRA-754-configapi.patch
>
>
> Proposal of a simple pluggable API interface with a HTTP daemon implementation

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Updated: (CASSANDRA-754) Pluggable API with a simple HTTP+JSON daemon

Posted by "Stu Hood (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/CASSANDRA-754?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Stu Hood updated CASSANDRA-754:
-------------------------------

    Attachment: 003-CASSANDRA-754-configapi.patch
                002-CASSANDRA-754-thriftdaemon.patch
                001-CASSANDRA-754-api-reorg.patch

Rebased the patches slightly.

 * Why does o.a.c.a.CassandraDaemon implement IPluggableAPI? Also, I would make CassandraDaemon a concrete class
 * All of the startup logic in o.a.c.a.a.CassandraDaemon should not have a main method, and should probably be renamed like ThriftDaemon was

> Pluggable API with a simple HTTP+JSON daemon
> --------------------------------------------
>
>                 Key: CASSANDRA-754
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-754
>             Project: Cassandra
>          Issue Type: New Feature
>          Components: Core
>            Reporter: Ted Zlatanov
>            Priority: Minor
>         Attachments: 001-CASSANDRA-754-api-reorg.patch, 001-CASSANDRA-754-api-reorg.patch, 002-CASSANDRA-754-thriftdaemon.patch, 002-CASSANDRA-754-thriftdaemon.patch, 003-CASSANDRA-754-configapi.patch, 003-CASSANDRA-754-configapi.patch
>
>
> Proposal of a simple pluggable API interface with a HTTP daemon implementation

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Commented: (CASSANDRA-754) Pluggable API with a simple HTTP+JSON daemon

Posted by "Eric Evans (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/CASSANDRA-754?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12833935#action_12833935 ] 

Eric Evans commented on CASSANDRA-754:
--------------------------------------

Disclaimer: I haven't been tracking this ticket from the beginning, and the comment stream is kind of hard to follow ex post facto. I also haven't reviewed the patches directly because a) they don't apply to trunk, and b) enormous monolithic patches are hard to pick through by hand. But, I gather that it has been about making the remote API pluggable, and introducing an HTTP/REST + json interface that leverages this.

I'm personally not thrilled with the idea of a pluggable API, I think the project would be best served by a single remote API with high-level idiomatic client libraries built on top of that (think postgresql, mysql, etc). Multiple APIs will have a combinatorial effect on support, maintenance, and compatibility. As Gary mentioned earlier, Avro was introduced in the hopes that it would eventually replace Thrift; if Avro fails to replace Thrift entirely then I for one will advocate its removal.

I'm also not sure I understand what problem this aims to solve. When others have brought this sort of thing up, the answer seems to be "thrift sucks". If that's the case here, then I'd rather see that problem solved rather than worked around, (and again it's my hope that Avro is the solution).

> Pluggable API with a simple HTTP+JSON daemon
> --------------------------------------------
>
>                 Key: CASSANDRA-754
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-754
>             Project: Cassandra
>          Issue Type: New Feature
>          Components: Core
>            Reporter: Ted Zlatanov
>            Assignee: Ted Zlatanov
>            Priority: Minor
>         Attachments: 001-CASSANDRA-754-api-reorg.patch, 001-CASSANDRA-754-api-reorg.patch, 002-CASSANDRA-754-thriftdaemon.patch, 002-CASSANDRA-754-thriftdaemon.patch, 003-CASSANDRA-754-configapi.patch, 003-CASSANDRA-754-configapi.patch, 004-CASSANDRA-754-onedaemon.patch, 005-CASSANDRA-754-avroconfig.patch, 006-CASSANDRA-754-daemonproperties.patch, 006-CASSANDRA-754-daemonproperties.patch, 007-CASSANDRA-754-stringproperties.patch, 100-CASSANDRA-754-rebased-api-reorg.patch, 101-CASSANDRA-754-binclass.patch
>
>
> Proposal of a simple pluggable API interface with a HTTP daemon implementation

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Updated: (CASSANDRA-754) Pluggable API with a simple HTTP+JSON daemon

Posted by "Stu Hood (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/CASSANDRA-754?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Stu Hood updated CASSANDRA-754:
-------------------------------

    Attachment:     (was: 001-CASSANDRA-754-api-reorg.patch)

> Pluggable API with a simple HTTP+JSON daemon
> --------------------------------------------
>
>                 Key: CASSANDRA-754
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-754
>             Project: Cassandra
>          Issue Type: New Feature
>          Components: Core
>            Reporter: Ted Zlatanov
>            Assignee: Ted Zlatanov
>            Priority: Minor
>         Attachments: 0001-renamed-API-classes.patch, 0002-renamed-Avro-API-classes.patch, 0003-renamed-daemon-classes.patch, 0004-API-top-level-support.patch, 0005-adjust-references-to-point-to-new-API-classes.patch, 0006-adjust-Hadoop-and-tests.patch
>
>
> Proposal of a simple pluggable API interface with a HTTP daemon implementation

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Updated: (CASSANDRA-754) Pluggable API with a simple HTTP+JSON daemon

Posted by "Ted Zlatanov (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/CASSANDRA-754?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Ted Zlatanov updated CASSANDRA-754:
-----------------------------------

    Attachment:     (was: 102-CASSANDRA-754-hadoopfixes.patch)

> Pluggable API with a simple HTTP+JSON daemon
> --------------------------------------------
>
>                 Key: CASSANDRA-754
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-754
>             Project: Cassandra
>          Issue Type: New Feature
>          Components: Core
>            Reporter: Ted Zlatanov
>            Assignee: Ted Zlatanov
>            Priority: Minor
>         Attachments: 0001-renamed-API-classes.patch, 0002-renamed-Avro-API-classes.patch, 0003-renamed-daemon-classes.patch, 0004-API-top-level-support.patch, 0005-adjust-references-to-point-to-new-API-classes.patch, 0006-adjust-Hadoop-and-tests.patch, 001-CASSANDRA-754-api-reorg.patch, 002-CASSANDRA-754-thriftdaemon.patch, 003-CASSANDRA-754-configapi.patch
>
>
> Proposal of a simple pluggable API interface with a HTTP daemon implementation

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Commented: (CASSANDRA-754) Pluggable API with a simple HTTP+JSON daemon

Posted by "Gary Dusbabek (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/CASSANDRA-754?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12835352#action_12835352 ] 

Gary Dusbabek commented on CASSANDRA-754:
-----------------------------------------

>To make it pluggable is to encourage people to write new remote APIs, and I don't even want 2 for any longer than is necessary to make a transition. 
I agree.

I am +1 on the -a, -t approach.


> Pluggable API with a simple HTTP+JSON daemon
> --------------------------------------------
>
>                 Key: CASSANDRA-754
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-754
>             Project: Cassandra
>          Issue Type: New Feature
>          Components: Core
>            Reporter: Ted Zlatanov
>            Assignee: Ted Zlatanov
>            Priority: Minor
>         Attachments: 0001-renamed-API-classes.patch, 0002-renamed-Avro-API-classes.patch, 0003-renamed-daemon-classes.patch, 0004-API-top-level-support.patch, 0005-adjust-references-to-point-to-new-API-classes.patch, 0006-adjust-Hadoop-and-tests.patch, v2-0001-CASSANDRA-754-use-less-specific-descriptors-for-Thrift.txt, v2-0002-start-avro-daemon-using-a-arg-to-startup-script.txt
>
>
> Proposal of a simple pluggable API interface with a HTTP daemon implementation

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Updated: (CASSANDRA-754) Pluggable API with a simple HTTP+JSON daemon

Posted by "Ted Zlatanov (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/CASSANDRA-754?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Ted Zlatanov updated CASSANDRA-754:
-----------------------------------

    Attachment:     (was: 001-CASSANDRA-754-http.patch)

> Pluggable API with a simple HTTP+JSON daemon
> --------------------------------------------
>
>                 Key: CASSANDRA-754
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-754
>             Project: Cassandra
>          Issue Type: New Feature
>          Components: Core
>            Reporter: Ted Zlatanov
>            Priority: Minor
>         Attachments: 001-CASSANDRA-754-api-reorg.patch
>
>
> Proposal of a simple pluggable API interface with a HTTP daemon implementation

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Updated: (CASSANDRA-754) Pluggable API with a simple HTTP+JSON daemon

Posted by "Ted Zlatanov (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/CASSANDRA-754?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Ted Zlatanov updated CASSANDRA-754:
-----------------------------------

    Attachment: 0006-adjust-Hadoop-and-tests.patch
                0005-adjust-references-to-point-to-new-API-classes.patch
                0004-API-top-level-support.patch

0004 is the heart of the patch, containing all the changes for API support.

0005 adjust code and configuration to point to the new API classes.

0006 fixes the tests and the Hadoop classes.  Hadoop has a TODO because I'm not sure if it should get the default Thrift port, the configured Thrift port, or the Thrift port of the currently running Cassandra daemon.

Broken up like this, these patches should be easier to read and understand.

> Pluggable API with a simple HTTP+JSON daemon
> --------------------------------------------
>
>                 Key: CASSANDRA-754
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-754
>             Project: Cassandra
>          Issue Type: New Feature
>          Components: Core
>            Reporter: Ted Zlatanov
>            Assignee: Ted Zlatanov
>            Priority: Minor
>         Attachments: 0001-renamed-API-classes.patch, 0002-renamed-Avro-API-classes.patch, 0003-renamed-daemon-classes.patch, 0004-API-top-level-support.patch, 0005-adjust-references-to-point-to-new-API-classes.patch, 0006-adjust-Hadoop-and-tests.patch, 001-CASSANDRA-754-api-reorg.patch, 002-CASSANDRA-754-thriftdaemon.patch, 003-CASSANDRA-754-configapi.patch, 102-CASSANDRA-754-hadoopfixes.patch
>
>
> Proposal of a simple pluggable API interface with a HTTP daemon implementation

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Commented: (CASSANDRA-754) Pluggable API with a simple HTTP+JSON daemon

Posted by "Jonathan Ellis (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/CASSANDRA-754?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12833928#action_12833928 ] 

Jonathan Ellis commented on CASSANDRA-754:
------------------------------------------

> I don't think this project will ever want to support >2 transports because it is a lot of work.

Right. We've already seen the problems multiple transports cause as I've de-synced Avro from the "main" Thrift protocol in e.g. CASSANDRA-775.  I don't think we want to throw the doors open and say "just implement this interface, the more the merrier" because that would really get nightmarish if people actually did.  Nor do we want to just leave it in contrib to be half-supported; that would be a big turn-off for people investigating the project.

So I am +0 on cleaning up common code that we already have w/ thrift+avro (although I think Gary is right re pushing logic into setup methods) but -1 on adding a new interface/protocol without seeing a clear benefit over avro/thrift (which, again, can work over HTTP+JSON already).

> Pluggable API with a simple HTTP+JSON daemon
> --------------------------------------------
>
>                 Key: CASSANDRA-754
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-754
>             Project: Cassandra
>          Issue Type: New Feature
>          Components: Core
>            Reporter: Ted Zlatanov
>            Priority: Minor
>         Attachments: 001-CASSANDRA-754-api-reorg.patch, 001-CASSANDRA-754-api-reorg.patch, 002-CASSANDRA-754-thriftdaemon.patch, 002-CASSANDRA-754-thriftdaemon.patch, 003-CASSANDRA-754-configapi.patch, 003-CASSANDRA-754-configapi.patch, 004-CASSANDRA-754-onedaemon.patch, 005-CASSANDRA-754-avroconfig.patch, 006-CASSANDRA-754-daemonproperties.patch, 006-CASSANDRA-754-daemonproperties.patch, 007-CASSANDRA-754-stringproperties.patch, 100-CASSANDRA-754-rebased-api-reorg.patch, 101-CASSANDRA-754-binclass.patch
>
>
> Proposal of a simple pluggable API interface with a HTTP daemon implementation

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Updated: (CASSANDRA-754) Pluggable API with a simple HTTP+JSON daemon

Posted by "Ted Zlatanov (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/CASSANDRA-754?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Ted Zlatanov updated CASSANDRA-754:
-----------------------------------

    Attachment: 006-CASSANDRA-754-daemonproperties.patch

Sorry about that.  I was missing IPluggableAPI.java in the patch accidentally.  It was out of sync in earlier patches too so some won't compile either.  I refreshed 006.

> Pluggable API with a simple HTTP+JSON daemon
> --------------------------------------------
>
>                 Key: CASSANDRA-754
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-754
>             Project: Cassandra
>          Issue Type: New Feature
>          Components: Core
>            Reporter: Ted Zlatanov
>            Priority: Minor
>         Attachments: 001-CASSANDRA-754-api-reorg.patch, 001-CASSANDRA-754-api-reorg.patch, 002-CASSANDRA-754-thriftdaemon.patch, 002-CASSANDRA-754-thriftdaemon.patch, 003-CASSANDRA-754-configapi.patch, 003-CASSANDRA-754-configapi.patch, 004-CASSANDRA-754-onedaemon.patch, 005-CASSANDRA-754-avroconfig.patch, 006-CASSANDRA-754-daemonproperties.patch, 006-CASSANDRA-754-daemonproperties.patch
>
>
> Proposal of a simple pluggable API interface with a HTTP daemon implementation

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Commented: (CASSANDRA-754) Pluggable API with a simple HTTP+JSON daemon

Posted by "Ted Zlatanov (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/CASSANDRA-754?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12829826#action_12829826 ] 

Ted Zlatanov commented on CASSANDRA-754:
----------------------------------------

I picked the Avro port at 9260 completely randomly.

The API spec could look like this:

<API address="..." port="...">IPluggableAPI</API>

WDYT?  Should it be a tree instead, e.g.

<API>
<class>IPluggableAPI</class>
<port>...</port>
<address>...</address>
</API>

I'm OK with either.

> Pluggable API with a simple HTTP+JSON daemon
> --------------------------------------------
>
>                 Key: CASSANDRA-754
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-754
>             Project: Cassandra
>          Issue Type: New Feature
>          Components: Core
>            Reporter: Ted Zlatanov
>            Priority: Minor
>         Attachments: 001-CASSANDRA-754-api-reorg.patch, 001-CASSANDRA-754-api-reorg.patch, 002-CASSANDRA-754-thriftdaemon.patch, 002-CASSANDRA-754-thriftdaemon.patch, 003-CASSANDRA-754-configapi.patch, 003-CASSANDRA-754-configapi.patch, 004-CASSANDRA-754-onedaemon.patch, 005-CASSANDRA-754-avroconfig.patch
>
>
> Proposal of a simple pluggable API interface with a HTTP daemon implementation

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Updated: (CASSANDRA-754) Pluggable API with a simple HTTP+JSON daemon

Posted by "Ted Zlatanov (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/CASSANDRA-754?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Ted Zlatanov updated CASSANDRA-754:
-----------------------------------

    Attachment:     (was: 002-CASSANDRA-754-thriftdaemon.patch)

> Pluggable API with a simple HTTP+JSON daemon
> --------------------------------------------
>
>                 Key: CASSANDRA-754
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-754
>             Project: Cassandra
>          Issue Type: New Feature
>          Components: Core
>            Reporter: Ted Zlatanov
>            Assignee: Ted Zlatanov
>            Priority: Minor
>         Attachments: 0001-renamed-API-classes.patch, 0002-renamed-Avro-API-classes.patch, 0003-renamed-daemon-classes.patch, 0004-API-top-level-support.patch, 0005-adjust-references-to-point-to-new-API-classes.patch, 0006-adjust-Hadoop-and-tests.patch, 001-CASSANDRA-754-api-reorg.patch, 002-CASSANDRA-754-thriftdaemon.patch, 003-CASSANDRA-754-configapi.patch, 102-CASSANDRA-754-hadoopfixes.patch
>
>
> Proposal of a simple pluggable API interface with a HTTP daemon implementation

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Updated: (CASSANDRA-754) Pluggable API with a simple HTTP+JSON daemon

Posted by "Ted Zlatanov (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/CASSANDRA-754?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Ted Zlatanov updated CASSANDRA-754:
-----------------------------------

    Attachment: 004-CASSANDRA-754-onedaemon.patch

o.a.c.a.avro.CassandraServer needs work too.  I don't even know how to test the avro stuff, sorry...  The attached patch just creates AvroDaemon.java but I haven't tested anything there.

I implemented the rest of your suggestions, thanks.  I started out with a different hierarchy where CassandraDaemon being abstract made sense but didn't fix it when I should have.

See what you think.  It's looking a little better I think.

> Pluggable API with a simple HTTP+JSON daemon
> --------------------------------------------
>
>                 Key: CASSANDRA-754
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-754
>             Project: Cassandra
>          Issue Type: New Feature
>          Components: Core
>            Reporter: Ted Zlatanov
>            Priority: Minor
>         Attachments: 001-CASSANDRA-754-api-reorg.patch, 001-CASSANDRA-754-api-reorg.patch, 002-CASSANDRA-754-thriftdaemon.patch, 002-CASSANDRA-754-thriftdaemon.patch, 003-CASSANDRA-754-configapi.patch, 003-CASSANDRA-754-configapi.patch, 004-CASSANDRA-754-onedaemon.patch
>
>
> Proposal of a simple pluggable API interface with a HTTP daemon implementation

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Commented: (CASSANDRA-754) Pluggable API with a simple HTTP+JSON daemon

Posted by "Gary Dusbabek (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/CASSANDRA-754?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12833816#action_12833816 ] 

Gary Dusbabek commented on CASSANDRA-754:
-----------------------------------------

I see your points, but avro at this point is little more than a proof of concept, a long way from being usable for testing, let alone production.  Putting this code in will send the wrong message IMO.

If we allow multiple APIs per configuration, then lets make the listen-address required and push that down into <API>.  To discourage messy config files, let's require all <API> specifications within a single parent element (think of a good name), the same way we do with keyspaces.

That ValidatingParser should know API class bothers me.  Why not push that logic down into the setup methods, or make ValidatingParser generic enough to do away with the API class name parameters?  I realize there will probably be some code duplication, but we parse integers and load InetAddresses all over the place anyway.

> Pluggable API with a simple HTTP+JSON daemon
> --------------------------------------------
>
>                 Key: CASSANDRA-754
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-754
>             Project: Cassandra
>          Issue Type: New Feature
>          Components: Core
>            Reporter: Ted Zlatanov
>            Priority: Minor
>         Attachments: 001-CASSANDRA-754-api-reorg.patch, 001-CASSANDRA-754-api-reorg.patch, 002-CASSANDRA-754-thriftdaemon.patch, 002-CASSANDRA-754-thriftdaemon.patch, 003-CASSANDRA-754-configapi.patch, 003-CASSANDRA-754-configapi.patch, 004-CASSANDRA-754-onedaemon.patch, 005-CASSANDRA-754-avroconfig.patch, 006-CASSANDRA-754-daemonproperties.patch, 006-CASSANDRA-754-daemonproperties.patch, 007-CASSANDRA-754-stringproperties.patch, 100-CASSANDRA-754-rebased-api-reorg.patch, 101-CASSANDRA-754-binclass.patch
>
>
> Proposal of a simple pluggable API interface with a HTTP daemon implementation

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Updated: (CASSANDRA-754) Pluggable API with a simple HTTP+JSON daemon

Posted by "Ted Zlatanov (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/CASSANDRA-754?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Ted Zlatanov updated CASSANDRA-754:
-----------------------------------

    Attachment: 102-CASSANDRA-754-hadoopfixes.patch
                101-CASSANDRA-754-binclass.patch
                100-CASSANDRA-754-rebased-api-reorg.patch

Rebased and retested against today's SVN to include the hadoop clases, with a TODO item for each time it statically gets the Thrift port.

100 was modified to use simple string keys in ValidatingParser.  Thus "host", "port", and "framed" are assumed to be consistent names, always validated the same way.  The class name is not passed down.  I did *not* change 100 to limit to one API yet, since I don't know if that's the decision.

The tests require "ant clean" or you'll get strange errors.

This is my only quilt-only patch that I have yet to import into git-svn.  I'll try to do that soon but meanwhile forgive the large base patch.

> Pluggable API with a simple HTTP+JSON daemon
> --------------------------------------------
>
>                 Key: CASSANDRA-754
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-754
>             Project: Cassandra
>          Issue Type: New Feature
>          Components: Core
>            Reporter: Ted Zlatanov
>            Assignee: Ted Zlatanov
>            Priority: Minor
>         Attachments: 001-CASSANDRA-754-api-reorg.patch, 001-CASSANDRA-754-api-reorg.patch, 002-CASSANDRA-754-thriftdaemon.patch, 002-CASSANDRA-754-thriftdaemon.patch, 003-CASSANDRA-754-configapi.patch, 003-CASSANDRA-754-configapi.patch, 004-CASSANDRA-754-onedaemon.patch, 005-CASSANDRA-754-avroconfig.patch, 006-CASSANDRA-754-daemonproperties.patch, 006-CASSANDRA-754-daemonproperties.patch, 007-CASSANDRA-754-stringproperties.patch, 100-CASSANDRA-754-rebased-api-reorg.patch, 100-CASSANDRA-754-rebased-api-reorg.patch, 101-CASSANDRA-754-binclass.patch, 101-CASSANDRA-754-binclass.patch, 102-CASSANDRA-754-hadoopfixes.patch
>
>
> Proposal of a simple pluggable API interface with a HTTP daemon implementation

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Commented: (CASSANDRA-754) Pluggable API with a simple HTTP+JSON daemon

Posted by "Stu Hood (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/CASSANDRA-754?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12828794#action_12828794 ] 

Stu Hood commented on CASSANDRA-754:
------------------------------------

Hey Ted: thanks for the patch! Would you mind rebasing for trunk? Merging Avro involved moving the Thrift server to a different package.

> Pluggable API with a simple HTTP+JSON daemon
> --------------------------------------------
>
>                 Key: CASSANDRA-754
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-754
>             Project: Cassandra
>          Issue Type: New Feature
>          Components: Core
>            Reporter: Ted Zlatanov
>            Priority: Minor
>         Attachments: 001-CASSANDRA-754-http.patch
>
>
> Proposal of a simple pluggable API interface with a HTTP daemon implementation

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Commented: (CASSANDRA-754) Pluggable API with a simple HTTP+JSON daemon

Posted by "Eric Evans (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/CASSANDRA-754?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12836052#action_12836052 ] 

Eric Evans commented on CASSANDRA-754:
--------------------------------------

-0

> Pluggable API with a simple HTTP+JSON daemon
> --------------------------------------------
>
>                 Key: CASSANDRA-754
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-754
>             Project: Cassandra
>          Issue Type: New Feature
>          Components: Core
>            Reporter: Ted Zlatanov
>            Assignee: Ted Zlatanov
>            Priority: Minor
>         Attachments: 0001-renamed-API-classes.patch, 0002-renamed-Avro-API-classes.patch, 0003-renamed-daemon-classes.patch, 0004-API-top-level-support.patch, 0005-adjust-references-to-point-to-new-API-classes.patch, 0006-adjust-Hadoop-and-tests.patch, v2-0001-CASSANDRA-754-use-less-specific-descriptors-for-Thrift.txt, v2-0002-start-avro-daemon-using-a-arg-to-startup-script.txt
>
>
> Proposal of a simple pluggable API interface with a HTTP daemon implementation

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Updated: (CASSANDRA-754) Pluggable API with a simple HTTP+JSON daemon

Posted by "Ted Zlatanov (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/CASSANDRA-754?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Ted Zlatanov updated CASSANDRA-754:
-----------------------------------

    Attachment: 003-CASSANDRA-754-configapi.patch

This patch lets the user specify multiple APIs in the configuration.  Then, CassandraDaemon will actually start them.

> Pluggable API with a simple HTTP+JSON daemon
> --------------------------------------------
>
>                 Key: CASSANDRA-754
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-754
>             Project: Cassandra
>          Issue Type: New Feature
>          Components: Core
>            Reporter: Ted Zlatanov
>            Priority: Minor
>         Attachments: 001-CASSANDRA-754-api-reorg.patch, 002-CASSANDRA-754-thriftdaemon.patch, 003-CASSANDRA-754-configapi.patch
>
>
> Proposal of a simple pluggable API interface with a HTTP daemon implementation

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Updated: (CASSANDRA-754) Pluggable API with a simple HTTP+JSON daemon

Posted by "Ted Zlatanov (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/CASSANDRA-754?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Ted Zlatanov updated CASSANDRA-754:
-----------------------------------

    Attachment:     (was: 101-CASSANDRA-754-binclass.patch)

> Pluggable API with a simple HTTP+JSON daemon
> --------------------------------------------
>
>                 Key: CASSANDRA-754
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-754
>             Project: Cassandra
>          Issue Type: New Feature
>          Components: Core
>            Reporter: Ted Zlatanov
>            Assignee: Ted Zlatanov
>            Priority: Minor
>         Attachments: 0001-renamed-API-classes.patch, 0002-renamed-Avro-API-classes.patch, 0003-renamed-daemon-classes.patch, 0004-API-top-level-support.patch, 0005-adjust-references-to-point-to-new-API-classes.patch, 0006-adjust-Hadoop-and-tests.patch, 001-CASSANDRA-754-api-reorg.patch, 002-CASSANDRA-754-thriftdaemon.patch, 003-CASSANDRA-754-configapi.patch, 102-CASSANDRA-754-hadoopfixes.patch
>
>
> Proposal of a simple pluggable API interface with a HTTP daemon implementation

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Updated: (CASSANDRA-754) Pluggable API with a simple HTTP+JSON daemon

Posted by "Ted Zlatanov (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/CASSANDRA-754?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Ted Zlatanov updated CASSANDRA-754:
-----------------------------------

    Attachment:     (was: 101-CASSANDRA-754-binclass.patch)

> Pluggable API with a simple HTTP+JSON daemon
> --------------------------------------------
>
>                 Key: CASSANDRA-754
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-754
>             Project: Cassandra
>          Issue Type: New Feature
>          Components: Core
>            Reporter: Ted Zlatanov
>            Assignee: Ted Zlatanov
>            Priority: Minor
>         Attachments: 0001-renamed-API-classes.patch, 0002-renamed-Avro-API-classes.patch, 0003-renamed-daemon-classes.patch, 0004-API-top-level-support.patch, 0005-adjust-references-to-point-to-new-API-classes.patch, 0006-adjust-Hadoop-and-tests.patch, 001-CASSANDRA-754-api-reorg.patch, 002-CASSANDRA-754-thriftdaemon.patch, 003-CASSANDRA-754-configapi.patch, 102-CASSANDRA-754-hadoopfixes.patch
>
>
> Proposal of a simple pluggable API interface with a HTTP daemon implementation

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Commented: (CASSANDRA-754) Pluggable API with a simple HTTP+JSON daemon

Posted by "Ted Zlatanov (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/CASSANDRA-754?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12833235#action_12833235 ] 

Ted Zlatanov commented on CASSANDRA-754:
----------------------------------------

Running more than one API makes sense IMO.  I plan to use the HTTP interface (which I originally proposed here) from Perl and web apps and the Thrift interface from Java.  I can live with two Cassandra instances running one API each, though.

It seems like Avro can do all of the stuff I needed with the HTTP interface, so this issue could be reduced to making the Avro integration better.  I like what I see at the Avro site a lot and I like not having to implement an HTTP server even better.

>From the perspective of configuration, I think using Avro with or without Thrift is easier with this patch.  Configuration errors are more sensible and at the right time (in ValidatingParser).  The code is better organized too and the 100 patch is moving towards eliminating the CassandraServer code duplication (see Stu's original comments).

I don't know about the project goals so I'll defer to Gary and Stu and the others who know better about whether this is the right direction.  If it is, I'll be glad to keep hammering at it.

> Pluggable API with a simple HTTP+JSON daemon
> --------------------------------------------
>
>                 Key: CASSANDRA-754
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-754
>             Project: Cassandra
>          Issue Type: New Feature
>          Components: Core
>            Reporter: Ted Zlatanov
>            Priority: Minor
>         Attachments: 001-CASSANDRA-754-api-reorg.patch, 001-CASSANDRA-754-api-reorg.patch, 002-CASSANDRA-754-thriftdaemon.patch, 002-CASSANDRA-754-thriftdaemon.patch, 003-CASSANDRA-754-configapi.patch, 003-CASSANDRA-754-configapi.patch, 004-CASSANDRA-754-onedaemon.patch, 005-CASSANDRA-754-avroconfig.patch, 006-CASSANDRA-754-daemonproperties.patch, 006-CASSANDRA-754-daemonproperties.patch, 007-CASSANDRA-754-stringproperties.patch, 100-CASSANDRA-754-rebased-api-reorg.patch, 101-CASSANDRA-754-binclass.patch
>
>
> Proposal of a simple pluggable API interface with a HTTP daemon implementation

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Issue Comment Edited: (CASSANDRA-754) Pluggable API with a simple HTTP+JSON daemon

Posted by "Stu Hood (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/CASSANDRA-754?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12829666#action_12829666 ] 

Stu Hood edited comment on CASSANDRA-754 at 2/4/10 5:38 PM:
------------------------------------------------------------

Rebased the patches slightly.

 * Why does o.a.c.a.CassandraDaemon implement IPluggableAPI? Also, I would make CassandraDaemon a concrete class
 * o.a.c.a.a.CassandraDaemon should not have a main method, and should probably be renamed like ThriftDaemon was

      was (Author: stuhood):
    Rebased the patches slightly.

 * Why does o.a.c.a.CassandraDaemon implement IPluggableAPI? Also, I would make CassandraDaemon a concrete class
 * All of the startup logic in o.a.c.a.a.CassandraDaemon should not have a main method, and should probably be renamed like ThriftDaemon was
  
> Pluggable API with a simple HTTP+JSON daemon
> --------------------------------------------
>
>                 Key: CASSANDRA-754
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-754
>             Project: Cassandra
>          Issue Type: New Feature
>          Components: Core
>            Reporter: Ted Zlatanov
>            Priority: Minor
>         Attachments: 001-CASSANDRA-754-api-reorg.patch, 001-CASSANDRA-754-api-reorg.patch, 002-CASSANDRA-754-thriftdaemon.patch, 002-CASSANDRA-754-thriftdaemon.patch, 003-CASSANDRA-754-configapi.patch, 003-CASSANDRA-754-configapi.patch
>
>
> Proposal of a simple pluggable API interface with a HTTP daemon implementation

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Commented: (CASSANDRA-754) Pluggable API with a simple HTTP+JSON daemon

Posted by "Eric Evans (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/CASSANDRA-754?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12835335#action_12835335 ] 

Eric Evans commented on CASSANDRA-754:
--------------------------------------

0005-adjust-references-to-point-to-new-API-classes.patch is still something of a monster, but this re-basing/reorganization of the patches made things easier to look at, thanks for taking the time to do that.

That being said, I'm a -0 on this patchset, and I'm leaning more and more toward a hard veto the more I think about. The reason, as I stated earlier is that I do not think we want a pluggable API. To make it pluggable is to encourage people to write new remote APIs, and I don't even want 2 for any longer than is necessary to make a transition.

I'll wait to see what others have to say, but in the meantime, I've attached a couple of patches for what I propose, namely changing ThriftAddress and ThriftPort to the more general RPCAddress and RPCPort, and adding a "-a" argument to the start script for Avro. If/when Avro becomes a suitable replacement, the -a option would be dropped in favor of a -t option as Avro became the deafult, which would in turn be dropped after Thrift was removed entirely.

> Pluggable API with a simple HTTP+JSON daemon
> --------------------------------------------
>
>                 Key: CASSANDRA-754
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-754
>             Project: Cassandra
>          Issue Type: New Feature
>          Components: Core
>            Reporter: Ted Zlatanov
>            Assignee: Ted Zlatanov
>            Priority: Minor
>         Attachments: 0001-renamed-API-classes.patch, 0002-renamed-Avro-API-classes.patch, 0003-renamed-daemon-classes.patch, 0004-API-top-level-support.patch, 0005-adjust-references-to-point-to-new-API-classes.patch, 0006-adjust-Hadoop-and-tests.patch, v2-0001-CASSANDRA-754-use-less-specific-descriptors-for-Thrift.txt, v2-0002-start-avro-daemon-using-a-arg-to-startup-script.txt
>
>
> Proposal of a simple pluggable API interface with a HTTP daemon implementation

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Updated: (CASSANDRA-754) Pluggable API with a simple HTTP+JSON daemon

Posted by "Stu Hood (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/CASSANDRA-754?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Stu Hood updated CASSANDRA-754:
-------------------------------

    Attachment:     (was: 002-CASSANDRA-754-thriftdaemon.patch)

> Pluggable API with a simple HTTP+JSON daemon
> --------------------------------------------
>
>                 Key: CASSANDRA-754
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-754
>             Project: Cassandra
>          Issue Type: New Feature
>          Components: Core
>            Reporter: Ted Zlatanov
>            Assignee: Ted Zlatanov
>            Priority: Minor
>         Attachments: 0001-renamed-API-classes.patch, 0002-renamed-Avro-API-classes.patch, 0003-renamed-daemon-classes.patch, 0004-API-top-level-support.patch, 0005-adjust-references-to-point-to-new-API-classes.patch, 0006-adjust-Hadoop-and-tests.patch
>
>
> Proposal of a simple pluggable API interface with a HTTP daemon implementation

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Issue Comment Edited: (CASSANDRA-754) Pluggable API with a simple HTTP+JSON daemon

Posted by "Ted Zlatanov (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/CASSANDRA-754?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12835997#action_12835997 ] 

Ted Zlatanov edited comment on CASSANDRA-754 at 2/20/10 12:15 AM:
------------------------------------------------------------------

This is my view, which I've tried to explain before on the mailing list, but with the experience from this ticket mixed in.

A pluggable API can expose any API so that's been shot down by everyone.  The Thrift API over the HTTP+JSON transport exposes, as I understand it, the same internal callback methods as the binary transport.  So there's much less new stuff to support.  IIUC everyone here was concerned about supporting multiple APIs, not about improving access to Cassandra, which is what the HTTP+JSON transport provides.

I think CASSANDRA-475 makes a compelling argument against only providing the current Thrift binary interface.  It's still a useful interface, though, especially for bulk loading and for making bandwidth-efficient queries.

HTTP is well supported for monitoring the wire, debugging, load distribution, proxying, and failover (among many, many others).  Those are useful features and Cassandra wouldn't even know or care if they were used at the HTTP level.

Security (authentication and encryption) with HTTP over SSL/TLS is well-understood and supported by almost every client.  The Thrift interface wouldn't need the login() method and all the auth* work could be simplified to just authorization.

Specifically for Cassandra access from Perl, the 64-bit timestamps are a pain to construct in a 32-bit Perl.  The null vs. empty string issues I encountered were annoying.  Perl strings sometimes had to be converted to byte arrays, sometimes not (this is with 0.4).  0.5 and 0.6 will require changes to all that work, I'm sure.  These issues are much less painful with HTTP+JSON and are specific to the *binary* Thrift protocol, not to Thrift itself.

Today's NoSQL data stores are a diverse bunch, but at least CouchDB and Amazon's SimpleDB use an HTTP transport and JSON/XML data encodings.  It works well for them.  I think this is a better analogy than PostgreSQL or MySQL, which are RDBMS's with a common SQL interface language.  Yes, they provide a binary interface, but through it you can talk to them in SQL for most tasks.

      was (Author: tzz):
    This is my view, which I've tried to explain before on the mailing list, but with the experience from this ticket mixed in.

A pluggable API can expose any API so that's been shot down by everyone.  The Thrift API over the HTTP+JSON transport exposes, as I understand it, the same internal callback methods as the binary transport.  So there's much less new stuff to support.  IIUC everyone here was concerned about supporting multiple APIs, not about improving access to Cassandra, which is what the HTTP+JSON transport provides.

I think CASSANDRA-475 makes a compelling argument against only providing the current Thrift binary interface.  It's still a useful interface, though, especially for bulk loading and for making bandwidth-efficient queries.

HTTP is a well-supported protocol for monitoring the wire, debugging, load distribution, proxying, and failover (among many, many others).  Those are useful features and Cassandra wouldn't even know or care if they were used at the HTTP level.

Security (authentication and encryption) with HTTP over SSL/TLS is well-understood and supported by almost every client.  The Thrift interface wouldn't need the login() method and all the auth* work could be simplified to just authorization.

Specifically for Cassandra access from Perl, the 64-bit timestamps are a pain to construct in a 32-bit Perl.  The null vs. empty string issues I encountered were annoying.  Perl strings sometimes had to be converted to byte arrays, sometimes not (this is with 0.4).  0.5 and 0.6 will require changes to all that work, I'm sure.  These issues are much less painful with HTTP+JSON and are specific to the *binary* Thrift protocol, not to Thrift itself.

Today's NoSQL data stores are a diverse bunch, but at least CouchDB and Amazon's SimpleDB use an HTTP transport and JSON/XML data encodings.  It works well for them.  I think this is a better analogy than PostgreSQL or MySQL, which are RDBMS's with a common SQL interface language.  Yes, they provide a binary interface, but through it you can talk to them in SQL for most tasks.
  
> Pluggable API with a simple HTTP+JSON daemon
> --------------------------------------------
>
>                 Key: CASSANDRA-754
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-754
>             Project: Cassandra
>          Issue Type: New Feature
>          Components: Core
>            Reporter: Ted Zlatanov
>            Assignee: Ted Zlatanov
>            Priority: Minor
>         Attachments: 0001-renamed-API-classes.patch, 0002-renamed-Avro-API-classes.patch, 0003-renamed-daemon-classes.patch, 0004-API-top-level-support.patch, 0005-adjust-references-to-point-to-new-API-classes.patch, 0006-adjust-Hadoop-and-tests.patch, v2-0001-CASSANDRA-754-use-less-specific-descriptors-for-Thrift.txt, v2-0002-start-avro-daemon-using-a-arg-to-startup-script.txt
>
>
> Proposal of a simple pluggable API interface with a HTTP daemon implementation

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Commented: (CASSANDRA-754) Pluggable API with a simple HTTP+JSON daemon

Posted by "Gary Dusbabek (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/CASSANDRA-754?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12830121#action_12830121 ] 

Gary Dusbabek commented on CASSANDRA-754:
-----------------------------------------

Getting closer.  CD.setupStatic() is getting called multiple times (once per API).  It should be called once (probably from CD.main) before the API setup methods are called.

As far as the xml goes, I prefer using attributes where possible in favor of elements that have neither attributes no child elements.  But purely a matter of taste.

> Pluggable API with a simple HTTP+JSON daemon
> --------------------------------------------
>
>                 Key: CASSANDRA-754
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-754
>             Project: Cassandra
>          Issue Type: New Feature
>          Components: Core
>            Reporter: Ted Zlatanov
>            Priority: Minor
>         Attachments: 001-CASSANDRA-754-api-reorg.patch, 001-CASSANDRA-754-api-reorg.patch, 002-CASSANDRA-754-thriftdaemon.patch, 002-CASSANDRA-754-thriftdaemon.patch, 003-CASSANDRA-754-configapi.patch, 003-CASSANDRA-754-configapi.patch, 004-CASSANDRA-754-onedaemon.patch, 005-CASSANDRA-754-avroconfig.patch
>
>
> Proposal of a simple pluggable API interface with a HTTP daemon implementation

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Commented: (CASSANDRA-754) Pluggable API with a simple HTTP+JSON daemon

Posted by "Ted Zlatanov (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/CASSANDRA-754?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12829300#action_12829300 ] 

Ted Zlatanov commented on CASSANDRA-754:
----------------------------------------

OK, take a look at these patches that change much of how Cassandra starts up.  I think I refactored in the right place.  I didn't touch the avro stuff but changing it to implement IPluggableAPI shouldn't be hard.  The configuration is backwards compatible.

Once this is ironed out I can add the HTTP server API.

I should have broken this out into a new issue but didn't realize it when I started working on it.  Sorry.  I can do it if it's necessary.

> Pluggable API with a simple HTTP+JSON daemon
> --------------------------------------------
>
>                 Key: CASSANDRA-754
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-754
>             Project: Cassandra
>          Issue Type: New Feature
>          Components: Core
>            Reporter: Ted Zlatanov
>            Priority: Minor
>         Attachments: 001-CASSANDRA-754-api-reorg.patch, 002-CASSANDRA-754-thriftdaemon.patch, 003-CASSANDRA-754-configapi.patch
>
>
> Proposal of a simple pluggable API interface with a HTTP daemon implementation

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Updated: (CASSANDRA-754) Pluggable API with a simple HTTP+JSON daemon

Posted by "Ted Zlatanov (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/CASSANDRA-754?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Ted Zlatanov updated CASSANDRA-754:
-----------------------------------

    Attachment: 001-CASSANDRA-754-http.patch

Rebased with avro changes.

> Pluggable API with a simple HTTP+JSON daemon
> --------------------------------------------
>
>                 Key: CASSANDRA-754
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-754
>             Project: Cassandra
>          Issue Type: New Feature
>          Components: Core
>            Reporter: Ted Zlatanov
>            Priority: Minor
>         Attachments: 001-CASSANDRA-754-http.patch
>
>
> Proposal of a simple pluggable API interface with a HTTP daemon implementation

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Updated: (CASSANDRA-754) Pluggable API with a simple HTTP+JSON daemon

Posted by "Ted Zlatanov (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/CASSANDRA-754?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Ted Zlatanov updated CASSANDRA-754:
-----------------------------------

    Attachment:     (was: 006-CASSANDRA-754-daemonproperties.patch)

> Pluggable API with a simple HTTP+JSON daemon
> --------------------------------------------
>
>                 Key: CASSANDRA-754
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-754
>             Project: Cassandra
>          Issue Type: New Feature
>          Components: Core
>            Reporter: Ted Zlatanov
>            Assignee: Ted Zlatanov
>            Priority: Minor
>         Attachments: 0001-renamed-API-classes.patch, 0002-renamed-Avro-API-classes.patch, 0003-renamed-daemon-classes.patch, 0004-API-top-level-support.patch, 0005-adjust-references-to-point-to-new-API-classes.patch, 0006-adjust-Hadoop-and-tests.patch, 001-CASSANDRA-754-api-reorg.patch, 002-CASSANDRA-754-thriftdaemon.patch, 003-CASSANDRA-754-configapi.patch, 102-CASSANDRA-754-hadoopfixes.patch
>
>
> Proposal of a simple pluggable API interface with a HTTP daemon implementation

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Commented: (CASSANDRA-754) Pluggable API with a simple HTTP+JSON daemon

Posted by "Gary Dusbabek (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/CASSANDRA-754?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12830177#action_12830177 ] 

Gary Dusbabek commented on CASSANDRA-754:
-----------------------------------------

I think the way you're parsing and validating the API properties could be simplified.  First approach is to punt on validation until setup is called.  Or if you think validation is best performed in DD, have a static validate() method in each impl class that is called reflectively.  The upshot is that you can get away with using a Map<String, String> and get rid of all the *Property related methods.  As it stands now, if new property types come along, DD and IPluggableAPI will need to be modified to handle them.

> Pluggable API with a simple HTTP+JSON daemon
> --------------------------------------------
>
>                 Key: CASSANDRA-754
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-754
>             Project: Cassandra
>          Issue Type: New Feature
>          Components: Core
>            Reporter: Ted Zlatanov
>            Priority: Minor
>         Attachments: 001-CASSANDRA-754-api-reorg.patch, 001-CASSANDRA-754-api-reorg.patch, 002-CASSANDRA-754-thriftdaemon.patch, 002-CASSANDRA-754-thriftdaemon.patch, 003-CASSANDRA-754-configapi.patch, 003-CASSANDRA-754-configapi.patch, 004-CASSANDRA-754-onedaemon.patch, 005-CASSANDRA-754-avroconfig.patch, 006-CASSANDRA-754-daemonproperties.patch, 006-CASSANDRA-754-daemonproperties.patch
>
>
> Proposal of a simple pluggable API interface with a HTTP daemon implementation

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Commented: (CASSANDRA-754) Pluggable API with a simple HTTP+JSON daemon

Posted by "Gary Dusbabek (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/CASSANDRA-754?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12833170#action_12833170 ] 

Gary Dusbabek commented on CASSANDRA-754:
-----------------------------------------

Thanks Ted.  bin/cassandra needs to be tweaked to supply the right class name, but that is trivial.  Also, I don't see the point of allowing more than one api instance to be active per VM.

It seems that we skipped the "is this right for cassandra" discussion, and I'm worried you might be addressing a non-problem.  Can you explain what you're attempting to address here, and how it benefits?

The only reason I can see moving forward with this is if we're *really* serious about giving other transport and RPC mechanisms the same first-class treatment as thrift.  If we are, there is a lot more work to get done before the work done in this patch.

> Pluggable API with a simple HTTP+JSON daemon
> --------------------------------------------
>
>                 Key: CASSANDRA-754
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-754
>             Project: Cassandra
>          Issue Type: New Feature
>          Components: Core
>            Reporter: Ted Zlatanov
>            Priority: Minor
>         Attachments: 001-CASSANDRA-754-api-reorg.patch, 001-CASSANDRA-754-api-reorg.patch, 002-CASSANDRA-754-thriftdaemon.patch, 002-CASSANDRA-754-thriftdaemon.patch, 003-CASSANDRA-754-configapi.patch, 003-CASSANDRA-754-configapi.patch, 004-CASSANDRA-754-onedaemon.patch, 005-CASSANDRA-754-avroconfig.patch, 006-CASSANDRA-754-daemonproperties.patch, 006-CASSANDRA-754-daemonproperties.patch, 007-CASSANDRA-754-stringproperties.patch, 100-CASSANDRA-754-rebased-api-reorg.patch
>
>
> Proposal of a simple pluggable API interface with a HTTP daemon implementation

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Updated: (CASSANDRA-754) Pluggable API with a simple HTTP+JSON daemon

Posted by "Ted Zlatanov (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/CASSANDRA-754?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Ted Zlatanov updated CASSANDRA-754:
-----------------------------------

    Attachment: 001-CASSANDRA-754-api-reorg.patch

found small bug (package name was incorrect on some files in the patch)

> Pluggable API with a simple HTTP+JSON daemon
> --------------------------------------------
>
>                 Key: CASSANDRA-754
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-754
>             Project: Cassandra
>          Issue Type: New Feature
>          Components: Core
>            Reporter: Ted Zlatanov
>            Priority: Minor
>         Attachments: 001-CASSANDRA-754-api-reorg.patch, 002-CASSANDRA-754-thriftdaemon.patch, 003-CASSANDRA-754-configapi.patch
>
>
> Proposal of a simple pluggable API interface with a HTTP daemon implementation

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Commented: (CASSANDRA-754) Pluggable API with a simple HTTP+JSON daemon

Posted by "Ted Zlatanov (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/CASSANDRA-754?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12835380#action_12835380 ] 

Ted Zlatanov commented on CASSANDRA-754:
----------------------------------------

v2: -a/-t plus RPC* options works for me.

The Thrift HTTP+JSON server is an interesting possibility here, it could coexist with the regular Thrift service and still serve the same API.

> Pluggable API with a simple HTTP+JSON daemon
> --------------------------------------------
>
>                 Key: CASSANDRA-754
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-754
>             Project: Cassandra
>          Issue Type: New Feature
>          Components: Core
>            Reporter: Ted Zlatanov
>            Assignee: Ted Zlatanov
>            Priority: Minor
>         Attachments: 0001-renamed-API-classes.patch, 0002-renamed-Avro-API-classes.patch, 0003-renamed-daemon-classes.patch, 0004-API-top-level-support.patch, 0005-adjust-references-to-point-to-new-API-classes.patch, 0006-adjust-Hadoop-and-tests.patch, v2-0001-CASSANDRA-754-use-less-specific-descriptors-for-Thrift.txt, v2-0002-start-avro-daemon-using-a-arg-to-startup-script.txt
>
>
> Proposal of a simple pluggable API interface with a HTTP daemon implementation

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Commented: (CASSANDRA-754) Pluggable API with a simple HTTP+JSON daemon

Posted by "Gary Dusbabek (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/CASSANDRA-754?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12830134#action_12830134 ] 

Gary Dusbabek commented on CASSANDRA-754:
-----------------------------------------

006 didn't apply for me.  Timestamps indicate the other patches didn't change (correct?).  It bailed on AvroDaemon.

> Pluggable API with a simple HTTP+JSON daemon
> --------------------------------------------
>
>                 Key: CASSANDRA-754
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-754
>             Project: Cassandra
>          Issue Type: New Feature
>          Components: Core
>            Reporter: Ted Zlatanov
>            Priority: Minor
>         Attachments: 001-CASSANDRA-754-api-reorg.patch, 001-CASSANDRA-754-api-reorg.patch, 002-CASSANDRA-754-thriftdaemon.patch, 002-CASSANDRA-754-thriftdaemon.patch, 003-CASSANDRA-754-configapi.patch, 003-CASSANDRA-754-configapi.patch, 004-CASSANDRA-754-onedaemon.patch, 005-CASSANDRA-754-avroconfig.patch, 006-CASSANDRA-754-daemonproperties.patch
>
>
> Proposal of a simple pluggable API interface with a HTTP daemon implementation

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Commented: (CASSANDRA-754) Pluggable API with a simple HTTP+JSON daemon

Posted by "T Jake Luciani (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/CASSANDRA-754?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12835556#action_12835556 ] 

T Jake Luciani commented on CASSANDRA-754:
------------------------------------------

Yes,  recently added JS bindings to thrift.  Also working on a httpproxy to convert from JSONProtocol <-> BinaryProtocol that could sit in front of the service.  

> Pluggable API with a simple HTTP+JSON daemon
> --------------------------------------------
>
>                 Key: CASSANDRA-754
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-754
>             Project: Cassandra
>          Issue Type: New Feature
>          Components: Core
>            Reporter: Ted Zlatanov
>            Assignee: Ted Zlatanov
>            Priority: Minor
>         Attachments: 0001-renamed-API-classes.patch, 0002-renamed-Avro-API-classes.patch, 0003-renamed-daemon-classes.patch, 0004-API-top-level-support.patch, 0005-adjust-references-to-point-to-new-API-classes.patch, 0006-adjust-Hadoop-and-tests.patch, v2-0001-CASSANDRA-754-use-less-specific-descriptors-for-Thrift.txt, v2-0002-start-avro-daemon-using-a-arg-to-startup-script.txt
>
>
> Proposal of a simple pluggable API interface with a HTTP daemon implementation

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Updated: (CASSANDRA-754) Pluggable API with a simple HTTP+JSON daemon

Posted by "Ted Zlatanov (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/CASSANDRA-754?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Ted Zlatanov updated CASSANDRA-754:
-----------------------------------

    Attachment: 007-CASSANDRA-754-stringproperties.patch

Change Property enum to just a string everywhere.  Create new ValidatingParser class (maybe it should go under o.a.c.config) and a ConfigurationException because the one in DD is private.

Adjust DD to just return the value it finds, so every IPluggableAPI can do its own parsing and validation.  Currently this is all delegated to ValidatingParser, except for default values which depend on the API.

The config file docs were improved a little as well.

> Pluggable API with a simple HTTP+JSON daemon
> --------------------------------------------
>
>                 Key: CASSANDRA-754
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-754
>             Project: Cassandra
>          Issue Type: New Feature
>          Components: Core
>            Reporter: Ted Zlatanov
>            Priority: Minor
>         Attachments: 001-CASSANDRA-754-api-reorg.patch, 001-CASSANDRA-754-api-reorg.patch, 002-CASSANDRA-754-thriftdaemon.patch, 002-CASSANDRA-754-thriftdaemon.patch, 003-CASSANDRA-754-configapi.patch, 003-CASSANDRA-754-configapi.patch, 004-CASSANDRA-754-onedaemon.patch, 005-CASSANDRA-754-avroconfig.patch, 006-CASSANDRA-754-daemonproperties.patch, 006-CASSANDRA-754-daemonproperties.patch, 007-CASSANDRA-754-stringproperties.patch
>
>
> Proposal of a simple pluggable API interface with a HTTP daemon implementation

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Updated: (CASSANDRA-754) Pluggable API with a simple HTTP+JSON daemon

Posted by "Ted Zlatanov (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/CASSANDRA-754?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Ted Zlatanov updated CASSANDRA-754:
-----------------------------------

    Attachment: 006-CASSANDRA-754-daemonproperties.patch

Redid 006 to include running CD.setupStatic() only once.

> Pluggable API with a simple HTTP+JSON daemon
> --------------------------------------------
>
>                 Key: CASSANDRA-754
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-754
>             Project: Cassandra
>          Issue Type: New Feature
>          Components: Core
>            Reporter: Ted Zlatanov
>            Priority: Minor
>         Attachments: 001-CASSANDRA-754-api-reorg.patch, 001-CASSANDRA-754-api-reorg.patch, 002-CASSANDRA-754-thriftdaemon.patch, 002-CASSANDRA-754-thriftdaemon.patch, 003-CASSANDRA-754-configapi.patch, 003-CASSANDRA-754-configapi.patch, 004-CASSANDRA-754-onedaemon.patch, 005-CASSANDRA-754-avroconfig.patch, 006-CASSANDRA-754-daemonproperties.patch
>
>
> Proposal of a simple pluggable API interface with a HTTP daemon implementation

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Commented: (CASSANDRA-754) Pluggable API with a simple HTTP+JSON daemon

Posted by "Eric Evans (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/CASSANDRA-754?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12833923#action_12833923 ] 

Eric Evans commented on CASSANDRA-754:
--------------------------------------

> Thrift already has a http transport and a json protocol, fwiw.

And so does Avro, again, fwiw.

> Pluggable API with a simple HTTP+JSON daemon
> --------------------------------------------
>
>                 Key: CASSANDRA-754
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-754
>             Project: Cassandra
>          Issue Type: New Feature
>          Components: Core
>            Reporter: Ted Zlatanov
>            Priority: Minor
>         Attachments: 001-CASSANDRA-754-api-reorg.patch, 001-CASSANDRA-754-api-reorg.patch, 002-CASSANDRA-754-thriftdaemon.patch, 002-CASSANDRA-754-thriftdaemon.patch, 003-CASSANDRA-754-configapi.patch, 003-CASSANDRA-754-configapi.patch, 004-CASSANDRA-754-onedaemon.patch, 005-CASSANDRA-754-avroconfig.patch, 006-CASSANDRA-754-daemonproperties.patch, 006-CASSANDRA-754-daemonproperties.patch, 007-CASSANDRA-754-stringproperties.patch, 100-CASSANDRA-754-rebased-api-reorg.patch, 101-CASSANDRA-754-binclass.patch
>
>
> Proposal of a simple pluggable API interface with a HTTP daemon implementation

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Updated: (CASSANDRA-754) Pluggable API with a simple HTTP+JSON daemon

Posted by "Eric Evans (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/CASSANDRA-754?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Eric Evans updated CASSANDRA-754:
---------------------------------

    Attachment: v2-0002-start-avro-daemon-using-a-arg-to-startup-script.txt
                v2-0001-CASSANDRA-754-use-less-specific-descriptors-for-Thrift.txt

> Pluggable API with a simple HTTP+JSON daemon
> --------------------------------------------
>
>                 Key: CASSANDRA-754
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-754
>             Project: Cassandra
>          Issue Type: New Feature
>          Components: Core
>            Reporter: Ted Zlatanov
>            Assignee: Ted Zlatanov
>            Priority: Minor
>         Attachments: 0001-renamed-API-classes.patch, 0002-renamed-Avro-API-classes.patch, 0003-renamed-daemon-classes.patch, 0004-API-top-level-support.patch, 0005-adjust-references-to-point-to-new-API-classes.patch, 0006-adjust-Hadoop-and-tests.patch, v2-0001-CASSANDRA-754-use-less-specific-descriptors-for-Thrift.txt, v2-0002-start-avro-daemon-using-a-arg-to-startup-script.txt
>
>
> Proposal of a simple pluggable API interface with a HTTP daemon implementation

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Updated: (CASSANDRA-754) Pluggable API with a simple HTTP+JSON daemon

Posted by "Ted Zlatanov (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/CASSANDRA-754?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Ted Zlatanov updated CASSANDRA-754:
-----------------------------------

    Attachment:     (was: 100-CASSANDRA-754-rebased-api-reorg.patch)

> Pluggable API with a simple HTTP+JSON daemon
> --------------------------------------------
>
>                 Key: CASSANDRA-754
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-754
>             Project: Cassandra
>          Issue Type: New Feature
>          Components: Core
>            Reporter: Ted Zlatanov
>            Assignee: Ted Zlatanov
>            Priority: Minor
>         Attachments: 0001-renamed-API-classes.patch, 0002-renamed-Avro-API-classes.patch, 0003-renamed-daemon-classes.patch, 0004-API-top-level-support.patch, 0005-adjust-references-to-point-to-new-API-classes.patch, 0006-adjust-Hadoop-and-tests.patch, 001-CASSANDRA-754-api-reorg.patch, 002-CASSANDRA-754-thriftdaemon.patch, 003-CASSANDRA-754-configapi.patch, 102-CASSANDRA-754-hadoopfixes.patch
>
>
> Proposal of a simple pluggable API interface with a HTTP daemon implementation

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Updated: (CASSANDRA-754) Pluggable API with a simple HTTP+JSON daemon

Posted by "Ted Zlatanov (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/CASSANDRA-754?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Ted Zlatanov updated CASSANDRA-754:
-----------------------------------

    Attachment: 101-CASSANDRA-754-binclass.patch

adjust startup class in bin/cassandra to o.a.c.api.CassandraDaemon

> Pluggable API with a simple HTTP+JSON daemon
> --------------------------------------------
>
>                 Key: CASSANDRA-754
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-754
>             Project: Cassandra
>          Issue Type: New Feature
>          Components: Core
>            Reporter: Ted Zlatanov
>            Priority: Minor
>         Attachments: 001-CASSANDRA-754-api-reorg.patch, 001-CASSANDRA-754-api-reorg.patch, 002-CASSANDRA-754-thriftdaemon.patch, 002-CASSANDRA-754-thriftdaemon.patch, 003-CASSANDRA-754-configapi.patch, 003-CASSANDRA-754-configapi.patch, 004-CASSANDRA-754-onedaemon.patch, 005-CASSANDRA-754-avroconfig.patch, 006-CASSANDRA-754-daemonproperties.patch, 006-CASSANDRA-754-daemonproperties.patch, 007-CASSANDRA-754-stringproperties.patch, 100-CASSANDRA-754-rebased-api-reorg.patch, 101-CASSANDRA-754-binclass.patch
>
>
> Proposal of a simple pluggable API interface with a HTTP daemon implementation

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Updated: (CASSANDRA-754) Pluggable API with a simple HTTP+JSON daemon

Posted by "Ted Zlatanov (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/CASSANDRA-754?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Ted Zlatanov updated CASSANDRA-754:
-----------------------------------

    Attachment: 002-CASSANDRA-754-thriftdaemon.patch

uploaded new one to fix the patch file name, contents are the same

> Pluggable API with a simple HTTP+JSON daemon
> --------------------------------------------
>
>                 Key: CASSANDRA-754
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-754
>             Project: Cassandra
>          Issue Type: New Feature
>          Components: Core
>            Reporter: Ted Zlatanov
>            Priority: Minor
>         Attachments: 001-CASSANDRA-754-api-reorg.patch, 002-CASSANDRA-754-thriftdaemon.patch, 003-CASSANDRA-754-configapi.patch
>
>
> Proposal of a simple pluggable API interface with a HTTP daemon implementation

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Updated: (CASSANDRA-754) Pluggable API with a simple HTTP+JSON daemon

Posted by "Ted Zlatanov (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/CASSANDRA-754?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Ted Zlatanov updated CASSANDRA-754:
-----------------------------------

    Attachment:     (was: 001-CASSANDRA-754-api-reorg.patch)

> Pluggable API with a simple HTTP+JSON daemon
> --------------------------------------------
>
>                 Key: CASSANDRA-754
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-754
>             Project: Cassandra
>          Issue Type: New Feature
>          Components: Core
>            Reporter: Ted Zlatanov
>            Assignee: Ted Zlatanov
>            Priority: Minor
>         Attachments: 0001-renamed-API-classes.patch, 0002-renamed-Avro-API-classes.patch, 0003-renamed-daemon-classes.patch, 0004-API-top-level-support.patch, 0005-adjust-references-to-point-to-new-API-classes.patch, 0006-adjust-Hadoop-and-tests.patch, 001-CASSANDRA-754-api-reorg.patch, 002-CASSANDRA-754-thriftdaemon.patch, 003-CASSANDRA-754-configapi.patch, 102-CASSANDRA-754-hadoopfixes.patch
>
>
> Proposal of a simple pluggable API interface with a HTTP daemon implementation

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Commented: (CASSANDRA-754) Pluggable API with a simple HTTP+JSON daemon

Posted by "Jonathan Ellis (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/CASSANDRA-754?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12833894#action_12833894 ] 

Jonathan Ellis commented on CASSANDRA-754:
------------------------------------------

Thrift already has a http transport and a json protocol, fwiw.

> Pluggable API with a simple HTTP+JSON daemon
> --------------------------------------------
>
>                 Key: CASSANDRA-754
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-754
>             Project: Cassandra
>          Issue Type: New Feature
>          Components: Core
>            Reporter: Ted Zlatanov
>            Priority: Minor
>         Attachments: 001-CASSANDRA-754-api-reorg.patch, 001-CASSANDRA-754-api-reorg.patch, 002-CASSANDRA-754-thriftdaemon.patch, 002-CASSANDRA-754-thriftdaemon.patch, 003-CASSANDRA-754-configapi.patch, 003-CASSANDRA-754-configapi.patch, 004-CASSANDRA-754-onedaemon.patch, 005-CASSANDRA-754-avroconfig.patch, 006-CASSANDRA-754-daemonproperties.patch, 006-CASSANDRA-754-daemonproperties.patch, 007-CASSANDRA-754-stringproperties.patch, 100-CASSANDRA-754-rebased-api-reorg.patch, 101-CASSANDRA-754-binclass.patch
>
>
> Proposal of a simple pluggable API interface with a HTTP daemon implementation

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Commented: (CASSANDRA-754) Pluggable API with a simple HTTP+JSON daemon

Posted by "Ted Zlatanov (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/CASSANDRA-754?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12833953#action_12833953 ] 

Ted Zlatanov commented on CASSANDRA-754:
----------------------------------------

Eric: 100+101 are sufficient and applied to trunk last week.  I can rebase again if necessary, but they touch lots of common code so rebasing is a pain.  70% is just moving code around unfortunately, hence the size.  Probably the last time I use quilt to manage patches like this.  Sorry for the inconvenience.

I couldn't find anything on the Thrift site about the HTTP+JSON server, but their docs in general are pretty sparse.  I see a SVN commit 2 days ago (!) that adds the lib/js stuff but the patch has apparently been brewing since last August (in THRIFT-550).  I don't see anything crazy about the implementation, it could be usable.

As for the Thrift problems I am aware of, besides CASSANDRA-475 which could be remedied with the HTTP server, Thrift also doesn't allow overloaded service methods, leading to the ColumnOrSuperColumn ugliness.

I'll make the changes Gary Dusbabek suggested about the configuration and ValidatingParser.  Even if multiple APIs are not supported, I think it's worthwhile to decouple the API layer from the internals, which 100+101 have started to do.

I'm 100% in favor of using Avro or the Thrift HTTP+JSON interface rather than writing my own implementation; when I created this ticket neither was available.  As I said, I'll take direction and implement whatever is the consensus.  Thank you for looking at this.


> Pluggable API with a simple HTTP+JSON daemon
> --------------------------------------------
>
>                 Key: CASSANDRA-754
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-754
>             Project: Cassandra
>          Issue Type: New Feature
>          Components: Core
>            Reporter: Ted Zlatanov
>            Assignee: Ted Zlatanov
>            Priority: Minor
>         Attachments: 001-CASSANDRA-754-api-reorg.patch, 001-CASSANDRA-754-api-reorg.patch, 002-CASSANDRA-754-thriftdaemon.patch, 002-CASSANDRA-754-thriftdaemon.patch, 003-CASSANDRA-754-configapi.patch, 003-CASSANDRA-754-configapi.patch, 004-CASSANDRA-754-onedaemon.patch, 005-CASSANDRA-754-avroconfig.patch, 006-CASSANDRA-754-daemonproperties.patch, 006-CASSANDRA-754-daemonproperties.patch, 007-CASSANDRA-754-stringproperties.patch, 100-CASSANDRA-754-rebased-api-reorg.patch, 101-CASSANDRA-754-binclass.patch
>
>
> Proposal of a simple pluggable API interface with a HTTP daemon implementation

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Commented: (CASSANDRA-754) Pluggable API with a simple HTTP+JSON daemon

Posted by "Gary Dusbabek (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/CASSANDRA-754?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12829791#action_12829791 ] 

Gary Dusbabek commented on CASSANDRA-754:
-----------------------------------------

Much of what is going on in the setup methods should [definitely] only happen once.  I'm mainly referring to invoking the singletons.  Those calls should  happen in CD.main() or some other [to be created] static method.  (Think about it: what is the point of invoking the RecoverManager or initting StorageService multiple times.)

Separating the ports is not addressed.  E.g.: thrift and avro cannot share a common listening port.

> Pluggable API with a simple HTTP+JSON daemon
> --------------------------------------------
>
>                 Key: CASSANDRA-754
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-754
>             Project: Cassandra
>          Issue Type: New Feature
>          Components: Core
>            Reporter: Ted Zlatanov
>            Priority: Minor
>         Attachments: 001-CASSANDRA-754-api-reorg.patch, 001-CASSANDRA-754-api-reorg.patch, 002-CASSANDRA-754-thriftdaemon.patch, 002-CASSANDRA-754-thriftdaemon.patch, 003-CASSANDRA-754-configapi.patch, 003-CASSANDRA-754-configapi.patch, 004-CASSANDRA-754-onedaemon.patch
>
>
> Proposal of a simple pluggable API interface with a HTTP daemon implementation

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Updated: (CASSANDRA-754) Pluggable API with a simple HTTP+JSON daemon

Posted by "Ted Zlatanov (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/CASSANDRA-754?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Ted Zlatanov updated CASSANDRA-754:
-----------------------------------

    Attachment:     (was: 006-CASSANDRA-754-daemonproperties.patch)

> Pluggable API with a simple HTTP+JSON daemon
> --------------------------------------------
>
>                 Key: CASSANDRA-754
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-754
>             Project: Cassandra
>          Issue Type: New Feature
>          Components: Core
>            Reporter: Ted Zlatanov
>            Assignee: Ted Zlatanov
>            Priority: Minor
>         Attachments: 0001-renamed-API-classes.patch, 0002-renamed-Avro-API-classes.patch, 0003-renamed-daemon-classes.patch, 0004-API-top-level-support.patch, 0005-adjust-references-to-point-to-new-API-classes.patch, 0006-adjust-Hadoop-and-tests.patch, 001-CASSANDRA-754-api-reorg.patch, 002-CASSANDRA-754-thriftdaemon.patch, 003-CASSANDRA-754-configapi.patch, 102-CASSANDRA-754-hadoopfixes.patch
>
>
> Proposal of a simple pluggable API interface with a HTTP daemon implementation

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Updated: (CASSANDRA-754) Pluggable API with a simple HTTP+JSON daemon

Posted by "Ted Zlatanov (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/CASSANDRA-754?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Ted Zlatanov updated CASSANDRA-754:
-----------------------------------

    Attachment: 002-CASSANDRA-745-thriftdaemon.patch

This patch adds IPluggableAPI, renames o.a.c.api.thrift.CassandraDaemon to ThriftDaemon, and creates o.a.c.api.CassandraDaemon which currently is hard-coded to launch the Thrift daemon.

bin/cassandra is modified to run o.a.c.api.CassandraDaemon

The net result is that everything works just like it does before the patch.  The next patch will change the configuration to specify which daemon(s) to start.

> Pluggable API with a simple HTTP+JSON daemon
> --------------------------------------------
>
>                 Key: CASSANDRA-754
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-754
>             Project: Cassandra
>          Issue Type: New Feature
>          Components: Core
>            Reporter: Ted Zlatanov
>            Priority: Minor
>         Attachments: 001-CASSANDRA-754-api-reorg.patch, 002-CASSANDRA-745-thriftdaemon.patch
>
>
> Proposal of a simple pluggable API interface with a HTTP daemon implementation

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Resolved: (CASSANDRA-754) Pluggable API with a simple HTTP+JSON daemon

Posted by "Eric Evans (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/CASSANDRA-754?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Eric Evans resolved CASSANDRA-754.
----------------------------------

    Resolution: Won't Fix

> Pluggable API with a simple HTTP+JSON daemon
> --------------------------------------------
>
>                 Key: CASSANDRA-754
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-754
>             Project: Cassandra
>          Issue Type: New Feature
>          Components: Core
>            Reporter: Ted Zlatanov
>            Assignee: Ted Zlatanov
>            Priority: Minor
>         Attachments: 0001-renamed-API-classes.patch, 0002-renamed-Avro-API-classes.patch, 0003-renamed-daemon-classes.patch, 0004-API-top-level-support.patch, 0005-adjust-references-to-point-to-new-API-classes.patch, 0006-adjust-Hadoop-and-tests.patch, v2-0001-CASSANDRA-754-use-less-specific-descriptors-for-Thrift.txt, v2-0002-start-avro-daemon-using-a-arg-to-startup-script.txt
>
>
> Proposal of a simple pluggable API interface with a HTTP daemon implementation

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Updated: (CASSANDRA-754) Pluggable API with a simple HTTP+JSON daemon

Posted by "Ted Zlatanov (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/CASSANDRA-754?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Ted Zlatanov updated CASSANDRA-754:
-----------------------------------

    Attachment:     (was: 006-CASSANDRA-754-daemonproperties.patch)

> Pluggable API with a simple HTTP+JSON daemon
> --------------------------------------------
>
>                 Key: CASSANDRA-754
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-754
>             Project: Cassandra
>          Issue Type: New Feature
>          Components: Core
>            Reporter: Ted Zlatanov
>            Priority: Minor
>         Attachments: 001-CASSANDRA-754-api-reorg.patch, 001-CASSANDRA-754-api-reorg.patch, 002-CASSANDRA-754-thriftdaemon.patch, 002-CASSANDRA-754-thriftdaemon.patch, 003-CASSANDRA-754-configapi.patch, 003-CASSANDRA-754-configapi.patch, 004-CASSANDRA-754-onedaemon.patch, 005-CASSANDRA-754-avroconfig.patch, 006-CASSANDRA-754-daemonproperties.patch
>
>
> Proposal of a simple pluggable API interface with a HTTP daemon implementation

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Commented: (CASSANDRA-754) Pluggable API with a simple HTTP+JSON daemon

Posted by "Stu Hood (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/CASSANDRA-754?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12833176#action_12833176 ] 

Stu Hood commented on CASSANDRA-754:
------------------------------------

At the very least, we already have Avro merged, and it should be a first class citizen, so this work is definitely worthwhile imo.

> Pluggable API with a simple HTTP+JSON daemon
> --------------------------------------------
>
>                 Key: CASSANDRA-754
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-754
>             Project: Cassandra
>          Issue Type: New Feature
>          Components: Core
>            Reporter: Ted Zlatanov
>            Priority: Minor
>         Attachments: 001-CASSANDRA-754-api-reorg.patch, 001-CASSANDRA-754-api-reorg.patch, 002-CASSANDRA-754-thriftdaemon.patch, 002-CASSANDRA-754-thriftdaemon.patch, 003-CASSANDRA-754-configapi.patch, 003-CASSANDRA-754-configapi.patch, 004-CASSANDRA-754-onedaemon.patch, 005-CASSANDRA-754-avroconfig.patch, 006-CASSANDRA-754-daemonproperties.patch, 006-CASSANDRA-754-daemonproperties.patch, 007-CASSANDRA-754-stringproperties.patch, 100-CASSANDRA-754-rebased-api-reorg.patch
>
>
> Proposal of a simple pluggable API interface with a HTTP daemon implementation

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Assigned: (CASSANDRA-754) Pluggable API with a simple HTTP+JSON daemon

Posted by "Jonathan Ellis (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/CASSANDRA-754?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Jonathan Ellis reassigned CASSANDRA-754:
----------------------------------------

    Assignee: Ted Zlatanov

> Pluggable API with a simple HTTP+JSON daemon
> --------------------------------------------
>
>                 Key: CASSANDRA-754
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-754
>             Project: Cassandra
>          Issue Type: New Feature
>          Components: Core
>            Reporter: Ted Zlatanov
>            Assignee: Ted Zlatanov
>            Priority: Minor
>         Attachments: 001-CASSANDRA-754-api-reorg.patch, 001-CASSANDRA-754-api-reorg.patch, 002-CASSANDRA-754-thriftdaemon.patch, 002-CASSANDRA-754-thriftdaemon.patch, 003-CASSANDRA-754-configapi.patch, 003-CASSANDRA-754-configapi.patch, 004-CASSANDRA-754-onedaemon.patch, 005-CASSANDRA-754-avroconfig.patch, 006-CASSANDRA-754-daemonproperties.patch, 006-CASSANDRA-754-daemonproperties.patch, 007-CASSANDRA-754-stringproperties.patch, 100-CASSANDRA-754-rebased-api-reorg.patch, 101-CASSANDRA-754-binclass.patch
>
>
> Proposal of a simple pluggable API interface with a HTTP daemon implementation

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.