Hi Aaron,

Thank a lot for your help.

I have still some questions to get clarified.. The issue happens in the
following scenario.

1) Call add keyspace from a client API -The keyspace given by the client is
modified and used for further operations.
   e.g  Client's keysace = 'foo' and the his domain name = 'bar.com'  =>
modified keyspace = 'bar.com_foo'
2) Call add column family from a a client API
   Client's keyspace = 'foo' ...now prior to calling 'login', 'set_keyspace'
is called. Within that method, the following method is called. This throws
an error because the keyspace Cassadara kept is   'bar.com_foo' not 'foo'

   public static void validateTable(String tablename) throws
KeyspaceNotDefinedException
    {
        if (!DatabaseDescriptor.getTables().contains(tablename))
        {
            throw new KeyspaceNotDefinedException("Keyspace " + tablename +
" does not exist");
        }
    }

Thanks,

Indika


On Mon, Jan 31, 2011 at 1:58 AM, Aaron Morton <aa...@thelastpickle.com>wrote:

> 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