AFAIK The order of calling login() and set_keyspace() is not important. 

set_keyspace() just stores the keyspace in the ClientState on the connection thread, and  login authenticates the user name and password and stores them in the ClientState. Functions on CassandraServer that require authorisation call functions such as ClientState.hasColumnFamilyAccess() where things are checked.

If you wanted to set the keyspace based on the login, you could do it in the login() function on the ClientState. Then your client would not need to call set_keyspace() . The keyspace has to exist though, it's used it lots of places to identify the CF

Hope that helps.
Aaron


On 31 Jan, 2011,at 07:18 AM, indika kumara <indika.k...@gmail.com> wrote:

This issue came when I was trying to implement an idea listed at [http://wiki.apache.org/cassandra/MultiTenant] – Namespaces. I thought the namespace can be the tenant’s domain name provided though username (e.g. f...@bar.com) or can be returned through authentication backend on login. For both cases, calling ‘login’ prior to ‘set_keyspace’ is required.

The ‘CassandraServer.java’’s ‘set_keyspace()’ checks the availability of a given keyspace. Here, prior to pass the keyspace, it has to be modified.  Any solutions? I would like to create a JIRA for the idea with a working patch.

Highly appreciate the suggestions for implementing the aforementioned idea listed in the wiki.

Thanks,

Indika

On Sun, Jan 30, 2011 at 10:21 PM, indika kumara <ind...@apache.org> wrote:
Hi All,

I observed the behavior indicated in the subject of this email even the ‘default User’ returned from authentication is null.  Is this correct?


Thanks,

Indika

Reply via email to